Skip to content

Per-client configuration - #3987

Open
averyk22 wants to merge 10 commits into
release/1.12from
per-client-config-1.12
Open

averyk22 wants to merge 10 commits into
release/1.12from
per-client-config-1.12

Conversation

@averyk22

@averyk22 averyk22 commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

** Look at the first commit during review, second commit is all the generated files (too many of them)

  • ClientConfiguration keeps only settings every service shares; the 12 service-specific options move to generated per-service configurations, chosen from each service's endpoint rules and model (ServiceModel.getSupportedClientOptions)
  • Clients can no longer be built from the shared ClientConfiguration; an explicit XClientConfiguration(const ClientConfiguration&) seeds a service config from shared settings
  • Remove legacy client constructors and OverrideEndpoint (S3Crt unchanged )

Issue #, if available:

Description of changes:

Check all that applies:

  • Did a review by yourself.
  • Added proper tests to cover this PR. (If tests are not applicable, explain.)
  • Checked if this PR is a breaking (APIs have been changed) change.
  • Checked if this PR will not introduce cross-platform inconsistent behavior.
  • Checked if this PR would require a ReadMe/Wiki update.

Check which platforms you have built SDK on to verify the correctness of this PR.

  • Linux
  • Windows
  • Android
  • MacOS
  • IOS
  • Other Platforms

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

…tions

- ClientConfiguration keeps only settings every service shares; the 12 service-specific
  options move to generated per-service configurations, chosen from each service's
  endpoint rules and model (ServiceModel.getSupportedClientOptions)
- Clients can no longer be built from the shared ClientConfiguration; an explicit
  XClientConfiguration(const ClientConfiguration&) seeds a service config from shared settings
- Remove legacy client constructors and OverrideEndpoint (S3Crt unchanged until it
  becomes an alias of S3Client)
…r-client configuration

Generated output of the previous commit's generator and template changes for these services.
- Regenerate all 438 service clients: each gets its own ClientConfiguration type with only
  the options its service supports; legacy constructors and OverrideEndpoint removed
- KMSEncryptionMaterials takes KMSClientConfiguration
- Update tests to build clients from their service's configuration
- The smoke-test generator wrote clientConfiguration.useFIPS/useDualStack for every
  service; services without dual-stack endpoints no longer have useDualStack, so those
  smoke tests failed to compile. Emit each line only when the value is true (false is
  the default), and update the committed smoke tests to match
- Docs: useDualStack is on service configurations, not the shared ClientConfiguration
Conflicts: release/1.12 added executor tagging to the user agent next to the
account ID endpoint mode method this branch added; kept both. UserAgent's
constructor keeps the executor tagging, and the account ID endpoint mode is set
through SetAccountIdEndpointMode since that field left ClientConfiguration.
- Regenerate the 11 protocol-test clients: each gets its own ClientConfiguration type;
  legacy constructors and OverrideEndpoint removed
- Protocol tests build each client from its own configuration, seeded from the shared
  mock configuration (ProtocolTestsTestSuiteSrc.vm, AwsProtocolTestHelpers.h)
- Also picks up the rest-xml-protocol serializer change from #3965
  (ConvertToCompactString), which had not been regenerated for the test client
…guration

S3PerformanceTest and DynamoDBPerformanceTest took the shared ClientConfiguration,
which can no longer construct a service client; take S3ClientConfiguration and
DynamoDBClientConfiguration instead. Fixes the AL2OnEC2CustomMemoryDefaultBuild
step, the first CI build that enables BUILD_PERFORMANCE_TESTS.
…missing name

BuiltInParameters::GetParameter() returns a function-local static for a missing
name, which allocates on first use on libstdc++. Under CUSTOM_MEMORY_MANAGEMENT
that allocation is tracked by the test memory system and reported as a leak
(and freed after it is gone), failing AL2OnEC2CustomMemoryDefaultBuild. Check
GetAllParameters() instead; the test asserts the same thing.
These tests change AWS_S3_USE_ARN_REGION / AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS
mid-test. They used to build each client from the shared ClientConfiguration, which
created a fresh S3ClientConfiguration (re-reading the environment) every time; they
now reuse one S3ClientConfiguration created before the change. Set useArnRegion /
disableMultiRegionAccessPoints on that config where the environment changes.
Fixes TestCustomEndpointOverride, TestS3AccessPointARN and
TestS3MultiRegionAccessPointARN; same fix in S3ControlTest.
@averyk22
averyk22 force-pushed the per-client-config-1.12 branch from 84c91d7 to e95feb2 Compare November 13, 2026 15:34
@averyk22
averyk22 requested a review from sbiscigl November 13, 2026 15:42
release/1.12 lacks the dictionary entry main has, so cspell flags the existing
AWS_USE_DUALSTACK_ENDPOINT names in ClientConfiguration.cpp.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants