Skip to content

Commit f720699

Browse files
Fix merged settings, check linked project alias
1 parent 9d1e8ae commit f720699

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
import org.elasticsearch.core.TimeValue;
1515

1616
import java.util.List;
17+
import java.util.Objects;
1718
import java.util.function.Predicate;
1819

1920
import static org.elasticsearch.transport.RemoteConnectionStrategy.ConnectionStrategy;
2021

22+
// FIXME: Refactor into a class heirarchy with subclasses for each connection strategy
2123
public record LinkedProjectConfig(
2224
ProjectId originProjectId,
2325
ProjectId linkedProjectId,
@@ -72,6 +74,9 @@ public Builder linkedProjectId(ProjectId linkedProjectId) {
7274
}
7375

7476
public Builder linkedProjectAlias(String linkedProjectAlias) {
77+
if (linkedProjectAlias == null || linkedProjectAlias.isBlank()) {
78+
throw new IllegalArgumentException("linkedProjectAlias cannot be null or empty");
79+
}
7580
this.linkedProjectAlias = linkedProjectAlias;
7681
return this;
7782
}

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,10 @@ private synchronized void updateRemoteCluster(
431431
boolean forceRebuild,
432432
ActionListener<RemoteClusterConnectionStatus> listener
433433
) {
434-
final var mergedSettings = Settings.builder().put(settings).put(newSettings).build();
434+
if (LOCAL_CLUSTER_GROUP_KEY.equals(clusterAlias)) {
435+
throw new IllegalArgumentException("remote clusters must not have the empty string as its key");
436+
}
437+
final var mergedSettings = Settings.builder().put(settings, false).put(newSettings, false).build();
435438
final var linkedProjectConfig = RemoteClusterSettings.toConfigBuilder(clusterAlias, mergedSettings)
436439
.originProjectId(projectId)
437440
.linkedProjectAlias(clusterAlias)
@@ -446,10 +449,6 @@ private synchronized void updateRemoteCluster(
446449
) {
447450
final var projectId = config.originProjectId();
448451
final var clusterAlias = config.linkedProjectAlias();
449-
if (LOCAL_CLUSTER_GROUP_KEY.equals(clusterAlias)) {
450-
throw new IllegalArgumentException("remote clusters must not have the empty string as its key");
451-
}
452-
453452
final var connectionMap = getConnectionsMapForProject(projectId);
454453
RemoteClusterConnection remote = connectionMap.get(clusterAlias);
455454
if (RemoteConnectionStrategy.isConnectionEnabled(config) == false) {

server/src/test/java/org/elasticsearch/transport/LinkedProjectConfigTests.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,9 @@ public void testBuilder() {
5757

5858
assertThat("expect builder generated config to match the original config", builtConfig, equalTo(config));
5959
}
60+
61+
public void testLinkedProjectAliasValidation() {
62+
assertThrows(IllegalArgumentException.class, () -> LinkedProjectConfig.builder().linkedProjectAlias(null).build());
63+
assertThrows(IllegalArgumentException.class, () -> LinkedProjectConfig.builder().linkedProjectAlias("").build());
64+
}
6065
}

0 commit comments

Comments
 (0)