+ // Sometimes the initial AppendEntries messages go to dead letters, probably b/c the follower actors
+ // haven't been fully created/initialized by akka. So we try up to 3 times to create the Leader as
+ // a workaround.
+
+ Leader leader = null;
+ AssertionError lastAssertError = null;
+ for (int i = 1; i <= 3; i++) {
+ actor.expectMessageClass(AppendEntriesReply.class, numActiveFollowers);
+
+ leader = new Leader(context);
+ try {
+ actor.waitForExpectedMessages(AppendEntriesReply.class);
+ lastAssertError = null;
+ break;
+ } catch (AssertionError e) {
+ lastAssertError = e;
+ }
+ }
+
+ if (lastAssertError != null) {
+ throw lastAssertError;
+ }