Problem
CqlPrepareHandler.onThrottleReady() does not contain synchronous failures from request setup or channel.write(). The stream ID is released by sendRequest(), but the exception can escape registration while the result, timeout, and throttler permit remain active.
Consequences include a lost concurrency permit, an orphaned timeout, no returned failed stage, and propagation through an unrelated request when admission is delayed.
Expected behavior
Contain synchronous setup failures, complete the result exceptionally, cancel scheduled work, release the stream-ID reservation, and return the throttler permit exactly once.
Related
Problem
CqlPrepareHandler.onThrottleReady() does not contain synchronous failures from request setup or channel.write(). The stream ID is released by sendRequest(), but the exception can escape registration while the result, timeout, and throttler permit remain active.
Consequences include a lost concurrency permit, an orphaned timeout, no returned failed stage, and propagation through an unrelated request when admission is delayed.
Expected behavior
Contain synchronous setup failures, complete the result exceptionally, cancel scheduled work, release the stream-ID reservation, and return the throttler permit exactly once.
Related