Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,7 @@ public void start()

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
Expand Down Expand Up @@ -1264,6 +1264,15 @@ protected SegmentMessageHandlerFactory createSegmentMessageHandlerFactory(Instan
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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,16 @@
*/
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;
}
Expand Down