The GitHub Actions job "Build and Run Tests by Maven" on 
rocketmq.git/fix/request-reply-double-callback has succeeded.
Run started by GitHub user wang-jiahua (triggered by wang-jiahua).

Head commit for run:
3a80b375e6675a0d0ae35a2a3ff7831814a9d3f5 / wangjiahua.wjh 
<[email protected]>
[ISSUE #10613] Fix async request-reply RequestCallback firing multiple times

- DefaultMQProducerImpl#request(Message, RequestCallback, long): drop the
  executeRequestCallback() call in the async send onSuccess so a send success
  no longer delivers a premature onSuccess(null); align with the other async
  request overloads which only set sendRequestOk here.
- RequestResponseFuture: add an AtomicBoolean executeCallbackOnlyOnce guard so
  the callback fires at most once even if the reply and timeout paths race.
- RequestFutureHolder#scanExpiredRequest: use ConcurrentHashMap.remove(key) to
  atomically claim ownership instead of iterator.remove(); also fix the log
  placeholder concatenation.
- ClientRemotingProcessor#processReplyMessage: use atomic remove(correlationId)
  and route the reply through executeRequestCallback so the single-shot guard
  covers the reply-success path too.
- Add RequestResponseFutureTest cases for success-then-timeout and concurrent
  single-callback semantics.

Report URL: https://github.com/apache/rocketmq/actions/runs/29233335864

With regards,
GitHub Actions via GitBox

Reply via email to