feat(rest): implement OAuth2 token auto-refresh for REST catalog#646
Open
lishuxu wants to merge 2 commits intoapache:mainfrom
Open
feat(rest): implement OAuth2 token auto-refresh for REST catalog#646lishuxu wants to merge 2 commits intoapache:mainfrom
lishuxu wants to merge 2 commits intoapache:mainfrom
Conversation
Contributor
lishuxu
commented
May 9, 2026
added 2 commits
May 9, 2026 09:46
Replace the MakeOAuth2 stub with a full OAuth2AuthSession that
automatically refreshes tokens before expiration using the
client_credentials grant.
Key components:
- OAuth2AuthSession: manages token lifecycle with shared_mutex for
concurrent read access and background refresh via scheduler
- TokenRefreshScheduler: process-global singleton with a single worker
thread that fires delayed refresh callbacks
- ExpiresAtMillis: JWT exp claim parser for determining token expiry
when expires_in is not provided in the token response
- Base64Decode/Base64UrlDecode added to TransformUtil as public utilities
Replace the MakeOAuth2 stub with a full OAuth2AuthSession that automatically refreshes tokens before expiration using the client_credentials grant. Key components: - OAuth2AuthSession: manages token lifecycle with shared_mutex for concurrent read access and background refresh via scheduler - TokenRefreshScheduler: process-global singleton with a single worker thread that fires delayed refresh callbacks - ExpiresAtMillis: JWT exp claim parser for determining token expiry when expires_in is not provided in the token response - Base64Decode/Base64UrlDecode added to TransformUtil as public utilities
zhjwpku
reviewed
May 9, 2026
| 'dependencies': [iceberg_rest_dep], | ||
| }, | ||
| 'polaris_oauth2_integration_test': { | ||
| 'sources': files('polaris_oauth2_test.cc'), |
Collaborator
There was a problem hiding this comment.
It seems you may have missed adding this file to the commit.
zhjwpku
reviewed
May 9, 2026
|
|
||
| namespace { | ||
|
|
||
| // Shared base64 decode logic. The decode table maps ASCII char → 6-bit value. |
Collaborator
There was a problem hiding this comment.
nit
Suggested change
| // Shared base64 decode logic. The decode table maps ASCII char → 6-bit value. | |
| // Shared base64 decode logic. The decode table maps ASCII char -> 6-bit value. |
zhjwpku
reviewed
May 9, 2026
| for (char c : input) { | ||
| uint8_t val = table[static_cast<uint8_t>(c)]; | ||
| if (val == 0xFF) { | ||
| return {}; // Invalid character |
Collaborator
There was a problem hiding this comment.
Should we return Resultstd::string so that we know input is just empty or invalid?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.