This is an automated email from the ASF dual-hosted git repository. alsuliman pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit c3dbe4bbfbccdf24261112e95726986d434d5753 Author: Murtadha Hubail <[email protected]> AuthorDate: Fri Apr 2 21:49:10 2021 +0300 [NO ISSUE][REP] Log details of files to be replicated - user model changes: no - storage format changes: no - interface changes: no Details: - Log details of the file to be replicated on master being sending it to replicas. - Log details of the file to be replicated before receiving it on a replica. - Log details on file transfer failures. Change-Id: I645cc8b466fd9e5eaad791a5dcddc3525db22e3f Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/10843 Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> Reviewed-by: Hussain Towaileb <[email protected]> --- .../asterix/replication/management/NetworkingUtil.java | 16 +++++++++++++--- .../asterix/replication/messaging/ReplicateFileTask.java | 7 +++++++ .../asterix/replication/sync/FileSynchronizer.java | 4 ++++ 3 files changed, 24 insertions(+), 3 deletions(-) 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 d572ba2..97dd049 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 @@ -34,9 +34,13 @@ import java.util.Enumeration; import org.apache.hyracks.api.comm.NetworkAddress; import org.apache.hyracks.api.network.ISocketChannel; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class NetworkingUtil { + private static final Logger LOGGER = LogManager.getLogger(); + private NetworkingUtil() { throw new AssertionError("This util class should not be initialized."); } @@ -72,9 +76,15 @@ public class NetworkingUtil { long fileSize = fileChannel.size(); long count = fileSize; long numTransferred = 0; - while ((numTransferred += fileChannel.transferFrom(socketChannel, pos, count)) < fileSize) { - pos += numTransferred; - count -= numTransferred; + try { + while ((numTransferred += fileChannel.transferFrom(socketChannel, pos, count)) < fileSize) { + pos += numTransferred; + count -= numTransferred; + } + } catch (Exception e) { + LOGGER.info("failed to download file; file size {}, pos {}, count {}, numTransferred {}", fileSize, pos, + count, numTransferred); + throw e; } } diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java index 35dbd49..5f7bee6 100644 --- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java +++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java @@ -63,6 +63,7 @@ public class ReplicateFileTask implements IReplicaTask { @Override public void perform(INcApplicationContext appCtx, IReplicationWorker worker) { try { + LOGGER.info("attempting to replicate {}", this); final IIOManager ioManager = appCtx.getIoManager(); // resolve path final FileReference localPath = ioManager.resolve(file); @@ -127,4 +128,10 @@ public class ReplicateFileTask implements IReplicaTask { final boolean isMetadata = input.readBoolean(); return new ReplicateFileTask(s, i, isMetadata); } + + @Override + public String toString() { + return "ReplicateFileTask{" + "file='" + file + '\'' + ", size=" + size + ", indexMetadata=" + indexMetadata + + '}'; + } } diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java index f0a4229..7bb2858 100644 --- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java +++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java @@ -32,9 +32,12 @@ import org.apache.asterix.replication.messaging.ReplicationProtocol; import org.apache.hyracks.api.io.FileReference; import org.apache.hyracks.api.io.IIOManager; import org.apache.hyracks.api.network.ISocketChannel; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class FileSynchronizer { + private static final Logger LOGGER = LogManager.getLogger(); private final INcApplicationContext appCtx; private final PartitionReplica replica; @@ -53,6 +56,7 @@ public class FileSynchronizer { final ISocketChannel channel = replica.getChannel(); final FileReference filePath = ioManager.resolve(file); ReplicateFileTask task = new ReplicateFileTask(file, filePath.getFile().length(), metadata); + LOGGER.info("attempting to replicate {} to replica {}", task, replica); ReplicationProtocol.sendTo(replica, task); // send the file itself try (RandomAccessFile fromFile = new RandomAccessFile(filePath.getFile(), "r");
