You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2022/02/11 02:30:03 UTC
[asterixdb] 06/09: [NO ISSUE][CLUS] Avoid eager refresh cluster state
This is an automated email from the ASF dual-hosted git repository.
mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit f7d22da9158558c71687f25072e9d74a72073a91
Author: Murtadha Hubail <mu...@couchbase.com>
AuthorDate: Sun Feb 6 19:43:56 2022 +0300
[NO ISSUE][CLUS] Avoid eager refresh cluster state
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- When clearing rebalance required cluster state, let the rebalance
operation update the cluster state to avoid changing the cluster
state during the rebalance.
- Make file replication logs debug level.
Change-Id: Ia1f3d84fe8ad82f34d4ad039efd353f7b534d4d6
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15163
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mh...@apache.org>
Reviewed-by: Ali Alsuliman <al...@gmail.com>
---
.../apache/asterix/replication/messaging/ReplicateFileTask.java | 2 +-
.../java/org/apache/asterix/replication/sync/FileSynchronizer.java | 2 +-
.../java/org/apache/asterix/runtime/utils/ClusterStateManager.java | 7 ++++++-
3 files changed, 8 insertions(+), 3 deletions(-)
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 bf1613c..5bec257 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
@@ -95,7 +95,7 @@ public class ReplicateFileTask implements IReplicaTask {
}
//delete mask
Files.delete(maskPath);
- LOGGER.info("received file {} from master", localPath);
+ LOGGER.debug("received file {} from master", localPath);
ReplicationProtocol.sendAck(worker.getChannel(), worker.getReusableBuffer());
} catch (IOException e) {
throw new ReplicationException(e);
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 813b293..968f883 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
@@ -58,7 +58,7 @@ public class FileSynchronizer {
String masterNode = appCtx.getReplicaManager().isPartitionOwner(replica.getIdentifier().getPartition())
? appCtx.getServiceContext().getNodeId() : null;
ReplicateFileTask task = new ReplicateFileTask(file, filePath.getFile().length(), metadata, masterNode);
- LOGGER.info("attempting to replicate {} to replica {}", task, replica);
+ LOGGER.debug("attempting to replicate {} to replica {}", task, replica);
ReplicationProtocol.sendTo(replica, task);
// send the file itself
try (RandomAccessFile fromFile = new RandomAccessFile(filePath.getFile(), "r");
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
index 6de1dda..052f568 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
@@ -470,7 +470,12 @@ public class ClusterStateManager implements IClusterStateManager {
@Override
public synchronized void setRebalanceRequired(boolean rebalanceRequired) throws HyracksDataException {
this.rebalanceRequired = rebalanceRequired;
- refreshState();
+ // if the cluster requires a rebalance, we will refresh the cluster state to ensure the state is updated
+ // to REBALANCE_REQUIRED. Otherwise, we will let the rebalance operation update the cluster state to avoid
+ // changing the cluster state during the rebalance
+ if (rebalanceRequired) {
+ refreshState();
+ }
}
@Override