In the testHWCheckpointWithFailuresSingleLogSegment method, the test logic is
1. shutdown server1 and then capture the leadership of a partition in the variable "leader", which should be server2
2. shutdown server2 and wait until the leadership has changed to a broker other than server2
through the line
waitUntilLeaderIsElectedOrChanged(zkClient, topic, partitionId, oldLeaderOpt = Some(leader))
However when we execute step 2 and shutdown server2, it's possible that server1 has not caught up with the partition, and has not joined the ISR. With unclean leader election turned off, the leadership cannot be transferred to server1, causing the waited condition in step 2 to be never met.
The obvious fix is to wait until server1 has joined the ISR before shutting down server2.