Skip to content

Commit 143fc1c

Browse files
committed
make everyone happy
1 parent 8e3127b commit 143fc1c

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

server/src/main/java/org/elasticsearch/repositories/RepositoriesService.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.elasticsearch.cluster.metadata.RepositoriesMetadata;
4040
import org.elasticsearch.cluster.metadata.RepositoryMetadata;
4141
import org.elasticsearch.cluster.node.DiscoveryNode;
42+
import org.elasticsearch.cluster.node.DiscoveryNodeRole;
4243
import org.elasticsearch.cluster.service.ClusterService;
4344
import org.elasticsearch.common.Strings;
4445
import org.elasticsearch.common.component.AbstractLifecycleComponent;
@@ -56,6 +57,7 @@
5657
import java.util.HashMap;
5758
import java.util.List;
5859
import java.util.Map;
60+
import java.util.Set;
5961

6062
/**
6163
* Service responsible for maintaining and providing access to snapshot repositories on nodes.
@@ -86,7 +88,9 @@ public RepositoriesService(Settings settings, ClusterService clusterService, Tra
8688
// Doesn't make sense to maintain repositories on non-master and non-data nodes
8789
// Nothing happens there anyway
8890
if (DiscoveryNode.isDataNode(settings) || DiscoveryNode.isMasterNode(settings)) {
89-
clusterService.addHighPriorityApplier(this);
91+
if (isDedicatedVotingOnlyNode(DiscoveryNode.getRolesFromSettings(settings)) == false) {
92+
clusterService.addHighPriorityApplier(this);
93+
}
9094
}
9195
this.verifyAction = new VerifyNodeRepositoryAction(transportService, clusterService, this);
9296
}
@@ -279,9 +283,9 @@ protected void doRun() {
279283
});
280284
}
281285

282-
static boolean isDedicatedVotingOnlyNode(DiscoveryNode node) {
283-
return node.isMasterNode() && node.isDataNode() == false &&
284-
node.getRoles().stream().anyMatch(role -> role.roleName().equals("voting_only"));
286+
static boolean isDedicatedVotingOnlyNode(Set<DiscoveryNodeRole> roles) {
287+
return roles.contains(DiscoveryNodeRole.MASTER_ROLE) && roles.contains(DiscoveryNodeRole.DATA_ROLE) == false &&
288+
roles.stream().anyMatch(role -> role.roleName().equals("voting_only"));
285289
}
286290

287291
/**
@@ -294,9 +298,6 @@ static boolean isDedicatedVotingOnlyNode(DiscoveryNode node) {
294298
public void applyClusterState(ClusterChangedEvent event) {
295299
try {
296300
final ClusterState state = event.state();
297-
if (isDedicatedVotingOnlyNode(state.nodes().getLocalNode())) {
298-
return;
299-
}
300301
RepositoriesMetadata oldMetadata = event.previousState().getMetadata().custom(RepositoriesMetadata.TYPE);
301302
RepositoriesMetadata newMetadata = state.getMetadata().custom(RepositoriesMetadata.TYPE);
302303

server/src/main/java/org/elasticsearch/repositories/VerifyNodeRepositoryAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void verify(String repository, String verificationToken, final ActionList
7676
final List<DiscoveryNode> nodes = new ArrayList<>();
7777
for (ObjectCursor<DiscoveryNode> cursor : masterAndDataNodes) {
7878
DiscoveryNode node = cursor.value;
79-
if (RepositoriesService.isDedicatedVotingOnlyNode(node) == false) {
79+
if (RepositoriesService.isDedicatedVotingOnlyNode(node.getRoles()) == false) {
8080
nodes.add(node);
8181
}
8282
}

0 commit comments

Comments
 (0)