You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by al...@apache.org on 2021/04/07 12:47:57 UTC
[asterixdb] 16/25: [NO ISSUE][REP] Log details of files to be
replicated
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 <mh...@apache.org>
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 <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mh...@apache.org>
Reviewed-by: Hussain Towaileb <hu...@gmail.com>
---
.../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");