[NO ISSUE][CLUS] Exclude Pending Removal Nodes From Location

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Exclude pending removel nodes from cluster locations
  to prevent new jobs from using them as compute locations.
- Add additional logging for dataset rebalance.

Change-Id: I0c9904b229aa086615a3a8bbdfaf44d51f1e1757
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2523
Reviewed-by: Michael Blow <mb...@apache.org>
Integration-Tests: Michael Blow <mb...@apache.org>
Tested-by: Michael Blow <mb...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/ad1d30ab
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/ad1d30ab
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/ad1d30ab

Branch: refs/heads/release-0.9.4-pre-rc
Commit: ad1d30abb32174bc9d7ada81bd8239036e171df2
Parents: 94b6da6
Author: Murtadha Hubail <mhub...@apache.org>
Authored: Sun Mar 25 04:59:34 2018 +0300
Committer: Murtadha Hubail <mhub...@apache.org>
Committed: Sun Mar 25 07:34:58 2018 -0700

----------------------------------------------------------------------
 .../src/main/java/org/apache/asterix/utils/RebalanceUtil.java | 7 +++++++
 .../org/apache/asterix/runtime/utils/ClusterStateManager.java | 1 +
 2 files changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ad1d30ab/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
index 7bb917f..702b6b4 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
@@ -124,6 +124,9 @@ public class RebalanceUtil {
                 // The target dataset for rebalance.
                 targetDataset = 
sourceDataset.getTargetDatasetForRebalance(nodeGroupName);
 
+                LOGGER.info("Rebalancing dataset {} from node group {} with 
nodes {} to node group {} with nodes {}",
+                        sourceDataset.getDatasetName(), 
sourceDataset.getNodeGroupName(), sourceNodes,
+                        targetDataset.getNodeGroupName(), targetNcNames);
                 // Rebalances the source dataset into the target dataset.
                 rebalance(sourceDataset, targetDataset, metadataProvider, hcc, 
datasetRebalanceCallback);
             } else {
@@ -158,6 +161,7 @@ public class RebalanceUtil {
             // the source dataset.
             runMetadataTransaction(metadataProvider, () -> 
dropSourceDataset(sourceDataset, metadataProvider, hcc));
         });
+        LOGGER.info("Dataset {} rebalance completed successfully", 
datasetName);
     }
 
     @FunctionalInterface
@@ -238,6 +242,8 @@ public class RebalanceUtil {
                 (ActiveNotificationHandler) 
appCtx.getActiveNotificationHandler();
         IMetadataLockManager lockManager = appCtx.getMetadataLockManager();
         lockManager.upgradeDatasetLockToWrite(metadataProvider.getLocks(), 
DatasetUtil.getFullyQualifiedName(source));
+        LOGGER.info("Updating dataset {} node group from {} to {}", 
source.getDatasetName(), source.getNodeGroupName(),
+                target.getNodeGroupName());
         try {
             // Updates the dataset entry in the metadata storage
             MetadataManager.INSTANCE.updateDataset(mdTxnCtx, target);
@@ -248,6 +254,7 @@ public class RebalanceUtil {
                 }
             }
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+            LOGGER.info("dataset {} node group updated to {}", 
target.getDatasetName(), target.getNodeGroupName());
         } finally {
             
lockManager.downgradeDatasetLockToExclusiveModify(metadataProvider.getLocks(),
                     DatasetUtil.getFullyQualifiedName(target));

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ad1d30ab/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
----------------------------------------------------------------------
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 7182204..73d6705 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
@@ -280,6 +280,7 @@ public class ClusterStateManager implements 
IClusterStateManager {
                 clusterActiveLocations.add(p.getActiveNodeId());
             }
         }
+        clusterActiveLocations.removeAll(pendingRemoval);
         clusterPartitionConstraint =
                 new 
AlgebricksAbsolutePartitionConstraint(clusterActiveLocations.toArray(new 
String[] {}));
     }

Reply via email to