Skip to content

Commit 54bfe73

Browse files
committed
Fix replica allocation test
Signed-off-by: Lakshya Taragi <lakshya.taragi@gmail.com>
1 parent bd1f717 commit 54bfe73

File tree

1 file changed

+38
-47
lines changed

1 file changed

+38
-47
lines changed

server/src/internalClusterTest/java/org/opensearch/remotemigration/RemoteMigrationAllocationDeciderIT.java

+38-47
Original file line numberDiff line numberDiff line change
@@ -255,95 +255,86 @@ public void testNewReplicaShardAllocationIfPrimaryShardOnRemoteNodeForRemoteStor
255255
logger.info("Initialize cluster");
256256
internalCluster().startClusterManagerOnlyNode();
257257

258-
logger.info("Add non-remote data node");
259-
String nonRemoteNodeName = internalCluster().startDataOnlyNode();
258+
logger.info("Add non-remote data nodes");
259+
String nonRemoteNodeName1 = internalCluster().startDataOnlyNode();
260+
String nonRemoteNodeName2 = internalCluster().startDataOnlyNode();
260261
internalCluster().validateClusterFormed();
261-
DiscoveryNode nonRemoteNode = assertNodeInCluster(nonRemoteNodeName);
262+
DiscoveryNode nonRemoteNode1 = assertNodeInCluster(nonRemoteNodeName1);
263+
DiscoveryNode nonRemoteNode2 = assertNodeInCluster(nonRemoteNodeName2);
262264

263-
logger.info("Allocate primary shard on non-remote node");
264-
createIndex(TEST_INDEX, 0);
265+
logger.info("Allocate primary and replica shard on non-remote nodes");
266+
createIndex(TEST_INDEX, 1);
265267
ensureGreen(TEST_INDEX);
266-
assertAllocation(true, nonRemoteNode);
267268

268269
logger.info("Set mixed mode");
269270
setClusterMode(MIXED.mode);
270271

271-
logger.info("Add remote data node");
272+
logger.info("Add remote data nodes");
272273
setAddRemote(true);
273274
String remoteNodeName1 = internalCluster().startDataOnlyNode();
275+
String remoteNodeName2 = internalCluster().startDataOnlyNode();
274276
internalCluster().validateClusterFormed();
275277
DiscoveryNode remoteNode1 = assertNodeInCluster(remoteNodeName1);
278+
DiscoveryNode remoteNode2 = assertNodeInCluster(remoteNodeName2);
276279

277280
logger.info("Set remote_store direction");
278281
setDirection(REMOTE_STORE.direction);
279282

280283
logger.info("Relocate primary shard to remote node");
281-
includeAllNodes();
284+
DiscoveryNode initialPrimaryNode = primaryNodeName(TEST_INDEX).equals(nonRemoteNodeName1) ? nonRemoteNode1 : nonRemoteNode2;
285+
DiscoveryNode initialReplicaNode = initialPrimaryNode.equals(nonRemoteNode1) ? nonRemoteNode2 : nonRemoteNode1;
282286
assertAcked(
283287
internalCluster().client()
284288
.admin()
285289
.cluster()
286290
.prepareReroute()
287-
.add(new MoveAllocationCommand(TEST_INDEX, 0, nonRemoteNodeName, remoteNodeName1))
291+
.add(new MoveAllocationCommand(TEST_INDEX, 0, initialPrimaryNode.getName(), remoteNodeName1))
288292
.get()
289293
);
290294
ensureGreen(TEST_INDEX);
291295
assertAllocation(true, remoteNode1);
292296

293-
logger.info("Verify expected decision for allocating a replica shard on non-remote node");
294-
excludeAllNodes();
295-
assertAcked(
296-
internalCluster().client()
297-
.admin()
298-
.indices()
299-
.prepareUpdateSettings()
300-
.setIndices(TEST_INDEX)
301-
.setSettings(Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1).build())
302-
.get()
303-
);
304-
ensureYellowAndNoInitializingShards(TEST_INDEX);
305-
Decision decision = getDecisionForTargetNode(nonRemoteNode, false, true, false);
297+
logger.info("Verify expected decision for relocating a replica shard on non-remote node");
298+
Decision decision = getDecisionForTargetNode(initialPrimaryNode, false, true, true);
306299
assertEquals(Decision.Type.YES, decision.type());
307300
assertEquals(
308-
"[remote_store migration_direction]: replica shard copy can be allocated to a non-remote node",
301+
"[remote_store migration_direction]: replica shard copy can be relocated to a non-remote node",
309302
decision.getExplanation().toLowerCase(Locale.ROOT)
310303
);
311304

312-
logger.info("Attempt free allocation of replica shard");
313-
attemptAllocation(null);
314-
315-
logger.info("Verify allocation of replica shard on non-remote node");
316-
ensureGreen(TEST_INDEX);
317-
assertAllocation(false, nonRemoteNode);
318-
319-
logger.info("Add another remote data node");
320-
String remoteNodeName2 = internalCluster().startDataOnlyNode();
321-
internalCluster().validateClusterFormed();
322-
DiscoveryNode remoteNode2 = assertNodeInCluster(remoteNodeName2);
323-
324-
logger.info("Verify expected decision for allocating a replica shard on remote node");
325-
excludeAllNodes();
305+
logger.info("Attempt relocation of replica shard to non-remote node");
326306
assertAcked(
327307
internalCluster().client()
328308
.admin()
329-
.indices()
330-
.prepareUpdateSettings()
331-
.setIndices(TEST_INDEX)
332-
.setSettings(Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 2).build())
309+
.cluster()
310+
.prepareReroute()
311+
.add(new MoveAllocationCommand(TEST_INDEX, 0, initialReplicaNode.getName(), initialPrimaryNode.getName()))
333312
.get()
334313
);
335-
ensureYellowAndNoInitializingShards(TEST_INDEX);
336-
decision = getDecisionForTargetNode(remoteNode2, false, true, false);
314+
315+
logger.info("Verify relocation of replica shard to non-remote node");
316+
ensureGreen(TEST_INDEX);
317+
assertAllocation(false, initialPrimaryNode);
318+
319+
logger.info("Verify expected decision for relocating a replica shard on remote node");
320+
decision = getDecisionForTargetNode(remoteNode2, false, true, true);
337321
assertEquals(Decision.Type.YES, decision.type());
338322
assertEquals(
339-
"[remote_store migration_direction]: replica shard copy can be allocated to a remote node since primary shard copy has been migrated to remote",
323+
"[remote_store migration_direction]: replica shard copy can be relocated to a remote node since primary shard copy has been migrated to remote",
340324
decision.getExplanation().toLowerCase(Locale.ROOT)
341325
);
342326

343-
logger.info("Attempt free allocation of replica shard");
344-
attemptAllocation(null);
327+
logger.info("Attempt relocation of replica shard to remote node");
328+
assertAcked(
329+
internalCluster().client()
330+
.admin()
331+
.cluster()
332+
.prepareReroute()
333+
.add(new MoveAllocationCommand(TEST_INDEX, 0, initialPrimaryNode.getName(), remoteNodeName2))
334+
.get()
335+
);
345336

346-
logger.info("Verify allocation of replica shard on remote node");
337+
logger.info("Verify relocation of replica shard to non-remote node");
347338
ensureGreen(TEST_INDEX);
348339
assertAllocation(false, remoteNode2);
349340
}

0 commit comments

Comments
 (0)