LI123456mo opened a new pull request, #16470:
URL: https://github.com/apache/dubbo/pull/16470

   Fixes #16469
   
   ## What is the purpose of the change
   
   When handling one item of a batch threw inside BatchExecutorQueue, the rest 
of the batch had already been taken off the queue and was silently dropped. 
TripleWriteQueue only handled CompletionException, so any other failure left 
the failing command's promise pending, and a failing last command skipped the 
channel flush for the earlier writes in the same batch.
   
   ## Brief changelog
   
   - BatchExecutorQueue: failures in prepare and flush are caught and logged 
per item, so the remaining items of the batch are still handled. If the 
executor rejects the task that drains the queue, the scheduled flag is reset so 
a later enqueue schedules processing again.
   - TripleWriteQueue: any failure completes only that command's promise as 
failed, and the channel is flushed even when the last command of the batch 
fails.
   
   ## Verifying this change
   
   Added BatchExecutorQueueTest and TripleWriteQueueTest covering failures in 
the middle, at the end, at a chunk boundary and multiple failures in one batch, 
executor rejection, promise completion, and flushing after a failing last 
command.


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

To unsubscribe, e-mail: [email protected]

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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to