|
16 | 16 | import org.elasticsearch.common.settings.Settings;
|
17 | 17 | import org.elasticsearch.core.Strings;
|
18 | 18 | import org.elasticsearch.core.TimeValue;
|
| 19 | +import org.elasticsearch.index.reindex.ReindexAction; |
| 20 | +import org.elasticsearch.index.reindex.ReindexRequest; |
19 | 21 | import org.elasticsearch.xcontent.XContentBuilder;
|
20 | 22 | import org.elasticsearch.xcontent.XContentFactory;
|
21 | 23 | import org.elasticsearch.xcontent.XContentType;
|
|
25 | 27 | import org.elasticsearch.xpack.core.transform.TransformDeprecations;
|
26 | 28 | import org.elasticsearch.xpack.core.transform.TransformField;
|
27 | 29 | import org.elasticsearch.xpack.core.transform.action.GetTransformAction;
|
| 30 | +import org.elasticsearch.xpack.core.transform.action.PutTransformAction; |
28 | 31 | import org.elasticsearch.xpack.core.transform.action.StartTransformAction;
|
29 | 32 | import org.elasticsearch.xpack.core.transform.action.StopTransformAction;
|
30 | 33 | import org.elasticsearch.xpack.core.transform.action.UpdateTransformAction;
|
| 34 | +import org.elasticsearch.xpack.core.transform.transforms.DestConfig; |
| 35 | +import org.elasticsearch.xpack.core.transform.transforms.SourceConfig; |
31 | 36 | import org.elasticsearch.xpack.core.transform.transforms.TransformConfig;
|
32 | 37 | import org.elasticsearch.xpack.core.transform.transforms.TransformConfigUpdate;
|
33 | 38 | import org.elasticsearch.xpack.core.transform.transforms.persistence.TransformInternalIndexConstants;
|
| 39 | +import org.elasticsearch.xpack.core.transform.transforms.pivot.PivotConfigTests; |
34 | 40 | import org.elasticsearch.xpack.core.transform.utils.TransformConfigVersionUtils;
|
35 | 41 | import org.elasticsearch.xpack.transform.TransformSingleNodeTestCase;
|
36 | 42 | import org.elasticsearch.xpack.transform.persistence.TransformInternalIndex;
|
@@ -253,4 +259,65 @@ public void testStartReplacesDeprecatedTransformSettings() throws Exception {
|
253 | 259 | assertMaxPageSearchSizeInSettings(transformId, expectedMaxPageSearchSize);
|
254 | 260 | }
|
255 | 261 |
|
| 262 | + public void testMigratedTransformIndex() { |
| 263 | + // create transform |
| 264 | + var sourceIndex = "source-index"; |
| 265 | + createSourceIndex(sourceIndex); |
| 266 | + var transformId = "transform-migrated-system-index"; |
| 267 | + |
| 268 | + var sourceConfig = new SourceConfig(sourceIndex); |
| 269 | + var destConfig = new DestConfig("some-dest-index", null, null); |
| 270 | + var config = new TransformConfig( |
| 271 | + transformId, |
| 272 | + sourceConfig, |
| 273 | + destConfig, |
| 274 | + null, |
| 275 | + null, |
| 276 | + null, |
| 277 | + PivotConfigTests.randomPivotConfig(), |
| 278 | + null, |
| 279 | + null, |
| 280 | + null, |
| 281 | + null, |
| 282 | + null, |
| 283 | + null, |
| 284 | + null |
| 285 | + ); |
| 286 | + var putTransform = new PutTransformAction.Request(config, true, TimeValue.THIRTY_SECONDS); |
| 287 | + assertTrue(client().execute(PutTransformAction.INSTANCE, putTransform).actionGet().isAcknowledged()); |
| 288 | + |
| 289 | + // simulate migration by reindexing and aliasing |
| 290 | + var newSystemIndex = TransformInternalIndexConstants.LATEST_INDEX_NAME + "-reindexed"; |
| 291 | + var reindexRequest = new ReindexRequest(); |
| 292 | + reindexRequest.setSourceIndices(TransformInternalIndexConstants.LATEST_INDEX_NAME); |
| 293 | + reindexRequest.setDestIndex(newSystemIndex); |
| 294 | + reindexRequest.setRefresh(true); |
| 295 | + client().execute(ReindexAction.INSTANCE, reindexRequest).actionGet(); |
| 296 | + |
| 297 | + var aliasesRequest = admin().indices().prepareAliases(TimeValue.THIRTY_SECONDS, TimeValue.THIRTY_SECONDS); |
| 298 | + aliasesRequest.removeIndex(TransformInternalIndexConstants.LATEST_INDEX_NAME); |
| 299 | + aliasesRequest.addAlias(newSystemIndex, TransformInternalIndexConstants.LATEST_INDEX_NAME); |
| 300 | + aliasesRequest.execute().actionGet(); |
| 301 | + |
| 302 | + // update should succeed |
| 303 | + var updateConfig = new TransformConfigUpdate( |
| 304 | + sourceConfig, |
| 305 | + new DestConfig("some-new-dest-index", null, null), |
| 306 | + null, |
| 307 | + null, |
| 308 | + null, |
| 309 | + null, |
| 310 | + null, |
| 311 | + null |
| 312 | + ); |
| 313 | + var updateRequest = new UpdateTransformAction.Request(updateConfig, transformId, true, TimeValue.THIRTY_SECONDS); |
| 314 | + client().execute(UpdateTransformAction.INSTANCE, updateRequest).actionGet(); |
| 315 | + |
| 316 | + // verify update succeeded |
| 317 | + var getTransformRequest = new GetTransformAction.Request(transformId); |
| 318 | + var getTransformResponse = client().execute(GetTransformAction.INSTANCE, getTransformRequest).actionGet(); |
| 319 | + var transformConfig = getTransformResponse.getTransformConfigurations().get(0); |
| 320 | + assertThat(transformConfig.getDestination().getIndex(), equalTo("some-new-dest-index")); |
| 321 | + } |
| 322 | + |
256 | 323 | }
|
0 commit comments