@@ -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