Missed calls to DynamoDB when using Async client in Spring Webflux (proect Reactor) #5079
              
                Unanswered
              
          
                  
                    
                      spachari-im
                    
                  
                
                  asked this question in
                Q&A
              
            Replies: 0 comments
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment
  
        
    
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I am working on a Spring Boot project running Webflux (version 5.3).
In a REST endpoint that has high traffic (approx 500-1000 rpm) , there are 2 async updates to AWS DynamoDB tables, aggregated together with a Mono.when(). There is a Datadog metric reported before calling Mono.when (metric-1) and a metric reported in the DynamoDB update method for success (metric-2) and failure (metric-3).
Here is the pseudo code:
I am expecting that all calls to DynamoDB should report either success or failure metric. That is, metric-1 = 2 * (metric2+metric3).
However I notice that a consistent number (about 20%) of calls to
Mono.fromFuture(dynamoDbAsyncClient.updateItem(toDynamoRequest)does not report a success or failure metric. I can also see that the data is not being updated in DynamoDB.I can see the percentage of missed calls reduce to 15% when I reduce the number of requests per host by scaling up the cluster.
Is this possibly due to the default NettyNioAsyncHttpClient unable to process requests above a certain threshold?
How can I change the code to catch requests that are rejected?
Beta Was this translation helpful? Give feedback.
All reactions