Introducing sleep between DescribeStreamConsumer calls (#507)
* * Wait between each describe stream consumer retry * ! Fix imports in test * * Apply review: catch InterruptedException outside of while loop
This commit is contained in:
parent
c3b3846357
commit
2f3907d19f
2 changed files with 14 additions and 3 deletions
|
|
@ -149,9 +149,15 @@ public class FanOutConsumerRegistration implements ConsumerRegistration {
|
|||
|
||||
int retries = maxDescribeStreamConsumerRetries;
|
||||
|
||||
while (!ConsumerStatus.ACTIVE.equals(status) && retries > 0) {
|
||||
status = describeStreamConsumer().consumerDescription().consumerStatus();
|
||||
retries--;
|
||||
try {
|
||||
while (!ConsumerStatus.ACTIVE.equals(status) && retries > 0) {
|
||||
status = describeStreamConsumer().consumerDescription().consumerStatus();
|
||||
retries--;
|
||||
log.info(String.format("Waiting for StreamConsumer %s to have ACTIVE status...", streamConsumerName));
|
||||
Thread.sleep(retryBackoffMillis);
|
||||
}
|
||||
} catch (InterruptedException ie) {
|
||||
log.debug("Thread was interrupted while fetching StreamConsumer status, moving on.");
|
||||
}
|
||||
|
||||
if (!ConsumerStatus.ACTIVE.equals(status)) {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
package software.amazon.kinesis.retrieval.fanout;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.eq;
|
||||
|
|
@ -20,6 +21,7 @@ import static org.mockito.Mockito.when;
|
|||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
|
@ -172,9 +174,12 @@ public class FanOutConsumerRegistrationTest {
|
|||
.thenReturn(intermidateResponse).thenReturn(successResponse);
|
||||
when(client.registerStreamConsumer(any(RegisterStreamConsumerRequest.class))).thenReturn(rscFuture);
|
||||
|
||||
final long startTime = System.currentTimeMillis();
|
||||
final String consumerArn = consumerRegistration.getOrCreateStreamConsumerArn();
|
||||
final long endTime = System.currentTimeMillis();
|
||||
|
||||
assertThat(consumerArn, equalTo(CONSUMER_ARN));
|
||||
assertThat(endTime - startTime, greaterThanOrEqualTo(2 * BACKOFF_MILLIS));
|
||||
|
||||
verify(client).registerStreamConsumer(eq(createRegisterStreamConsumerRequest()));
|
||||
verify(client).describeStreamSummary(eq(createDescribeStreamSummaryRequest()));
|
||||
|
|
|
|||
Loading…
Reference in a new issue