New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
software.amazon.awssdk.core.exception.SdkClientException: Unable to unmarshall response (null). Response Code: 200, Response Text: OK when calling PutItem
#5111
Comments
@ashr123 we don't have any known issues of running the code in JDK 21.
|
|
@debora-ito I've checked, and it's not related to timeout, it happens ~25-40 milliseconds after sending the item to |
@ashr123 Thank you for answering the questions so far. I know it's a use-case hard to reproduce, but can you share a self-contained repro code anyway? For my question#3 I don't really have suggestions, just wanted to ask if there's obvious environment differences like JDK, network, throughput, etc. I'd still like to get more info on question#4, as unmarshalling errors can affect other use cases. |
@debora-ito when using code like for (int attempt = 0; attempt < 5; attempt++) {
try {
asyncTable.putItem(item).join();
break;
} catch (Exception e) {
if (attempt == 4) {
throw e;
}
}
} I get (sometimes) error like this: ERROR Error thrown from TransformingAsyncResponseHandler#onError, ignoring.
java.lang.NullPointerException: Cannot invoke "java.util.concurrent.CompletableFuture.completeExceptionally(java.lang.Throwable)" because "this.streamFuture" is null
at software.amazon.awssdk.core.internal.http.async.AsyncResponseHandler.onError(AsyncResponseHandler.java:76) ~[sdk-core-2.20.157.jar:na]
at software.amazon.awssdk.core.internal.http.async.CombinedResponseAsyncHttpResponseHandler.onError(CombinedResponseAsyncHttpResponseHandler.java:70) ~[sdk-core-2.20.157.jar:na]
at software.amazon.awssdk.core.internal.handler.BaseAsyncClientHandler.lambda$doExecute$5(BaseAsyncClientHandler.java:246) ~[sdk-core-2.20.157.jar:na]
at software.amazon.awssdk.utils.FunctionalUtils.runAndLogError(FunctionalUtils.java:40) ~[utils-2.20.157.jar:na]
at software.amazon.awssdk.core.internal.handler.BaseAsyncClientHandler.doExecute(BaseAsyncClientHandler.java:243) ~[sdk-core-2.20.157.jar:na]
at software.amazon.awssdk.core.internal.handler.BaseAsyncClientHandler.lambda$execute$1(BaseAsyncClientHandler.java:82) ~[sdk-core-2.20.157.jar:na]
at software.amazon.awssdk.core.internal.handler.BaseAsyncClientHandler.measureApiCallSuccess(BaseAsyncClientHandler.java:291) ~[sdk-core-2.20.157.jar:na]
at software.amazon.awssdk.core.internal.handler.BaseAsyncClientHandler.execute(BaseAsyncClientHandler.java:75) ~[sdk-core-2.20.157.jar:na]
at software.amazon.awssdk.awscore.client.handler.AwsAsyncClientHandler.execute(AwsAsyncClientHandler.java:52) ~[aws-core-2.20.157.jar:na]
at software.amazon.awssdk.services.dynamodb.DefaultDynamoDbAsyncClient.putItem(DefaultDynamoDbAsyncClient.java:4172) ~[dynamodb-2.20.157.jar:na]
at software.amazon.awssdk.enhanced.dynamodb.internal.operations.CommonOperation.executeAsync(CommonOperation.java:140) ~[dynamodb-enhanced-2.20.157.jar:na]
at software.amazon.awssdk.enhanced.dynamodb.internal.operations.TableOperation.executeOnPrimaryIndexAsync(TableOperation.java:81) ~[dynamodb-enhanced-2.20.157.jar:na]
at software.amazon.awssdk.enhanced.dynamodb.internal.client.DefaultDynamoDbAsyncTable.putItem(DefaultDynamoDbAsyncTable.java:219) ~[dynamodb-enhanced-2.20.157.jar:na]
at software.amazon.awssdk.enhanced.dynamodb.internal.client.DefaultDynamoDbAsyncTable.putItem(DefaultDynamoDbAsyncTable.java:227) ~[dynamodb-enhanced-2.20.157.jar:na]
at software.amazon.awssdk.enhanced.dynamodb.internal.client.DefaultDynamoDbAsyncTable.putItem(DefaultDynamoDbAsyncTable.java:232) ~[dynamodb-enhanced-2.20.157.jar:na]
...
at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnable.exec(ForkJoinTask.java:1382) ~[na:na]
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387) ~[na:na]
at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:667) ~[na:na]
at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnable.run(ForkJoinTask.java:1383) ~[na:na]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1423) ~[na:na]
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387) ~[na:na]
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312) ~[na:na]
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843) ~[na:na]
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808) ~[na:na]
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188) ~[na:na] |
@ashr123 Are you reusing the same DynamoDbEnhancedClient among the 50 threads, or creating a new one for each thread? |
@debora-ito I'm using the same |
You can log the thread name through the logging framework you're using. For example, in Log4j you can define the Pattern Layout to format the log event and use the 't' option:
https://logging.apache.org/log4j/2.x/manual/layouts.html#pattern-layout Were you able to get the wirelogs of the unmarshalling error? |
I didn't try that, because I haven't been able to catch an exception when running locally, and removing the redundant I guess |
Glad to see you got unblocked. Marking this to auto close soon, let us know if you have any other question. |
Describe the bug
Since upgrading to JDK 21 we sometimes getting the mentioned error
Expected Behavior
Enhanced client returning from
DefaultDynamoDbTable.putItem
correctly as usual, as i did in JDK 17Current Behavior
Another unexplained exception:
And 3rd kind of exception:
Reproduction Steps
don't know… there is no throttling on DynamoDB table..
Possible Solution
No response
Additional Information/Context
No response
AWS Java SDK version used
2.20.157, 2.25.31
JDK version used
openjdk 21.0.2 2024-01-16 LTS OpenJDK Runtime Environment Corretto-21.0.2.14.1 (build 21.0.2+14-LTS) OpenJDK 64-Bit Server VM Corretto-21.0.2.14.1 (build 21.0.2+14-LTS, mixed mode, sharing)
Operating System and version
Ubuntu 22.04
The text was updated successfully, but these errors were encountered: