msabiransari opened a new pull request, #18746: URL: https://github.com/apache/iceberg/pull/18746
`AwsClientFactories.DefaultAwsClientFactory` constructs `AwsProperties` in its constructor and in `initialize`, and `AwsProperties` links KMS and STS SDK types during class initialization and construction. A classpath with only `s3` and an HTTP client, which is all `S3FileIO` uses, therefore fails in `S3FileIO.initialize` with `NoClassDefFoundError` for `kms.model.EncryptionAlgorithmSpec`, and after adding `kms`, for `sts.model.Tag`. The factory now keeps the property map and builds `AwsProperties` on the first Glue, KMS or DynamoDB client request, so S3-only users need neither module and the three catalogs see the same configuration as before. Fixes #18744. Test plan: a new test checks that the lazily built properties come from `initialize`, by asserting the Glue endpoint override on a default factory; the existing serialization round trip and the Glue, KMS and DynamoDB retry tests cover the lazy path on each client. The S3-only classpath itself cannot be asserted in this module, whose test classpath always carries `kms` and `sts`; it is verified by the standalone reproduction in the issue. --- **AI Disclosure** - Model: Claude Fable 5.1 - Platform/Tool: Claude Code - Human Oversight: [unknown - human to fill in] - Prompt Summary: Reproduce the S3-only classpath failure reported in #18744 and make the default client factory build `AwsProperties` only when a non-S3 client is requested. The change and its test are generated; the decision to file and fix is the author's. -- 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]
