Skip to content

Commit 238235c

Browse files
authored
Remove Discovery interface (#77996)
* Remove Discovery interface Today there's only one implementation of the `o.e.d.Discovery` interface in use anywhere, namely `o.e.c.c.Coordinator`. This commit folds the interface into the implementing class and deletes the associated dead code in `GatewayService` and friends that was being maintained in 7.x to preserve compatibility with 6.x. * Remove action from operator-privileges test list
1 parent b2ed599 commit 238235c

File tree

20 files changed

+74
-468
lines changed

20 files changed

+74
-468
lines changed

server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/RareClusterStateIT.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.elasticsearch.cluster.service.ClusterService;
3131
import org.elasticsearch.common.settings.Settings;
3232
import org.elasticsearch.core.TimeValue;
33-
import org.elasticsearch.discovery.Discovery;
3433
import org.elasticsearch.index.Index;
3534
import org.elasticsearch.index.IndexService;
3635
import org.elasticsearch.index.mapper.DocumentMapper;
@@ -129,12 +128,12 @@ private <Req extends ActionRequest, Res extends ActionResponse> ActionFuture<Res
129128
ActionRequestBuilder<Req, Res> req) throws Exception {
130129
// Wait for no publication in progress to not accidentally cancel a publication different from the one triggered by the given
131130
// request.
132-
final Coordinator masterCoordinator = (Coordinator) internalCluster().getCurrentMasterNodeInstance(Discovery.class);
131+
final Coordinator masterCoordinator = internalCluster().getCurrentMasterNodeInstance(Coordinator.class);
133132
assertBusy(() -> {
134133
assertFalse(masterCoordinator.publicationInProgress());
135134
final long applierVersion = masterCoordinator.getApplierState().version();
136-
for (Discovery instance : internalCluster().getInstances(Discovery.class)) {
137-
assertEquals(((Coordinator) instance).getApplierState().version(), applierVersion);
135+
for (Coordinator instance : internalCluster().getInstances(Coordinator.class)) {
136+
assertEquals(instance.getApplierState().version(), applierVersion);
138137
}
139138
});
140139
ActionFuture<Res> future = req.execute();

server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/ZenDiscoveryIT.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.elasticsearch.common.xcontent.ToXContent;
2424
import org.elasticsearch.common.xcontent.XContentBuilder;
2525
import org.elasticsearch.common.xcontent.XContentFactory;
26-
import org.elasticsearch.discovery.Discovery;
2726
import org.elasticsearch.discovery.DiscoveryStats;
2827
import org.elasticsearch.test.ESIntegTestCase;
2928
import org.elasticsearch.test.TestCustomMetadata;
@@ -81,7 +80,7 @@ public void testHandleNodeJoin_incompatibleClusterState() {
8180
String masterNode = internalCluster().startMasterOnlyNode();
8281
String node1 = internalCluster().startNode();
8382
ClusterService clusterService = internalCluster().getInstance(ClusterService.class, node1);
84-
Coordinator coordinator = (Coordinator) internalCluster().getInstance(Discovery.class, masterNode);
83+
Coordinator coordinator = internalCluster().getInstance(Coordinator.class, masterNode);
8584
final ClusterState state = clusterService.state();
8685
Metadata.Builder mdBuilder = Metadata.builder(state.metadata());
8786
mdBuilder.putCustom(CustomMetadata.TYPE, new CustomMetadata("data"));

server/src/internalClusterTest/java/org/elasticsearch/gateway/MetadataNodesIT.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import org.elasticsearch.cluster.metadata.IndexMetadata;
1515
import org.elasticsearch.common.collect.ImmutableOpenMap;
1616
import org.elasticsearch.common.settings.Settings;
17-
import org.elasticsearch.discovery.Discovery;
1817
import org.elasticsearch.env.NodeEnvironment;
1918
import org.elasticsearch.index.Index;
2019
import org.elasticsearch.test.ESIntegTestCase;
@@ -184,7 +183,7 @@ private boolean indexDirectoryExists(String nodeName, Index index) {
184183
}
185184

186185
private ImmutableOpenMap<String, IndexMetadata> getIndicesMetadataOnNode(String nodeName) {
187-
final Coordinator coordinator = (Coordinator) internalCluster().getInstance(Discovery.class, nodeName);
186+
final Coordinator coordinator = internalCluster().getInstance(Coordinator.class, nodeName);
188187
return coordinator.getApplierState().getMetadata().getIndices();
189188
}
190189
}

server/src/main/java/org/elasticsearch/action/ActionModule.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@
244244
import org.elasticsearch.common.settings.IndexScopedSettings;
245245
import org.elasticsearch.common.settings.Settings;
246246
import org.elasticsearch.common.settings.SettingsFilter;
247-
import org.elasticsearch.gateway.TransportNodesListGatewayMetaState;
248247
import org.elasticsearch.gateway.TransportNodesListGatewayStartedShards;
249248
import org.elasticsearch.index.seqno.GlobalCheckpointSyncAction;
250249
import org.elasticsearch.index.seqno.RetentionLeaseActions;
@@ -628,7 +627,6 @@ public <Request extends ActionRequest, Response extends ActionResponse> void reg
628627
// internal actions
629628
actions.register(GlobalCheckpointSyncAction.TYPE, GlobalCheckpointSyncAction.class);
630629
actions.register(TransportNodesSnapshotsStatus.TYPE, TransportNodesSnapshotsStatus.class);
631-
actions.register(TransportNodesListGatewayMetaState.TYPE, TransportNodesListGatewayMetaState.class);
632630
actions.register(TransportVerifyShardBeforeCloseAction.TYPE, TransportVerifyShardBeforeCloseAction.class);
633631
actions.register(TransportVerifyShardIndexBlockAction.TYPE, TransportVerifyShardIndexBlockAction.class);
634632
actions.register(TransportNodesListGatewayStartedShards.TYPE, TransportNodesListGatewayStartedShards.class);

server/src/main/java/org/elasticsearch/cluster/ClusterState.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
package org.elasticsearch.cluster;
1010

1111
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
12-
1312
import org.elasticsearch.Version;
1413
import org.elasticsearch.cluster.block.ClusterBlock;
1514
import org.elasticsearch.cluster.block.ClusterBlocks;
15+
import org.elasticsearch.cluster.coordination.ClusterStatePublisher;
1616
import org.elasticsearch.cluster.coordination.CoordinationMetadata;
1717
import org.elasticsearch.cluster.coordination.CoordinationMetadata.VotingConfigExclusion;
1818
import org.elasticsearch.cluster.coordination.CoordinationMetadata.VotingConfiguration;
@@ -40,7 +40,6 @@
4040
import org.elasticsearch.common.settings.Settings;
4141
import org.elasticsearch.common.xcontent.ToXContentFragment;
4242
import org.elasticsearch.common.xcontent.XContentBuilder;
43-
import org.elasticsearch.discovery.Discovery;
4443

4544
import java.io.IOException;
4645
import java.util.EnumSet;
@@ -54,8 +53,8 @@
5453
* <p>
5554
* The cluster state object is immutable with the exception of the {@link RoutingNodes} structure, which is built on demand from the {@link
5655
* RoutingTable}. The cluster state can be updated only on the master node. All updates are performed by on a single thread and controlled
57-
* by the {@link ClusterService}. After every update the {@link Discovery#publish} method publishes a new version of the cluster state to
58-
* all other nodes in the cluster.
56+
* by the {@link ClusterService}. After every update the {@link ClusterStatePublisher#publish} method publishes a new version of the cluster
57+
* state to all other nodes in the cluster.
5958
* <p>
6059
* Implements the {@link Diffable} interface in order to support publishing of cluster state differences instead of the entire state on each
6160
* change. The publishing mechanism only sends differences to a node if this node was present in the previous version of the cluster state.

server/src/main/java/org/elasticsearch/cluster/coordination/Coordinator.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import org.apache.lucene.util.SetOnce;
1515
import org.elasticsearch.action.ActionListener;
1616
import org.elasticsearch.cluster.ClusterName;
17-
import org.elasticsearch.cluster.ClusterStatePublicationEvent;
1817
import org.elasticsearch.cluster.ClusterState;
18+
import org.elasticsearch.cluster.ClusterStatePublicationEvent;
1919
import org.elasticsearch.cluster.ClusterStateTaskConfig;
2020
import org.elasticsearch.cluster.ClusterStateUpdateTask;
2121
import org.elasticsearch.cluster.LocalClusterUpdateTask;
@@ -34,25 +34,24 @@
3434
import org.elasticsearch.cluster.service.ClusterApplier;
3535
import org.elasticsearch.cluster.service.ClusterApplierService;
3636
import org.elasticsearch.cluster.service.MasterService;
37-
import org.elasticsearch.common.util.BigArrays;
38-
import org.elasticsearch.core.Nullable;
3937
import org.elasticsearch.common.Priority;
4038
import org.elasticsearch.common.Strings;
4139
import org.elasticsearch.common.component.AbstractLifecycleComponent;
4240
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
43-
import org.elasticsearch.core.Releasable;
4441
import org.elasticsearch.common.settings.ClusterSettings;
4542
import org.elasticsearch.common.settings.Setting;
4643
import org.elasticsearch.common.settings.Settings;
4744
import org.elasticsearch.common.transport.TransportAddress;
48-
import org.elasticsearch.core.Releasables;
49-
import org.elasticsearch.core.TimeValue;
45+
import org.elasticsearch.common.util.BigArrays;
5046
import org.elasticsearch.common.util.concurrent.EsExecutors;
5147
import org.elasticsearch.common.util.concurrent.ListenableFuture;
5248
import org.elasticsearch.common.xcontent.XContentHelper;
5349
import org.elasticsearch.common.xcontent.json.JsonXContent;
50+
import org.elasticsearch.core.Nullable;
51+
import org.elasticsearch.core.Releasable;
52+
import org.elasticsearch.core.Releasables;
53+
import org.elasticsearch.core.TimeValue;
5454
import org.elasticsearch.discovery.ConfiguredHostsResolver;
55-
import org.elasticsearch.discovery.Discovery;
5655
import org.elasticsearch.discovery.DiscoveryModule;
5756
import org.elasticsearch.discovery.DiscoveryStats;
5857
import org.elasticsearch.discovery.HandshakingTransportAddressConnector;
@@ -88,7 +87,7 @@
8887
import static org.elasticsearch.gateway.GatewayService.STATE_NOT_RECOVERED_BLOCK;
8988
import static org.elasticsearch.monitor.StatusInfo.Status.UNHEALTHY;
9089

91-
public class Coordinator extends AbstractLifecycleComponent implements Discovery {
90+
public class Coordinator extends AbstractLifecycleComponent implements ClusterStatePublisher {
9291

9392
private static final Logger logger = LogManager.getLogger(Coordinator.class);
9493

@@ -729,7 +728,6 @@ protected void doStart() {
729728
}
730729
}
731730

732-
@Override
733731
public DiscoveryStats stats() {
734732
return new DiscoveryStats(
735733
new PendingClusterStateStats(0, 0, 0),
@@ -738,7 +736,6 @@ public DiscoveryStats stats() {
738736
);
739737
}
740738

741-
@Override
742739
public void startInitialJoin() {
743740
synchronized (mutex) {
744741
becomeCandidate("startInitialJoin");

server/src/main/java/org/elasticsearch/cluster/service/MasterService.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import org.elasticsearch.common.util.concurrent.ThreadContext;
4343
import org.elasticsearch.core.Nullable;
4444
import org.elasticsearch.core.TimeValue;
45-
import org.elasticsearch.discovery.Discovery;
4645
import org.elasticsearch.node.Node;
4746
import org.elasticsearch.threadpool.Scheduler;
4847
import org.elasticsearch.threadpool.ThreadPool;
@@ -462,7 +461,7 @@ void clusterStatePublished(ClusterStatePublicationEvent clusterStatePublicationE
462461
taskInputs.executor.clusterStatePublished(clusterStatePublicationEvent);
463462
}
464463

465-
Discovery.AckListener createAckListener(ThreadPool threadPool, ClusterState newClusterState) {
464+
ClusterStatePublisher.AckListener createAckListener(ThreadPool threadPool, ClusterState newClusterState) {
466465
return new DelegatingAckListener(nonFailedTasks.stream()
467466
.filter(task -> task.listener instanceof AckedClusterStateTaskListener)
468467
.map(task -> new AckCountDownListener((AckedClusterStateTaskListener) task.listener, newClusterState.version(),
@@ -632,30 +631,30 @@ private void logExecutionTime(TimeValue executionTime, String activity, String s
632631
}
633632
}
634633

635-
private static class DelegatingAckListener implements Discovery.AckListener {
634+
private static class DelegatingAckListener implements ClusterStatePublisher.AckListener {
636635

637-
private final List<Discovery.AckListener> listeners;
636+
private final List<ClusterStatePublisher.AckListener> listeners;
638637

639-
private DelegatingAckListener(List<Discovery.AckListener> listeners) {
638+
private DelegatingAckListener(List<ClusterStatePublisher.AckListener> listeners) {
640639
this.listeners = listeners;
641640
}
642641

643642
@Override
644643
public void onCommit(TimeValue commitTime) {
645-
for (Discovery.AckListener listener : listeners) {
644+
for (ClusterStatePublisher.AckListener listener : listeners) {
646645
listener.onCommit(commitTime);
647646
}
648647
}
649648

650649
@Override
651650
public void onNodeAck(DiscoveryNode node, @Nullable Exception e) {
652-
for (Discovery.AckListener listener : listeners) {
651+
for (ClusterStatePublisher.AckListener listener : listeners) {
653652
listener.onNodeAck(node, e);
654653
}
655654
}
656655
}
657656

658-
private static class AckCountDownListener implements Discovery.AckListener {
657+
private static class AckCountDownListener implements ClusterStatePublisher.AckListener {
659658

660659
private static final Logger logger = LogManager.getLogger(AckCountDownListener.class);
661660

server/src/main/java/org/elasticsearch/discovery/Discovery.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

server/src/main/java/org/elasticsearch/discovery/DiscoveryModule.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public class DiscoveryModule {
7070
public static final Setting<String> ELECTION_STRATEGY_SETTING =
7171
new Setting<>("cluster.election.strategy", DEFAULT_ELECTION_STRATEGY, Function.identity(), Property.NodeScope);
7272

73-
private final Discovery discovery;
73+
private final Coordinator coordinator;
7474

7575
public DiscoveryModule(
7676
Settings settings,
@@ -145,7 +145,7 @@ public DiscoveryModule(
145145
}
146146

147147
if (ZEN2_DISCOVERY_TYPE.equals(discoveryType) || SINGLE_NODE_DISCOVERY_TYPE.equals(discoveryType)) {
148-
discovery = new Coordinator(
148+
coordinator = new Coordinator(
149149
NODE_NAME_SETTING.get(settings),
150150
settings,
151151
clusterSettings,
@@ -173,7 +173,7 @@ public static boolean isSingleNodeDiscovery(Settings settings) {
173173
return SINGLE_NODE_DISCOVERY_TYPE.equals(DISCOVERY_TYPE_SETTING.get(settings));
174174
}
175175

176-
public Discovery getDiscovery() {
177-
return discovery;
176+
public Coordinator getCoordinator() {
177+
return coordinator;
178178
}
179179
}

0 commit comments

Comments
 (0)