1818import org .elasticsearch .cluster .metadata .ReservedStateMetadata ;
1919import org .elasticsearch .cluster .routing .RerouteService ;
2020import org .elasticsearch .cluster .service .ClusterService ;
21- import org .elasticsearch .cluster .service .MasterServiceTaskQueue ;
2221import org .elasticsearch .common .Priority ;
2322import org .elasticsearch .core .Tuple ;
2423import org .elasticsearch .env .BuildVersion ;
@@ -61,8 +60,6 @@ public class ReservedClusterStateService {
6160
6261 final Map <String , ReservedClusterStateHandler <?>> handlers ;
6362 final ClusterService clusterService ;
64- private final MasterServiceTaskQueue <ReservedStateUpdateTask > updateTaskQueue ;
65- private final MasterServiceTaskQueue <ReservedStateErrorTask > errorTaskQueue ;
6663
6764 @ SuppressWarnings ("unchecked" )
6865 private final ConstructingObjectParser <ReservedStateChunk , Void > stateChunkParser = new ConstructingObjectParser <>(
@@ -77,6 +74,8 @@ public class ReservedClusterStateService {
7774 return new ReservedStateChunk (stateMap , (ReservedStateVersion ) a [1 ]);
7875 }
7976 );
77+ private final ReservedStateUpdateTaskExecutor updateTaskExecutor ;
78+ private final ReservedStateErrorTaskExecutor errorTaskExecutor ;
8079
8180 /**
8281 * Controller class for saving and reserving {@link ClusterState}.
@@ -89,12 +88,8 @@ public ReservedClusterStateService(
8988 List <ReservedClusterStateHandler <?>> handlerList
9089 ) {
9190 this .clusterService = clusterService ;
92- this .updateTaskQueue = clusterService .createTaskQueue (
93- "reserved state update" ,
94- Priority .URGENT ,
95- new ReservedStateUpdateTaskExecutor (rerouteService )
96- );
97- this .errorTaskQueue = clusterService .createTaskQueue ("reserved state error" , Priority .URGENT , new ReservedStateErrorTaskExecutor ());
91+ this .updateTaskExecutor = new ReservedStateUpdateTaskExecutor (rerouteService );
92+ this .errorTaskExecutor = new ReservedStateErrorTaskExecutor ();
9893 this .handlers = handlerList .stream ().collect (Collectors .toMap (ReservedClusterStateHandler ::name , Function .identity ()));
9994 stateChunkParser .declareNamedObjects (ConstructingObjectParser .constructorArg (), (p , c , name ) -> {
10095 if (handlers .containsKey (name ) == false ) {
@@ -160,7 +155,7 @@ public void process(
160155 public void initEmpty (String namespace , ActionListener <ActionResponse .Empty > listener ) {
161156 var missingVersion = new ReservedStateVersion (EMPTY_VERSION , BuildVersion .current ());
162157 var emptyState = new ReservedStateChunk (Map .of (), missingVersion );
163- updateTaskQueue . submitTask (
158+ submitUpdateTask (
164159 "empty initial cluster state [" + namespace + "]" ,
165160 new ReservedStateUpdateTask (
166161 namespace ,
@@ -171,10 +166,8 @@ public void initEmpty(String namespace, ActionListener<ActionResponse.Empty> lis
171166 // error state should not be possible since there is no metadata being parsed or processed
172167 errorState -> { throw new AssertionError (); },
173168 listener
174- ),
175- null
169+ )
176170 );
177-
178171 }
179172
180173 /**
@@ -234,15 +227,15 @@ public void process(
234227 errorListener .accept (error );
235228 return ;
236229 }
237- updateTaskQueue . submitTask (
230+ submitUpdateTask (
238231 "reserved cluster state [" + namespace + "]" ,
239232 new ReservedStateUpdateTask (
240233 namespace ,
241234 reservedStateChunk ,
242235 versionCheck ,
243236 handlers ,
244237 orderedHandlers ,
245- ReservedClusterStateService . this ::updateErrorState ,
238+ this ::updateErrorState ,
246239 new ActionListener <>() {
247240 @ Override
248241 public void onResponse (ActionResponse .Empty empty ) {
@@ -261,8 +254,7 @@ public void onFailure(Exception e) {
261254 }
262255 }
263256 }
264- ),
265- null
257+ )
266258 );
267259 }
268260
@@ -293,6 +285,11 @@ Exception checkAndReportError(
293285 return null ;
294286 }
295287
288+ void submitUpdateTask (String source , ReservedStateUpdateTask task ) {
289+ var updateTaskQueue = clusterService .createTaskQueue ("reserved state update" , Priority .URGENT , updateTaskExecutor );
290+ updateTaskQueue .submitTask (source , task , null );
291+ }
292+
296293 // package private for testing
297294 void updateErrorState (ErrorState errorState ) {
298295 // optimistic check here - the cluster state might change after this, so also need to re-check later
@@ -305,6 +302,7 @@ void updateErrorState(ErrorState errorState) {
305302 }
306303
307304 private void submitErrorUpdateTask (ErrorState errorState ) {
305+ var errorTaskQueue = clusterService .createTaskQueue ("reserved state error" , Priority .URGENT , errorTaskExecutor );
308306 errorTaskQueue .submitTask (
309307 "reserved cluster state update error for [ " + errorState .namespace () + "]" ,
310308 new ReservedStateErrorTask (errorState , new ActionListener <>() {
0 commit comments