Skip to content

Commit 6a98383

Browse files
authored
Always return metadata version if metadata is requested (#37674)
If the indices of a ClusterStateRequest are specified, we fail to include the cluster state metadata version in the response. Relates #37633
1 parent 6a5d9d9 commit 6a98383

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

server/src/main/java/org/elasticsearch/action/admin/cluster/state/TransportClusterStateAction.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ private void buildResponse(final ClusterStateRequest request,
155155

156156
if (request.metaData()) {
157157
if (request.indices().length > 0) {
158+
mdBuilder.version(currentState.metaData().version());
158159
String[] indices = indexNameExpressionResolver.concreteIndexNames(currentState, request);
159160
for (String filteredIndex : indices) {
160161
IndexMetaData indexMetaData = currentState.metaData().index(filteredIndex);

server/src/test/java/org/elasticsearch/cluster/SimpleClusterStateIT.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
6767
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertIndexTemplateExists;
6868
import static org.hamcrest.Matchers.equalTo;
69+
import static org.hamcrest.Matchers.greaterThan;
6970
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
7071
import static org.hamcrest.Matchers.is;
7172

@@ -118,6 +119,23 @@ public void testMetadata() throws Exception {
118119
assertThat(clusterStateResponse.getState().metaData().indices().size(), is(0));
119120
}
120121

122+
public void testMetadataVersion() {
123+
createIndex("index-1");
124+
createIndex("index-2");
125+
long metadataVersion = client().admin().cluster().prepareState().get().getState().metaData().version();
126+
assertThat(metadataVersion, greaterThan(0L));
127+
assertThat(client().admin().cluster().prepareState().setIndices("index-1").get().getState().metaData().version(),
128+
equalTo(metadataVersion));
129+
assertThat(client().admin().cluster().prepareState().setIndices("index-2").get().getState().metaData().version(),
130+
equalTo(metadataVersion));
131+
assertThat(client().admin().cluster().prepareState().setIndices("*").get().getState().metaData().version(),
132+
equalTo(metadataVersion));
133+
assertThat(client().admin().cluster().prepareState().setIndices("not-found").get().getState().metaData().version(),
134+
equalTo(metadataVersion));
135+
assertThat(client().admin().cluster().prepareState().clear().setMetaData(false).get().getState().metaData().version(),
136+
equalTo(0L));
137+
}
138+
121139
public void testIndexTemplates() throws Exception {
122140
client().admin().indices().preparePutTemplate("foo_template")
123141
.setPatterns(Collections.singletonList("te*"))

0 commit comments

Comments
 (0)