NealSun96 commented on a change in pull request #973:
URL: https://github.com/apache/helix/pull/973#discussion_r419711715



##########
File path: 
helix-core/src/main/java/org/apache/helix/task/TaskStateModelFactory.java
##########
@@ -102,4 +107,40 @@ public boolean isShutdown() {
   public boolean isTerminated() {
     return _taskExecutor.isTerminated();
   }
+
+  /*
+   * Get target thread pool size from InstanceConfig first; if that fails, get 
it from
+   * ClusterConfig; if that fails, fall back to the default value.
+   */
+  private static int _getTaskThreadPoolSize(HelixManager manager) {
+    ConfigAccessor configAccessor = manager.getConfigAccessor();
+    // Check instance config first for thread pool size
+    try {
+      InstanceConfig instanceConfig =
+          configAccessor.getInstanceConfig(manager.getClusterName(), 
manager.getInstanceName());
+      int targetTaskThreadPoolSize = 
instanceConfig.getTargetTaskThreadPoolSize();
+      if (_verifyTargetThreadPoolSize(targetTaskThreadPoolSize)) {
+        return targetTaskThreadPoolSize;
+      }
+    } catch (HelixException e) {
+      // Pass if InstanceConfig doesn't exist.
+    }
+
+    // Fallback to cluster config since instance config doesn't provide the 
value
+    try {
+      ClusterConfig clusterConfig = 
configAccessor.getClusterConfig(manager.getClusterName());
+      int targetTaskThreadPoolSize = 
clusterConfig.getTargetTaskThreadPoolSize();
+      if (_verifyTargetThreadPoolSize(targetTaskThreadPoolSize)) {
+        return targetTaskThreadPoolSize;
+      }
+    } catch (HelixException e) {
+      // Pass if ClusterConfig doesn't exist.
+    }
+
+    return DEFAULT_TASK_THREAD_POOL_SIZE;
+  }
+
+  private static boolean _verifyTargetThreadPoolSize(int 
targetTaskThreadPoolSize) {

Review comment:
       @narendly Reminder on this conversation. 
   
   I want to know if there's a good way to use `getIntField()` while handling 
the "not defined" case differently. If not, I will proceed with the current 
design. 




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to