Skip to content

Commit 716d6b6

Browse files
Add optional support for registering ClusterSettings update consumers
1 parent 20861a3 commit 716d6b6

File tree

2 files changed

+36
-27
lines changed

2 files changed

+36
-27
lines changed

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

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.elasticsearch.common.settings.Setting;
1616
import org.elasticsearch.common.settings.Settings;
1717
import org.elasticsearch.core.FixForMultiProject;
18+
import org.elasticsearch.core.Nullable;
1819

1920
import java.util.Collection;
2021
import 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.")

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

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -276,11 +276,7 @@ public TransportService(
276276
clusterSettings,
277277
connectionManager,
278278
taskManger,
279-
new ClusterSettingsLinkedProjectConfigService(
280-
settings,
281-
clusterSettings != null ? clusterSettings : ClusterSettings.createBuiltInClusterSettings(),
282-
DefaultProjectResolver.INSTANCE
283-
),
279+
new ClusterSettingsLinkedProjectConfigService(settings, clusterSettings, DefaultProjectResolver.INSTANCE),
284280
DefaultProjectResolver.INSTANCE
285281
);
286282
}
@@ -317,11 +313,11 @@ public TransportService(
317313
if (clusterSettings != null) {
318314
clusterSettings.addSettingsUpdateConsumer(TransportSettings.TRACE_LOG_INCLUDE_SETTING, this::setTracerLogInclude);
319315
clusterSettings.addSettingsUpdateConsumer(TransportSettings.TRACE_LOG_EXCLUDE_SETTING, this::setTracerLogExclude);
320-
if (remoteClusterClient) {
321-
linkedProjectConfigService.register(remoteClusterService);
322-
}
323316
clusterSettings.addSettingsUpdateConsumer(TransportSettings.SLOW_OPERATION_THRESHOLD_SETTING, transport::setSlowLogThreshold);
324317
}
318+
if (remoteClusterClient) {
319+
linkedProjectConfigService.register(remoteClusterService);
320+
}
325321
registerRequestHandler(
326322
HANDSHAKE_ACTION_NAME,
327323
EsExecutors.DIRECT_EXECUTOR_SERVICE,

0 commit comments

Comments
 (0)