Search before asking
Fluss version
main (development)
Please describe the bug 馃悶
RequestChannel checks the queue threshold before acquiring backpressureLock, but does not recheck it when changing isBackpressureActive.
The queue may change concurrently, causing channels to be paused after the queue has been drained, or resumed after it has reached the backpressure threshold.
The queue size in the log is also read later in the asynchronous EventLoop task, producing misleading messages such as:
Queue size (0) exceeded backpressure threshold (100)
This behavior was introduced by #2065.
Solution
Reconcile the latest queue size and backpressure state under backpressureLock before applying pause or resume.
Capture the queue size at the state transition and use that snapshot in the asynchronous log.
Add concurrent regression tests covering stale pause and resume transitions.
Are you willing to submit a PR?
Search before asking
Fluss version
main (development)
Please describe the bug 馃悶
RequestChannelchecks the queue threshold before acquiringbackpressureLock, but does not recheck it when changingisBackpressureActive.The queue may change concurrently, causing channels to be paused after the queue has been drained, or resumed after it has reached the backpressure threshold.
The queue size in the log is also read later in the asynchronous EventLoop task, producing misleading messages such as:
This behavior was introduced by #2065.
Solution
Reconcile the latest queue size and backpressure state under
backpressureLockbefore applying pause or resume.Capture the queue size at the state transition and use that snapshot in the asynchronous log.
Add concurrent regression tests covering stale pause and resume transitions.
Are you willing to submit a PR?