spring-data-dynamodb icon indicating copy to clipboard operation
spring-data-dynamodb copied to clipboard

too many requests to amazon API

Open amrnablus opened this issue 5 years ago • 3 comments

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

  1. Create a repo
  2. Create a Bean and map it to whatever table (preferably with a large number of rows)
  3. 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?

amrnablus avatar May 10 '19 20:05 amrnablus

I traced the code further and it seems there are two main problems:

  1. 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
  2. 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.

amrnablus avatar May 13 '19 19:05 amrnablus

Use the Query(limit=blah) annotation.

boostchicken avatar May 16 '19 01:05 boostchicken

https://github.com/derjust/spring-data-dynamodb/pull/239

It's in 5.1.1-SNAPSHOT

boostchicken avatar May 16 '19 01:05 boostchicken