Azure / azure-documentdb-java

Java Sync SDK for SQL API of Azure Cosmos DB
MIT License
47 stars 48 forks source link

Receiving erro r'Request size is too large' when querying Cosmos DB. #116

Open fr3dgu1s opened 6 years ago

fr3dgu1s commented 6 years ago

While running a query against my database and getting a 'Request size is too large' while iterating through the results:

The query is 'select c.id, c.snippet.channelId from c where (c.kind = 'youtube#channel' or c.kind = 'youtube#video') and c.statistics.commentCount > 0'

Stack Trace:

java.util.concurrent.ExecutionException: java.lang.IllegalStateException: com.microsoft.azure.documentdb.DocumentClientException: {'Errors':['Request size is too large']} ActivityId: 00000000-0000-0000-0000-000000000000, Request URI: //, StatusCode: RequestEntityTooLarge, SubStatusCode: at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at com.affinio.work.Worker$class.waitUntilDone(Worker.scala:51) at com.affinio.scanner.CommentScan$.waitUntilDone(CommentScan.scala:11) at com.affinio.work.Worker$class.cleanUp(Worker.scala:87) at com.affinio.scanner.CommentScan$.com$affinio$reader$Reader$$super$cleanUp(CommentScan.scala:11) at com.affinio.reader.Reader$class.cleanUp(Reader.scala:147) at com.affinio.scanner.CommentScan$.cleanUp(CommentScan.scala:11) at com.affinio.work.Worker$class.main(Worker.scala:105) at com.affinio.scanner.CommentScan$.main(CommentScan.scala:11) at com.affinio.scanner.CommentScan.main(CommentScan.scala) Caused by: java.lang.IllegalStateException: com.microsoft.azure.documentdb.DocumentClientException: {'Errors':['Request size is too large']}

Once the item is already on the database the error should not be related to document size.

srinathnarayanan commented 6 years ago

Hi @fr3dgu1s, this issue is because the continuation token size sent in the header is too large. You can limit this by setting the 'responseContinuationTokenLimitInKb' in your feedOptions. (i.e. feedOptions.setResponseContinuationTokenLimitInKb() ). The maximum header size is 16 Kb, so your choice for responseContinuationTokenLimitInKb should be within that.

Documentation link : https://docs.microsoft.com/en-us/java/api/com.microsoft.azure.documentdb._feed_options.setresponsecontinuationtokenlimitinkb?view=azure-java-stable#com_microsoft_azure_documentdb__feed_options_setResponseContinuationTokenLimitInKb_int_