Skip to content

Commit 3d3224e

Browse files
authored
Various Datastream Reindex Fixes (elastic#121376) (elastic#121601)
* Fix incorrect value of reindex_required flag on ignored index warning * Datastream reindex now uses unverified write block to allow retrying failed reindex
1 parent c0dcc9f commit 3d3224e

File tree

4 files changed

+16
-5
lines changed

4 files changed

+16
-5
lines changed

x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DataStreamDeprecationChecker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ static DeprecationIssue ignoredOldIndicesCheck(DataStream dataStream, ClusterSta
102102
+ "OK to remain read-only after upgrade",
103103
false,
104104
ofEntries(
105-
entry("reindex_required", true),
105+
entry("reindex_required", false),
106106
entry("total_backing_indices", backingIndices.size()),
107107
entry("ignored_indices_requiring_upgrade_count", ignoredIndices.size()),
108108
entry("ignored_indices_requiring_upgrade", ignoredIndices)

x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/DataStreamDeprecationCheckerTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ public void testOldIndicesIgnoredWarningCheck() {
290290
+ "OK to remain read-only after upgrade",
291291
false,
292292
ofEntries(
293-
entry("reindex_required", true),
293+
entry("reindex_required", false),
294294
entry("total_backing_indices", oldIndexCount + newIndexCount),
295295
entry("ignored_indices_requiring_upgrade_count", expectedIndices.size()),
296296
entry("ignored_indices_requiring_upgrade", expectedIndices)

x-pack/plugin/migrate/src/internalClusterTest/java/org/elasticsearch/xpack/migrate/action/ReindexDatastreamIndexTransportActionIT.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
1717
import org.elasticsearch.action.admin.indices.rollover.RolloverRequest;
1818
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
19+
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
1920
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
2021
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
2122
import org.elasticsearch.action.admin.indices.template.delete.TransportDeleteIndexTemplateAction;
@@ -27,6 +28,7 @@
2728
import org.elasticsearch.cluster.metadata.ComposableIndexTemplate;
2829
import org.elasticsearch.cluster.metadata.IndexMetadata;
2930
import org.elasticsearch.cluster.metadata.MappingMetadata;
31+
import org.elasticsearch.cluster.metadata.MetadataIndexStateService;
3032
import org.elasticsearch.cluster.metadata.Template;
3133
import org.elasticsearch.common.compress.CompressedXContent;
3234
import org.elasticsearch.common.settings.Settings;
@@ -50,6 +52,7 @@
5052
import java.util.Locale;
5153
import java.util.Map;
5254

55+
import static java.lang.Boolean.parseBoolean;
5356
import static org.elasticsearch.cluster.metadata.MetadataIndexTemplateService.DEFAULT_TIMESTAMP_FIELD;
5457
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
5558
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount;
@@ -147,6 +150,13 @@ public void testSetSourceToBlockWrites() throws Exception {
147150
// call reindex
148151
client().execute(ReindexDataStreamIndexAction.INSTANCE, new ReindexDataStreamIndexAction.Request(sourceIndex)).actionGet();
149152

153+
// Assert that source index is now read-only but not verified read-only
154+
GetSettingsResponse getSettingsResponse = admin().indices().getSettings(new GetSettingsRequest().indices(sourceIndex)).actionGet();
155+
assertTrue(parseBoolean(getSettingsResponse.getSetting(sourceIndex, IndexMetadata.SETTING_BLOCKS_WRITE)));
156+
assertFalse(
157+
parseBoolean(getSettingsResponse.getSetting(sourceIndex, MetadataIndexStateService.VERIFIED_READ_ONLY_SETTING.getKey()))
158+
);
159+
150160
// assert that write to source fails
151161
var indexReq = new IndexRequest(sourceIndex).source(jsonBuilder().startObject().field("field", "1").endObject());
152162
assertThrows(ClusterBlockException.class, () -> client().index(indexReq).actionGet());
@@ -252,9 +262,9 @@ public void testReadOnlyBlocksNotAddedBack() {
252262
.getDestIndex();
253263

254264
var settingsResponse = indicesAdmin().getSettings(new GetSettingsRequest().indices(destIndex)).actionGet();
255-
assertFalse(Boolean.parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_READ_ONLY)));
256-
assertFalse(Boolean.parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_READ_ONLY_ALLOW_DELETE)));
257-
assertFalse(Boolean.parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_BLOCKS_WRITE)));
265+
assertFalse(parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_READ_ONLY)));
266+
assertFalse(parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_READ_ONLY_ALLOW_DELETE)));
267+
assertFalse(parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_BLOCKS_WRITE)));
258268

259269
cleanupMetadataBlocks(sourceIndex);
260270
cleanupMetadataBlocks(destIndex);

x-pack/plugin/migrate/src/main/java/org/elasticsearch/xpack/migrate/action/ReindexDataStreamIndexTransportAction.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ private void addBlockToIndex(
342342
TaskId parentTaskId
343343
) {
344344
AddIndexBlockRequest addIndexBlockRequest = new AddIndexBlockRequest(block, index);
345+
addIndexBlockRequest.markVerified(false);
345346
addIndexBlockRequest.setParentTask(parentTaskId);
346347
client.admin().indices().execute(TransportAddIndexBlockAction.TYPE, addIndexBlockRequest, listener);
347348
}

0 commit comments

Comments
 (0)