merlimat commented on a change in pull request #8992:
URL: https://github.com/apache/pulsar/pull/8992#discussion_r546073335



##########
File path: 
pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientCnx.java
##########
@@ -468,6 +469,19 @@ protected void 
handleProducerSuccess(CommandProducerSuccess success) {
                     success.getRequestId(), success.getProducerName());
         }
         long requestId = success.getRequestId();
+        if (!success.getProducerReady()) {
+            // We got a success operation but the producer is not ready. This 
means that the producer has been queued up
+            // in broker. We need to leave the future pending until we get the 
final confirmation. We just mark that
+            // we have received a response, in order to avoid the timeout.
+            TimedCompletableFuture<?> requestFuture = 
(TimedCompletableFuture<?>) pendingRequests.get(requestId);
+            if (requestFuture != null) {
+                log.info("{} Producer {} has been queued up at broker. 
request: {}", ctx.channel(),
+                        success.getProducerName(), requestId);
+                requestFuture.markAsResponded();

Review comment:
       Yes, the marking of the future is only for timeout within a single 
connection. When a connection fails, everything that was in that connections is 
marked as failed and will trigger a retry.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to