smaheshwar-pltr commented on code in PR #13966:
URL: https://github.com/apache/iceberg/pull/13966#discussion_r2316266482
##########
azure/src/main/java/org/apache/iceberg/azure/adlsv2/VendedAdlsCredentialProvider.java:
##########
@@ -78,6 +81,29 @@ Mono<String> credentialForAccount(String storageAccount) {
}
private AccessToken sasTokenForAccount(String storageAccount) {
+ return sasTokenFromProperties(storageAccount).orElseGet(() ->
refreshSasToken(storageAccount));
+ }
+
+ private Optional<AccessToken> sasTokenFromProperties(String storageAccount) {
+ String sasToken = properties.get(AzureProperties.ADLS_SAS_TOKEN_PREFIX +
storageAccount);
+ String tokenExpiresAtMillis =
+ properties.get(AzureProperties.ADLS_SAS_TOKEN_EXPIRES_AT_MS_PREFIX +
storageAccount);
+
+ if (Strings.isNullOrEmpty(sasToken) ||
Strings.isNullOrEmpty(tokenExpiresAtMillis)) {
+ return Optional.empty();
+ }
+
+ Instant expiresAt =
Instant.ofEpochMilli(Long.parseLong(tokenExpiresAtMillis));
+ Instant prefetchAt = expiresAt.minus(5, ChronoUnit.MINUTES);
+
+ if (Instant.now().isAfter(prefetchAt)) {
+ return Optional.empty();
+ }
Review Comment:
I've added an explanatory comment. This PR's approach feels fine to me (the
two prefetches don't mess things up - if the cache sees creds on properties are
about to expire and refreshes, the supplier can verify if it should actually
fetch according to its own prefetch, and in practice the two are the same so it
will fetch).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]