@@ -630,7 +630,7 @@ protected Node(final Environment initialEnvironment, Collection<PluginInfo> clas
630630
631631 final SetOnce <RepositoriesService > repositoriesServiceReference = new SetOnce <>();
632632 final RemoteStoreNodeService remoteStoreNodeService = new RemoteStoreNodeService (repositoriesServiceReference ::get , threadPool );
633- localNodeFactory = new LocalNodeFactory (settings , nodeEnvironment .nodeId (), remoteStoreNodeService );
633+ localNodeFactory = new RemoteStoreVerifyingLocalNodeFactory (settings , nodeEnvironment .nodeId (), remoteStoreNodeService );
634634 resourcesToClose .add (() -> ThreadPool .terminate (threadPool , 10 , TimeUnit .SECONDS ));
635635 final ResourceWatcherService resourceWatcherService = new ResourceWatcherService (settings , threadPool );
636636 resourcesToClose .add (resourceWatcherService );
@@ -1292,7 +1292,7 @@ protected Node(final Environment initialEnvironment, Collection<PluginInfo> clas
12921292 streamTransport ,
12931293 threadPool ,
12941294 networkModule .getTransportInterceptor (),
1295- new LocalNodeFactory (settings , nodeEnvironment .nodeId (), remoteStoreNodeService , true ),
1295+ new LocalNodeFactory (settings , nodeEnvironment .nodeId (), remoteStoreNodeService ),
12961296 settingsModule .getClusterSettings (),
12971297 transportService .getTaskManager (),
12981298 transportService .getRemoteClusterService (),
@@ -2320,27 +2320,19 @@ protected List<AuxTransport> newAuxTransports(NetworkModule networkModule) {
23202320 return networkModule .getAuxServerTransportList ();
23212321 }
23222322
2323+ /**
2324+ * Base factory for creating DiscoveryNode instances during node initialization.
2325+ */
23232326 private static class LocalNodeFactory implements Function <BoundTransportAddress , DiscoveryNode > {
23242327 private final SetOnce <DiscoveryNode > localNode = new SetOnce <>();
23252328 private final String persistentNodeId ;
2326- private final Settings settings ;
2327- private final RemoteStoreNodeService remoteStoreNodeService ;
2328- private final boolean useStreamTransport ;
2329+ protected final Settings settings ;
2330+ protected final RemoteStoreNodeService remoteStoreNodeService ;
23292331
23302332 private LocalNodeFactory (Settings settings , String persistentNodeId , RemoteStoreNodeService remoteStoreNodeService ) {
2331- this (settings , persistentNodeId , remoteStoreNodeService , false );
2332- }
2333-
2334- private LocalNodeFactory (
2335- Settings settings ,
2336- String persistentNodeId ,
2337- RemoteStoreNodeService remoteStoreNodeService ,
2338- boolean useStreamTransport
2339- ) {
23402333 this .persistentNodeId = persistentNodeId ;
23412334 this .settings = settings ;
23422335 this .remoteStoreNodeService = remoteStoreNodeService ;
2343- this .useStreamTransport = useStreamTransport ;
23442336 }
23452337
23462338 @ Override
@@ -2350,11 +2342,6 @@ public DiscoveryNode apply(BoundTransportAddress boundTransportAddress) {
23502342 boundTransportAddress .publishAddress (),
23512343 persistentNodeId
23522344 );
2353-
2354- if (!useStreamTransport && isRemoteStoreAttributePresent (settings )) {
2355- remoteStoreNodeService .createAndVerifyRepositories (discoveryNode );
2356- }
2357-
23582345 localNode .set (discoveryNode );
23592346 return localNode .get ();
23602347 }
@@ -2365,6 +2352,31 @@ DiscoveryNode getNode() {
23652352 }
23662353 }
23672354
2355+ /**
2356+ * Extended factory that verifies remote store repositories during node creation.
2357+ */
2358+ private static class RemoteStoreVerifyingLocalNodeFactory extends LocalNodeFactory {
2359+
2360+ private RemoteStoreVerifyingLocalNodeFactory (
2361+ Settings settings ,
2362+ String persistentNodeId ,
2363+ RemoteStoreNodeService remoteStoreNodeService
2364+ ) {
2365+ super (settings , persistentNodeId , remoteStoreNodeService );
2366+ }
2367+
2368+ @ Override
2369+ public DiscoveryNode apply (BoundTransportAddress boundTransportAddress ) {
2370+ final DiscoveryNode discoveryNode = super .apply (boundTransportAddress );
2371+
2372+ if (isRemoteStoreAttributePresent (settings )) {
2373+ remoteStoreNodeService .createAndVerifyRepositories (discoveryNode );
2374+ }
2375+
2376+ return discoveryNode ;
2377+ }
2378+ }
2379+
23682380 /**
23692381 * Initializes the warm cache with a defined capacity.
23702382 * The capacity of the cache is based on user configuration for {@link Node#NODE_SEARCH_CACHE_SIZE_SETTING}.
0 commit comments