Skip to content

Commit 640043a

Browse files
committed
Retry membership change operations in test
They fail sometimes on CI.
1 parent f929ebd commit 640043a

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

src/test/java/com/rabbitmq/client/amqp/impl/ClusterTest.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ String deleteLeader(Consumer<String> deleteMemberOperation) {
575575
Management.QueueInfo info = queueInfo();
576576
String initialLeader = info.leader();
577577
int initialReplicaCount = info.members().size();
578-
deleteMemberOperation.accept(initialLeader);
578+
retry(() -> deleteMemberOperation.accept(initialLeader));
579579
TestUtils.waitAtMost(() -> !initialLeader.equals(queueInfo().leader()));
580580
assertThat(queueInfo().members()).hasSize(initialReplicaCount - 1);
581581
return initialLeader;
@@ -586,7 +586,7 @@ void restartStream() {
586586
}
587587

588588
void deleteQqMember(String member) {
589-
Cli.deleteQuorumQueueMember(q, member);
589+
retry(() -> Cli.deleteQuorumQueueMember(q, member));
590590
}
591591

592592
void deleteStreamMember(String member) {
@@ -604,7 +604,7 @@ void addStreamMember(String newMember) {
604604
void addMember(Runnable addMemberOperation) {
605605
Management.QueueInfo info = queueInfo();
606606
int initialReplicaCount = info.members().size();
607-
addMemberOperation.run();
607+
retry(addMemberOperation);
608608
TestUtils.waitAtMost(() -> queueInfo().members().size() == initialReplicaCount + 1);
609609
}
610610

@@ -648,4 +648,24 @@ public Address select(List<Address> addresses) {
648648
}
649649
}
650650
}
651+
652+
private static void retry(Runnable action) {
653+
int attempt = 0;
654+
RuntimeException lastException = null;
655+
while (attempt <= 3) {
656+
attempt++;
657+
try {
658+
action.run();
659+
return;
660+
} catch (RuntimeException e) {
661+
lastException = e;
662+
try {
663+
Thread.sleep(1000L);
664+
} catch (InterruptedException ex) {
665+
throw new RuntimeException(ex);
666+
}
667+
}
668+
}
669+
throw lastException;
670+
}
651671
}

0 commit comments

Comments
 (0)