This is an automated email from the ASF dual-hosted git repository. dlych pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit c573bc835446d55afc774223998249c177ad6dca Author: Ali Alsuliman <[email protected]> AuthorDate: Sat Apr 9 02:28:34 2022 +0300 [NO ISSUE][NET] SSL Socket Fixes - user model changes: no - storage format changes: no - interface changes: no Details: - On SSL socket handshake failure, deliver any remaining data to requester. - Since SSL sockets may return 0 as read bytes due to failure to decrypt a complete encrypted block, we need to attempt to read again until a complete block is decrypted. Change-Id: I3fbbf80beb588cc3c700ff5eeb66e0d018dfacfe Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/16065 Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> --- .../java/org/apache/asterix/replication/api/PartitionReplica.java | 1 + .../apache/asterix/replication/logging/RemoteLogsNotifier.java | 2 +- .../asterix/replication/management/IndexReplicationManager.java | 3 +-- .../org/apache/asterix/replication/management/NetworkingUtil.java | 4 ++-- .../org/apache/asterix/replication/messaging/DeleteFileTask.java | 2 +- .../java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java | 8 ++++++-- .../src/main/java/org/apache/hyracks/util/NetworkUtil.java | 3 ++- 7 files changed, 14 insertions(+), 9 deletions(-) diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java index 6b97306347..db395a9d79 100644 --- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java +++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java @@ -83,6 +83,7 @@ public class PartitionReplica implements IPartitionReplica { setStatus(CATCHING_UP); appCtx.getThreadExecutor().execute(() -> { try { + Thread.currentThread().setName("Replica " + id.toString() + " Synchronizer"); new ReplicaSynchronizer(appCtx, this).sync(); setStatus(IN_SYNC); } catch (Exception e) { diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/logging/RemoteLogsNotifier.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/logging/RemoteLogsNotifier.java index 440f8efc03..58554684d2 100644 --- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/logging/RemoteLogsNotifier.java +++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/logging/RemoteLogsNotifier.java @@ -57,7 +57,7 @@ class RemoteLogsNotifier implements Runnable { @Override public void run() { final String nodeId = appCtx.getServiceContext().getNodeId(); - Thread.currentThread().setName(nodeId + RemoteLogsNotifier.class.getSimpleName()); + Thread.currentThread().setName(RemoteLogsNotifier.class.getSimpleName() + ":" + nodeId); while (!Thread.currentThread().isInterrupted()) { try { final RemoteLogRecord logRecord = remoteLogsQ.take(); diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/IndexReplicationManager.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/IndexReplicationManager.java index dd953c40a9..8f7ed56b81 100644 --- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/IndexReplicationManager.java +++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/IndexReplicationManager.java @@ -38,7 +38,6 @@ import org.apache.asterix.transaction.management.resource.PersistentLocalResourc import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.replication.IReplicationJob; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexReplicationJob; -import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -152,7 +151,7 @@ public class IndexReplicationManager { if (!replicationJobsQ.isEmpty()) { return; } - LOGGER.log(Level.INFO, "No pending replication jobs. Closing connections to replicas"); + LOGGER.trace("no pending replication jobs; closing connections to replicas"); for (ReplicationDestination dest : destinations) { dest.getReplicas().stream().map(PartitionReplica.class::cast).forEach(PartitionReplica::close); } diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/NetworkingUtil.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/NetworkingUtil.java index 7f6439ce14..712d70e8b4 100644 --- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/NetworkingUtil.java +++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/NetworkingUtil.java @@ -49,10 +49,10 @@ public class NetworkingUtil { byteBuffer.clear(); byteBuffer.limit(length); - while (byteBuffer.remaining() > 0 && socketChannel.read(byteBuffer) > 0); + while (byteBuffer.remaining() > 0 && socketChannel.read(byteBuffer) >= 0); if (byteBuffer.remaining() > 0) { - throw new EOFException(); + throw new EOFException("could not read all data from source; remaining bytes: " + byteBuffer.remaining()); } byteBuffer.flip(); diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/DeleteFileTask.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/DeleteFileTask.java index 5eef84e275..d8ad522000 100644 --- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/DeleteFileTask.java +++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/DeleteFileTask.java @@ -53,7 +53,7 @@ public class DeleteFileTask implements IReplicaTask { final File localFile = ioManager.resolve(file).getFile(); if (localFile.exists()) { Files.delete(localFile.toPath()); - LOGGER.info(() -> "Deleted file: " + localFile.getAbsolutePath()); + LOGGER.debug(() -> "Deleted file: " + localFile.getAbsolutePath()); } else { LOGGER.warn(() -> "Requested to delete a non-existing file: " + localFile.getAbsolutePath()); } diff --git a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java index f9bf5c702a..a4d1b9953a 100644 --- a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java +++ b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java @@ -127,7 +127,7 @@ public class SslSocketChannel implements ISocketChannel { break; case CLOSED: close(); - return -1; + return decryptedBytes; default: throw new IllegalStateException("Invalid SSL result status: " + result.getStatus()); } @@ -192,6 +192,9 @@ public class SslSocketChannel implements ISocketChannel { engine.closeOutbound(); try { new SslHandshake(this).handshake(); + } catch (Exception e) { + // ignore exceptions on best effort graceful close handshake + LOGGER.trace("ssl socket close handshake failed", e); } finally { socketChannel.close(); } @@ -239,7 +242,8 @@ public class SslSocketChannel implements ISocketChannel { close(); } } catch (Exception e) { - LOGGER.warn("failed to close socket gracefully", e); + // ignore close exception since we are closing quietly + LOGGER.trace("failed to close socket gracefully", e); } } diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java index 4f0c3a86aa..b2cd4359a4 100644 --- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java +++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java @@ -57,7 +57,8 @@ public class NetworkUtil { try { closeable.close(); } catch (IOException e) { - LOGGER.warn("Failed to close", e); + // ignore since we are closing quietly + LOGGER.trace("failed to close", e); } } }
