You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A single request (or an appropriate number) should be made
Actual Behavior
A single call to findAll with a limit of 20 is loading the whole data set
Steps to Reproduce the Problem
Create a repo
Create a Bean and map it to whatever table (preferably with a large number of rows)
make a call to findAll with a limit of say 10, and notice how the log shows a large number of requests.
Specifications
Spring Data DynamoDB Version: 5.1.0
Spring Data Version: 2.0.13.RELEASE
AWS SDK Version: 1.11.438
Java Version: 1.8.0_181
Platform Details: Ubuntu 18.04 LST
I tried to trace the problem and it seems a call to PaginatedScanList#size is causing this, isn't it possible to run two queries, one with count(*) and the actual query to get both the size and the needed data?
The text was updated successfully, but these errors were encountered:
I traced the code further and it seems there are two main problems:
in src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/SimpleDynamoDBPagingAndSortingRepository.java there is a call to scan function from the aws sdk which scans the whole table rather than scanning within the requested limit, changing this to scanPage fixes one half of the issue
In src/main/java/org/socialsignin/spring/data/dynamodb/core/DynamoDBTemplate.java#count what actually happens is that the limit limits the number of counted rows (personally i think this is a flow in the amazon sdk), setting the limit to null dramatically drops the number of calls
I would be happy to submit a pull request if everybody is fine with the changes.
Expected Behavior
A single request (or an appropriate number) should be made
Actual Behavior
A single call to findAll with a limit of 20 is loading the whole data set
Steps to Reproduce the Problem
Specifications
I tried to trace the problem and it seems a call to PaginatedScanList#size is causing this, isn't it possible to run two queries, one with count(*) and the actual query to get both the size and the needed data?
The text was updated successfully, but these errors were encountered: