[fix][proxy] Close client connection immediately when credentials expire and forwardAuthorizationCredentials is disabled #25179
+216
−62
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #25071
Motivation
This pull request enhances the authentication credential refresh logic in the Pulsar Proxy and adds comprehensive tests to ensure correct behavior when client credentials expire, especially when authorization credentials are not forwarded to the broker. The changes improve reliability and correctness in handling authentication expiration and provide a robust test for the new logic.
Modifications
Proxy authentication refresh and expiration logic:
ProxyConnection.javaby introducing thestartAuthRefreshTaskIfNotStarted()helper, ensuring the refresh task is only scheduled when needed and in the correct states. The refresh logic now checks if the connection is in an authenticated state and properly handles cases where credentials expire and authorization credentials are not forwarded (forwardAuthorizationCredentials=false). [1] [2] [3] [4]Test suite improvements:
testClientDisconnectWhenCredentialsExpireWithoutForwardAuthinProxyAuthenticationTest.javato verify that the client is disconnected when credentials expire and the proxy is not forwarding authorization credentials. The test uses Awaitility to assert proper disconnection behavior.Minor test utility and import updates:
Documentation
docdoc-requireddoc-not-neededdoc-complete