Skip to content

Commit

Permalink
Merge pull request #24 from kmbotts/NPE-when-short-polling-a-virtual-…
Browse files Browse the repository at this point in the history
…queue

Auto-boxing null Integer to long causing NPE
  • Loading branch information
robin-aws committed Jan 3, 2020
2 parents f22cf6d + f438e6b commit 87266b9
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ public ReceiveMessageResult receiveMessage(ReceiveMessageRequest request) {
try {
try {
return receiveBuffer.receiveMessageAsync(request)
.get(request.getWaitTimeSeconds(), TimeUnit.SECONDS);
.get(Optional.ofNullable(request.getWaitTimeSeconds()).orElse(0).longValue(), TimeUnit.SECONDS);
} catch (TimeoutException e) {
// Fall through to an empty receive
} catch (ExecutionException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,22 @@ public void expiringVirtualQueue() throws InterruptedException {
// Expected
}
}

@Test
public void ReceiveMessageWaitTimeSecondsNull() {
CreateQueueRequest request = new CreateQueueRequest()
.withQueueName("ReceiveMessageWaitTimeSecondsNull")
.addAttributesEntry(AmazonSQSVirtualQueuesClient.VIRTUAL_QUEUE_HOST_QUEUE_ATTRIBUTE, hostQueueUrl)
.addAttributesEntry(AmazonSQSIdleQueueDeletingClient.IDLE_QUEUE_RETENTION_PERIOD, "5");
String virtualQueueUrl = client.createQueue(request).getQueueUrl();

// Do Receive message request with null WaitTimeSeconds.
ReceiveMessageRequest receiveRequest = new ReceiveMessageRequest()
.withQueueUrl(virtualQueueUrl);
try {
assertEquals(0, client.receiveMessage(receiveRequest).getMessages().size());
} catch (NullPointerException npe) {
fail("NPE not expected with null WaitTimeSeconds on ReceiveMessageRequest");
}
}
}

0 comments on commit 87266b9

Please sign in to comment.