diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesDynamoDb.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesDynamoDb.java index 771cbc94a..e97647e72 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesDynamoDb.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/MessagesDynamoDb.java @@ -129,8 +129,13 @@ public class MessagesDynamoDb extends AbstractDynamoDbStore { .limit(numberOfMessagesToFetch) .build(); List messageEntities = new ArrayList<>(numberOfMessagesToFetch); - for (Map message : db().query(queryRequest).items()) { + for (Map message : db().queryPaginator(queryRequest).items()) { messageEntities.add(convertItemToOutgoingMessageEntity(message)); + if (messageEntities.size() == numberOfMessagesToFetch) { + // queryPaginator() uses limit() as the page size, not as an absolute limit + // …but a page might be smaller than limit, because a page is capped at 1 MB + break; + } } return messageEntities; });