diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/TransportFreezeIndexAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/TransportFreezeIndexAction.java index 3031ec5b2a409..1efe5389d81b2 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/TransportFreezeIndexAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/TransportFreezeIndexAction.java @@ -183,6 +183,7 @@ public ClusterState execute(ClusterState currentState) { throw new IllegalStateException("index [" + index.getName() + "] is not closed"); } final IndexMetaData.Builder imdBuilder = IndexMetaData.builder(meta); + imdBuilder.settingsVersion(meta.getSettingsVersion() + 1); final Settings.Builder settingsBuilder = Settings.builder() .put(currentState.metaData().index(index).getSettings()) diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/index/engine/FrozenIndexTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/index/engine/FrozenIndexTests.java index 884dafdcd395b..c0493b6efd1fe 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/index/engine/FrozenIndexTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/index/engine/FrozenIndexTests.java @@ -45,6 +45,7 @@ import static org.elasticsearch.action.support.WriteRequest.RefreshPolicy.IMMEDIATE; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount; +import static org.hamcrest.Matchers.equalTo; public class FrozenIndexTests extends ESSingleNodeTestCase { @@ -324,4 +325,19 @@ public void testUnfreezeClosedIndex() throws ExecutionException, InterruptedExce assertEquals(IndexMetaData.State.OPEN, client().admin().cluster().prepareState().get().getState().metaData().index("idx").getState()); } + + public void testFreezeIndexIncreasesIndexSettingsVersion() throws ExecutionException, InterruptedException { + final String index = "test"; + createIndex(index, Settings.builder().put("index.number_of_shards", 1).put("index.number_of_replicas", 0).build()); + client().prepareIndex(index, "_doc").setSource("field", "value").execute().actionGet(); + + final long settingsVersion = client().admin().cluster().prepareState().get() + .getState().metaData().index(index).getSettingsVersion(); + + XPackClient xPackClient = new XPackClient(client()); + assertAcked(xPackClient.freeze(new TransportFreezeIndexAction.FreezeRequest(index))); + assertIndexFrozen(index); + assertThat(client().admin().cluster().prepareState().get().getState().metaData().index(index).getSettingsVersion(), + equalTo(settingsVersion + 1)); + } }