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

Jackie-Jiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new ab9ac391fa1 Add method createSegmentOnlineOfflineStateModelFactory in 
BaseServerStarter (#18313)
ab9ac391fa1 is described below

commit ab9ac391fa16b731eb2e1498bb13cdaaf65e92da
Author: Jhow <[email protected]>
AuthorDate: Thu Apr 23 19:32:59 2026 -0700

    Add method createSegmentOnlineOfflineStateModelFactory in BaseServerStarter 
(#18313)
---
 .../apache/pinot/server/starter/helix/BaseServerStarter.java  | 11 ++++++++++-
 .../starter/helix/SegmentOnlineOfflineStateModelFactory.java  | 10 +++++-----
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git 
a/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/BaseServerStarter.java
 
b/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/BaseServerStarter.java
index 24caf050544..638553f05d1 100644
--- 
a/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/BaseServerStarter.java
+++ 
b/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/BaseServerStarter.java
@@ -777,7 +777,7 @@ public abstract class BaseServerStarter implements 
ServiceStartable {
 
     initSegmentFetcher(_serverConf);
     StateModelFactory<?> stateModelFactory =
-        new SegmentOnlineOfflineStateModelFactory(_instanceId, 
instanceDataManager, _transitionThreadPoolManager);
+        createSegmentOnlineOfflineStateModelFactory(instanceDataManager, 
_transitionThreadPoolManager);
     _helixManager.getStateMachineEngine()
         
.registerStateModelFactory(SegmentOnlineOfflineStateModelFactory.getStateModelName(),
 stateModelFactory);
     // Start the data manager as a pre-connect callback so that it starts 
after connecting to the ZK in order to access
@@ -1264,6 +1264,15 @@ public abstract class BaseServerStarter implements 
ServiceStartable {
     return new SegmentMessageHandlerFactory(instanceDataManager, 
serverMetrics);
   }
 
+  /**
+   * Creates the {@link SegmentOnlineOfflineStateModelFactory} used to handle 
Helix state transitions for segments.
+   * Subclasses can override to return a custom factory.
+   */
+  protected SegmentOnlineOfflineStateModelFactory 
createSegmentOnlineOfflineStateModelFactory(
+      InstanceDataManager instanceDataManager, 
StateTransitionThreadPoolManager transitionThreadPoolManager) {
+    return new SegmentOnlineOfflineStateModelFactory(instanceDataManager, 
transitionThreadPoolManager);
+  }
+
   private void refreshMessageCount() {
     try {
       HelixDataAccessor dataAccessor = _helixManager.getHelixDataAccessor();
diff --git 
a/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/SegmentOnlineOfflineStateModelFactory.java
 
b/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/SegmentOnlineOfflineStateModelFactory.java
index 7f2feff5241..6fb16aaa54a 100644
--- 
a/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/SegmentOnlineOfflineStateModelFactory.java
+++ 
b/pinot-server/src/main/java/org/apache/pinot/server/starter/helix/SegmentOnlineOfflineStateModelFactory.java
@@ -40,16 +40,16 @@ import org.slf4j.LoggerFactory;
  */
 public class SegmentOnlineOfflineStateModelFactory extends 
StateModelFactory<StateModel> {
 
-  private final String _instanceId;
-  private final InstanceDataManager _instanceDataManager;
+  protected final String _instanceId;
+  protected final InstanceDataManager _instanceDataManager;
   /** Provides custom thread pools for executing Helix state transition 
messages. If this is null, all state
    * transition message will be executed using the default shared thread pool 
by Helix */
   @Nullable
-  private final StateTransitionThreadPoolManager 
_stateTransitionThreadPoolManager;
+  protected final StateTransitionThreadPoolManager 
_stateTransitionThreadPoolManager;
 
-  public SegmentOnlineOfflineStateModelFactory(String instanceId, 
InstanceDataManager instanceDataManager,
+  public SegmentOnlineOfflineStateModelFactory(InstanceDataManager 
instanceDataManager,
       @Nullable StateTransitionThreadPoolManager 
stateTransitionThreadPoolManager) {
-    _instanceId = instanceId;
+    _instanceId = instanceDataManager.getInstanceId();
     _instanceDataManager = instanceDataManager;
     _stateTransitionThreadPoolManager = stateTransitionThreadPoolManager;
   }


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

Reply via email to