The GitHub Actions job "Coverage" on 
rocketmq.git/fix/pop-revive-future-exceptionally has succeeded.
Run started by GitHub user wang-jiahua (triggered by wang-jiahua).

Head commit for run:
23eecf359626e73bbbb9b1ddb56019edd589e81e / wangjiahua.wjh 
<[email protected]>
[ISSUE #10658] Consume incidental interrupts and preserve the suspend flag in 
backoff records

Address two review comments on #10659.

Interrupt handling: restoring the interrupt flag before rethrowing left the
revive service permanently interrupted, because shutdown stops this service
with the stopped flag and wakeup() rather than interruption, and
ServiceThread.waitForRunning preserves the interrupt status. Every later
Semaphore.acquire() threw again, turning one incidental interrupt into a
permanent busy error loop with each batch abandoned before writeRecords and
deleteRecords. Consume incidental interrupts and retry the acquire; if the
service is stopped, abort the batch cleanly so the records are reprocessed
after the next start.

Suspend flag: the backoff record was built with the eight-argument
PopConsumerRecord constructor, which defaults suspend to false. A suspended
record whose revive failed transiently lost the flag, so a later successful
reviveRetry incremented reconsumeTimes unexpectedly. Build the retry record
with the nine-argument constructor and preserve record.isSuspend().

New regression tests: one blocks the worker on the semaphore with a single
permit, interrupts it once, releases the outstanding read and verifies the
whole batch still completes without an exception; the other fails one record
synchronously and one asynchronously, both with suspend=true, and verifies
the persisted backoff records keep suspend=true with attemptTimes=1. Both
fail before this change.

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

With regards,
GitHub Actions via GitBox

Reply via email to