1515import org .elasticsearch .common .settings .Setting ;
1616import org .elasticsearch .common .settings .Settings ;
1717import org .elasticsearch .core .FixForMultiProject ;
18+ import org .elasticsearch .core .Nullable ;
1819
1920import java .util .Collection ;
2021import java .util .List ;
@@ -27,27 +28,40 @@ public class ClusterSettingsLinkedProjectConfigService extends AbstractLinkedPro
2728 private final Settings settings ;
2829 private final ProjectResolver projectResolver ;
2930
31+ /**
32+ * Constructs a new {@link ClusterSettingsLinkedProjectConfigService}.
33+ *
34+ * @param settings The initial node settings available on startup, used in {@link #getInitialLinkedProjectConfigs()}.
35+ * @param clusterSettings The {@link ClusterSettings} to add setting update consumers to, if non-null.
36+ * @param projectResolver The {@link ProjectResolver} to use to resolve the origin project ID.
37+ */
3038 @ SuppressWarnings ("this-escape" )
31- public ClusterSettingsLinkedProjectConfigService (Settings settings , ClusterSettings clusterSettings , ProjectResolver projectResolver ) {
39+ public ClusterSettingsLinkedProjectConfigService (
40+ Settings settings ,
41+ @ Nullable ClusterSettings clusterSettings ,
42+ ProjectResolver projectResolver
43+ ) {
3244 this .settings = settings ;
3345 this .projectResolver = projectResolver ;
34- List <Setting .AffixSetting <?>> remoteClusterSettings = List .of (
35- RemoteClusterSettings .REMOTE_CLUSTER_COMPRESS ,
36- RemoteClusterSettings .REMOTE_CLUSTER_PING_SCHEDULE ,
37- RemoteClusterSettings .REMOTE_CONNECTION_MODE ,
38- RemoteClusterSettings .SniffConnectionStrategySettings .REMOTE_CLUSTERS_PROXY ,
39- RemoteClusterSettings .SniffConnectionStrategySettings .REMOTE_CLUSTER_SEEDS ,
40- RemoteClusterSettings .SniffConnectionStrategySettings .REMOTE_NODE_CONNECTIONS ,
41- RemoteClusterSettings .ProxyConnectionStrategySettings .PROXY_ADDRESS ,
42- RemoteClusterSettings .ProxyConnectionStrategySettings .REMOTE_SOCKET_CONNECTIONS ,
43- RemoteClusterSettings .ProxyConnectionStrategySettings .SERVER_NAME
44- );
45- clusterSettings .addAffixGroupUpdateConsumer (remoteClusterSettings , this ::settingsChangedCallback );
46- clusterSettings .addAffixUpdateConsumer (
47- RemoteClusterSettings .REMOTE_CLUSTER_SKIP_UNAVAILABLE ,
48- this ::skipUnavailableChangedCallback ,
49- (alias , value ) -> {}
50- );
46+ if (clusterSettings != null ) {
47+ List <Setting .AffixSetting <?>> remoteClusterSettings = List .of (
48+ RemoteClusterSettings .REMOTE_CLUSTER_COMPRESS ,
49+ RemoteClusterSettings .REMOTE_CLUSTER_PING_SCHEDULE ,
50+ RemoteClusterSettings .REMOTE_CONNECTION_MODE ,
51+ RemoteClusterSettings .SniffConnectionStrategySettings .REMOTE_CLUSTERS_PROXY ,
52+ RemoteClusterSettings .SniffConnectionStrategySettings .REMOTE_CLUSTER_SEEDS ,
53+ RemoteClusterSettings .SniffConnectionStrategySettings .REMOTE_NODE_CONNECTIONS ,
54+ RemoteClusterSettings .ProxyConnectionStrategySettings .PROXY_ADDRESS ,
55+ RemoteClusterSettings .ProxyConnectionStrategySettings .REMOTE_SOCKET_CONNECTIONS ,
56+ RemoteClusterSettings .ProxyConnectionStrategySettings .SERVER_NAME
57+ );
58+ clusterSettings .addAffixGroupUpdateConsumer (remoteClusterSettings , this ::settingsChangedCallback );
59+ clusterSettings .addAffixUpdateConsumer (
60+ RemoteClusterSettings .REMOTE_CLUSTER_SKIP_UNAVAILABLE ,
61+ this ::skipUnavailableChangedCallback ,
62+ (alias , value ) -> {}
63+ );
64+ }
5165 }
5266
5367 @ Override
@@ -59,7 +73,6 @@ public Collection<LinkedProjectConfig> getInitialLinkedProjectConfigs() {
5973 .toList ();
6074 }
6175
62-
6376 private void settingsChangedCallback (String clusterAlias , Settings newSettings ) {
6477 final var mergedSettings = Settings .builder ().put (settings , false ).put (newSettings , false ).build ();
6578 @ FixForMultiProject (description = "Refactor to add the linked project ID associated with the alias." )
0 commit comments