Skip to content

Commit 9c2bfed

Browse files
author
Andrey Ershov
committed
Do not hide coordinationMetaData and clusterUUID
1 parent 66e90e7 commit 9c2bfed

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

server/src/main/java/org/elasticsearch/gateway/ClusterStateUpdaters.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,14 +153,19 @@ static ClusterState mixCurrentStateAndRecoveredState(final ClusterState currentS
153153

154154
public static ClusterState hideStateIfNotRecovered(ClusterState state) {
155155
if (state.blocks().hasGlobalBlock(STATE_NOT_RECOVERED_BLOCK)) {
156-
ClusterBlocks.Builder blocks = ClusterBlocks.builder().blocks(state.blocks());
156+
final ClusterBlocks.Builder blocks = ClusterBlocks.builder().blocks(state.blocks());
157157
blocks.removeGlobalBlock(MetaData.CLUSTER_READ_ONLY_BLOCK);
158158
blocks.removeGlobalBlock(MetaData.CLUSTER_READ_ONLY_ALLOW_DELETE_BLOCK);
159159
for (IndexMetaData indexMetaData: state.metaData()) {
160160
blocks.removeIndexBlocks(indexMetaData.getIndex().getName());
161161
}
162+
final MetaData metaData = MetaData.builder()
163+
.clusterUUID(state.metaData().clusterUUID())
164+
.coordinationMetaData(state.metaData().coordinationMetaData())
165+
.build();
166+
162167
return ClusterState.builder(state)
163-
.metaData(MetaData.EMPTY_META_DATA)
168+
.metaData(metaData)
164169
.blocks(blocks.build())
165170
.build();
166171
}

server/src/test/java/org/elasticsearch/gateway/ClusterStateUpdatersTests.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.elasticsearch.Version;
2222
import org.elasticsearch.cluster.ClusterState;
2323
import org.elasticsearch.cluster.block.ClusterBlocks;
24+
import org.elasticsearch.cluster.coordination.CoordinationMetaData;
2425
import org.elasticsearch.cluster.metadata.IndexMetaData;
2526
import org.elasticsearch.cluster.metadata.MetaData;
2627
import org.elasticsearch.cluster.node.DiscoveryNode;
@@ -36,6 +37,7 @@
3637
import org.elasticsearch.test.ESTestCase;
3738

3839
import java.io.IOException;
40+
import java.util.Arrays;
3941
import java.util.Collections;
4042
import java.util.Set;
4143
import java.util.function.BiConsumer;
@@ -287,9 +289,18 @@ public void testDoNotHideStateIfRecovered() {
287289
public void testHideStateIfNotRecovered() {
288290
final IndexMetaData indexMetaData = createIndexMetaData("test",
289291
Settings.builder().put(IndexMetaData.INDEX_READ_ONLY_SETTING.getKey(), true).build());
292+
final String clusterUUID = UUIDs.randomBase64UUID();
293+
final CoordinationMetaData coordinationMetaData = new CoordinationMetaData(randomLong(),
294+
new CoordinationMetaData.VotingConfiguration(Sets.newHashSet(generateRandomStringArray(5, 5, false))),
295+
new CoordinationMetaData.VotingConfiguration(Sets.newHashSet(generateRandomStringArray(5, 5, false))),
296+
Arrays.stream(generateRandomStringArray(5, 5, false))
297+
.map(id -> new CoordinationMetaData.VotingTombstone(id, id))
298+
.collect(Collectors.toSet()));
290299
final MetaData metaData = MetaData.builder()
291300
.persistentSettings(Settings.builder().put(MetaData.SETTING_READ_ONLY_SETTING.getKey(), true).build())
292301
.transientSettings(Settings.builder().put(MetaData.SETTING_READ_ONLY_ALLOW_DELETE_SETTING.getKey(), true).build())
302+
.clusterUUID(clusterUUID)
303+
.coordinationMetaData(coordinationMetaData)
293304
.put(indexMetaData, false)
294305
.build();
295306
final ClusterState initialState = ClusterState.builder(ClusterState.EMPTY_STATE)
@@ -302,8 +313,12 @@ public void testHideStateIfNotRecovered() {
302313
.andThen(state -> setLocalNode(state, localNode))
303314
.andThen(ClusterStateUpdaters::recoverClusterBlocks)
304315
.apply(initialState);
316+
305317
final ClusterState hiddenState = hideStateIfNotRecovered(updatedState);
306-
assertTrue(MetaData.isGlobalStateEquals(hiddenState.metaData(), MetaData.EMPTY_META_DATA));
318+
319+
assertTrue(MetaData.isGlobalStateEquals(hiddenState.metaData(),
320+
MetaData.builder().coordinationMetaData(coordinationMetaData).clusterUUID(clusterUUID).build()));
321+
assertThat(hiddenState.metaData().indices().size(), is(0));
307322
assertTrue(hiddenState.blocks().hasGlobalBlock(STATE_NOT_RECOVERED_BLOCK));
308323
assertFalse(hiddenState.blocks().hasGlobalBlock(MetaData.CLUSTER_READ_ONLY_BLOCK));
309324
assertFalse(hiddenState.blocks().hasGlobalBlock(MetaData.CLUSTER_READ_ONLY_ALLOW_DELETE_BLOCK));

0 commit comments

Comments
 (0)