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]