You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by hu...@apache.org on 2019/05/25 01:20:17 UTC

[helix] 43/44: Two minor improvements. 1) Avoid persisting null entry into CurrentStateOutput, 2) add addition info to CallbackProcess thread name to differeniate different threads.

This is an automated email from the ASF dual-hosted git repository.

hulee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git

commit 43b189a7db5333fba6f2a7e797ff482d9c9cf7de
Author: Lei Xia <lx...@linkedin.com>
AuthorDate: Fri May 17 09:17:33 2019 -0700

    Two minor improvements. 1) Avoid persisting null entry into CurrentStateOutput, 2) add addition info to CallbackProcess thread name to differeniate different threads.
    
    RB=1670214
    G=helix-reviewers
    A=hulee
    
    Signed-off-by: Hunter Lee <hu...@linkedin.com>
---
 .../controller/stages/CurrentStateComputationStage.java    | 14 ++++++++++----
 .../java/org/apache/helix/manager/zk/CallbackHandler.java  |  3 ++-
 .../java/org/apache/helix/tools/TestHelixAdminCli.java     |  1 +
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/helix-core/src/main/java/org/apache/helix/controller/stages/CurrentStateComputationStage.java b/helix-core/src/main/java/org/apache/helix/controller/stages/CurrentStateComputationStage.java
index 0bf4d28..6115465 100644
--- a/helix-core/src/main/java/org/apache/helix/controller/stages/CurrentStateComputationStage.java
+++ b/helix-core/src/main/java/org/apache/helix/controller/stages/CurrentStateComputationStage.java
@@ -190,12 +190,18 @@ public class CurrentStateComputationStage extends AbstractBaseStage {
         if (partition != null) {
           currentStateOutput.setCurrentState(resourceName, partition, instanceName,
               currentState.getState(partitionName));
-          currentStateOutput.setRequestedState(resourceName, partition, instanceName,
-              currentState.getRequestedState(partitionName));
-          currentStateOutput
-              .setInfo(resourceName, partition, instanceName, currentState.getInfo(partitionName));
           currentStateOutput.setEndTime(resourceName, partition, instanceName,
               currentState.getEndTime(partitionName));
+          String info = currentState.getInfo(partitionName);
+          // This is to avoid null value entries in the map, and reduce memory usage by avoiding extra empty entries in the map.
+          if (info != null) {
+            currentStateOutput.setInfo(resourceName, partition, instanceName, info);
+          }
+          String requestState = currentState.getRequestedState(partitionName);
+          if (requestState != null) {
+            currentStateOutput
+                .setRequestedState(resourceName, partition, instanceName, requestState);
+          }
         }
       }
     }
diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/CallbackHandler.java b/helix-core/src/main/java/org/apache/helix/manager/zk/CallbackHandler.java
index 713d214..969805e 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/CallbackHandler.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/CallbackHandler.java
@@ -160,7 +160,8 @@ public class CallbackHandler implements IZkChildListener, IZkDataListener {
     private CallbackHandler _handler;
 
     public CallbackProcessor(CallbackHandler handler) {
-      super(_manager.getClusterName(), "CallbackProcessor");
+      super(_manager.getClusterName(),
+          "CallbackProcessor@" + Integer.toHexString(handler.hashCode()));
       _handler = handler;
     }
 
diff --git a/helix-core/src/test/java/org/apache/helix/tools/TestHelixAdminCli.java b/helix-core/src/test/java/org/apache/helix/tools/TestHelixAdminCli.java
index d363b8d..420beba 100644
--- a/helix-core/src/test/java/org/apache/helix/tools/TestHelixAdminCli.java
+++ b/helix-core/src/test/java/org/apache/helix/tools/TestHelixAdminCli.java
@@ -282,6 +282,7 @@ public class TestHelixAdminCli extends ZkTestBase {
       Thread.sleep(200);
       leader = accessor.getProperty(accessor.keyBuilder().controllerLeader());
     }
+    Assert.assertNotNull(leader);
     Assert.assertTrue(leader.getInstanceName().startsWith("controller_900"));
 
     boolean verifyResult = ClusterStateVerifier