Skip to content

Commit a9aa4d9

Browse files
Add Provider interface for LinkedProjectConfigService (#136310)
Adds a Provider interface that returns an Optional LinkedProjectConfigService, to support optionally creating an instance from serverless, depending on if CPS is enabled. Relates: ES-12270
1 parent 33856ee commit a9aa4d9

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

server/src/main/java/org/elasticsearch/node/NodeConstruction.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,9 +1009,11 @@ public Map<String, String> queryFields() {
10091009
final IndexingPressure indexingLimits = new IndexingPressure(settings);
10101010

10111011
final var linkedProjectConfigService = pluginsService.loadSingletonServiceProvider(
1012-
LinkedProjectConfigService.class,
1013-
() -> new ClusterSettingsLinkedProjectConfigService(settings, clusterService.getClusterSettings(), projectResolver)
1014-
);
1012+
LinkedProjectConfigService.Provider.class,
1013+
() -> Optional::empty
1014+
)
1015+
.create()
1016+
.orElseGet(() -> new ClusterSettingsLinkedProjectConfigService(settings, clusterService.getClusterSettings(), projectResolver));
10151017

10161018
PluginServiceInstances pluginServices = new PluginServiceInstances(
10171019
client,

server/src/main/java/org/elasticsearch/transport/LinkedProjectConfigService.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,24 @@
1010
package org.elasticsearch.transport;
1111

1212
import java.util.Collection;
13+
import java.util.Optional;
1314

1415
/**
1516
* Service for registering {@link LinkedProjectConfigListener}s to be notified of changes to linked project configurations.
1617
*/
1718
public interface LinkedProjectConfigService {
1819

20+
/**
21+
* Interface for providing a {@link LinkedProjectConfigService} instance via SPI.
22+
*/
23+
interface Provider {
24+
/**
25+
* @return An {@link Optional} populated with a {@link LinkedProjectConfigService} instance, or {@link Optional#empty()} if it is
26+
* not possible to create an instance in the current runtime environment.
27+
*/
28+
Optional<LinkedProjectConfigService> create();
29+
}
30+
1931
/**
2032
* Listener interface for receiving updates about linked project configurations.
2133
* Implementations must not throw from any of the interface methods.

0 commit comments

Comments
 (0)