Interface ConnectionSemaphore

    • Method Detail

      • acquireChannelLock

        default void acquireChannelLock​(Object partitionKey,
                                        boolean nonBlocking)
                                 throws IOException
        Acquires a connection permit for partitionKey, optionally without blocking.

        When nonBlocking is true a permit must be taken without waiting — the too-many-connections exception is thrown immediately if none is free. This is used when the caller runs on a Netty event-loop thread (a redirect / 401 / 407 / retry replay re-enters the send path on the event loop), where waiting for the configured acquire timeout would freeze the loop and stall every other connection it serves. When false this behaves exactly like acquireChannelLock(Object).

        The default implementation ignores the hint and delegates to the blocking acquireChannelLock(Object), preserving the behaviour of custom implementations; the built-in limiters override it to honour nonBlocking.

        Parameters:
        partitionKey - the per-host partition key the permit is scoped to
        nonBlocking - true to fail fast instead of waiting for a permit
        Throws:
        IOException - if no permit could be acquired
      • releaseChannelLock

        void releaseChannelLock​(Object partitionKey)