apache / iceberg

Apache Iceberg
https://iceberg.apache.org/
Apache License 2.0
6.49k stars 2.24k forks source link

ADLSFileIO cache DefaultAzureCredentials? #11523

Open lkindere opened 1 week ago

lkindere commented 1 week ago

Query engine

Iceberg REST catalog

Question

Currently it looks like when using ADLSFileIO for every request it creates a new client, which then calls https://github.com/apache/iceberg/blob/e3f39972863f891481ad9f5a559ffef093976bd7/azure/src/main/java/org/apache/iceberg/azure/adlsv2/ADLSFileIO.java#L114

which then ends up creating a new AzureDefaultCredential: https://github.com/apache/iceberg/blob/e3f39972863f891481ad9f5a559ffef093976bd7/azure/src/main/java/org/apache/iceberg/azure/AzureProperties.java#L88

Problem with this is that for every single time we have a request, a new token has to be fetched using the AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET Which I assume would have a performance impact and create a lot of unnecessary requests for the tokens.

Why is there no option to reuse the created DefaultAzureCredentials to utilize default caching? Am I missing something or is this simply not implemented?