Skip to content

Commit 37aba73

Browse files
authored
refactor: rename READ timeout gate to SOCKET (#7337)
Rename the interim rollout-gate symbols (system setting, env var, property, resolver, client option, codegen customization) from the READ name to the cross-SDK-settled SOCKET name. Behavior-preserving. SDK_INTERNAL_FALLBACK_READ_WRITE_TIMEOUT is intentionally not renamed; it names the read+write mechanism value, not the gate.
1 parent eb81725 commit 37aba73

10 files changed

Lines changed: 59 additions & 59 deletions

File tree

‎codegen/src/main/java/software/amazon/awssdk/codegen/model/config/customization/CustomizationConfig.java‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ public class CustomizationConfig {
233233
/**
234234
* Whether the client will apply a default read/write timeout by default.
235235
*/
236-
private Boolean defaultEnableReadTimeout2026;
236+
private Boolean defaultEnableSocketTimeout2026;
237237

238238
/**
239239
* Whether to generate an abstract decorator class that delegates to the async service client
@@ -742,12 +742,12 @@ public void setDefaultNewRetries2026(Boolean defaultNewRetries2026) {
742742
this.defaultNewRetries2026 = defaultNewRetries2026;
743743
}
744744

745-
public Boolean getDefaultEnableReadTimeout2026() {
746-
return defaultEnableReadTimeout2026;
745+
public Boolean getDefaultEnableSocketTimeout2026() {
746+
return defaultEnableSocketTimeout2026;
747747
}
748748

749-
public void setDefaultEnableReadTimeout2026(Boolean defaultEnableReadTimeout2026) {
750-
this.defaultEnableReadTimeout2026 = defaultEnableReadTimeout2026;
749+
public void setDefaultEnableSocketTimeout2026(Boolean defaultEnableSocketTimeout2026) {
750+
this.defaultEnableSocketTimeout2026 = defaultEnableSocketTimeout2026;
751751
}
752752

753753
public ServiceConfig getServiceConfig() {

‎codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/BaseClientBuilderClass.java‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ private Optional<MethodSpec> mergeInternalDefaultsMethod() {
332332
String userAgent = model.getCustomizationConfig().getUserAgent();
333333
RetryMode defaultRetryMode = model.getCustomizationConfig().getDefaultRetryMode();
334334
Boolean defaultNewRetries2026 = model.getCustomizationConfig().getDefaultNewRetries2026();
335-
Boolean defaultEnableReadTimeout2026 = model.getCustomizationConfig().getDefaultEnableReadTimeout2026();
335+
Boolean defaultEnableSocketTimeout2026 = model.getCustomizationConfig().getDefaultEnableSocketTimeout2026();
336336

337337
// If none of the options are customized, then we do not need to bother overriding the method
338338
if (!hasInternalDefaults()) {
@@ -357,9 +357,9 @@ private Optional<MethodSpec> mergeInternalDefaultsMethod() {
357357
builder.addCode("c.option($T.DEFAULT_NEW_RETRIES_2026, $L);\n",
358358
SdkClientOption.class, defaultNewRetries2026);
359359
}
360-
if (defaultEnableReadTimeout2026 != null) {
361-
builder.addCode("c.option($T.DEFAULT_ENABLE_READ_TIMEOUT_2026, $L);\n",
362-
SdkClientOption.class, defaultEnableReadTimeout2026);
360+
if (defaultEnableSocketTimeout2026 != null) {
361+
builder.addCode("c.option($T.DEFAULT_ENABLE_SOCKET_TIMEOUT_2026, $L);\n",
362+
SdkClientOption.class, defaultEnableSocketTimeout2026);
363363
}
364364
builder.addCode("});\n");
365365
return Optional.of(builder.build());
@@ -370,7 +370,7 @@ private boolean hasInternalDefaults() {
370370
return customizationConfig.getUserAgent() != null
371371
|| customizationConfig.getDefaultRetryMode() != null
372372
|| customizationConfig.getDefaultNewRetries2026() != null
373-
|| customizationConfig.getDefaultEnableReadTimeout2026() != null;
373+
|| customizationConfig.getDefaultEnableSocketTimeout2026() != null;
374374
}
375375

376376
private MethodSpec finalizeServiceConfigurationMethod() {

‎codegen/src/test/resources/software/amazon/awssdk/codegen/poet/builder/test-client-builder-internal-defaults-class.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ protected final SdkClientConfiguration mergeInternalDefaults(SdkClientConfigurat
7777
c.option(SdkClientOption.INTERNAL_USER_AGENT, "md/foobar");
7878
c.option(SdkClientOption.DEFAULT_RETRY_MODE, RetryMode.STANDARD);
7979
c.option(SdkClientOption.DEFAULT_NEW_RETRIES_2026, true);
80-
c.option(SdkClientOption.DEFAULT_ENABLE_READ_TIMEOUT_2026, true);
80+
c.option(SdkClientOption.DEFAULT_ENABLE_SOCKET_TIMEOUT_2026, true);
8181
});
8282
}
8383

‎codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/internalconfig/customization.config‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
"userAgent": "md/foobar",
66
"defaultRetryMode": "STANDARD",
77
"defaultNewRetries2026": "true",
8-
"defaultEnableReadTimeout2026": "true"
8+
"defaultEnableSocketTimeout2026": "true"
99
}

‎core/aws-core/src/main/java/software/amazon/awssdk/awscore/client/builder/AwsDefaultClientBuilder.java‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption;
5252
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
5353
import software.amazon.awssdk.core.client.config.SdkClientOption;
54-
import software.amazon.awssdk.core.http.EnableDefaultReadTimeout2026Resolver;
54+
import software.amazon.awssdk.core.http.EnableDefaultSocketTimeout2026Resolver;
5555
import software.amazon.awssdk.core.interceptor.ExecutionInterceptor;
5656
import software.amazon.awssdk.core.internal.SdkInternalTestAdvancedClientOption;
5757
import software.amazon.awssdk.core.internal.retry.SdkDefaultRetryStrategy;
@@ -263,10 +263,10 @@ private AttributeMap resolveHttpClientConfig(LazyValueSource config) {
263263
}
264264

265265
/**
266-
* Applies the {@code AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026} rollout gate to the codegen-baked
266+
* Applies the {@code AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026} rollout gate to the codegen-baked
267267
* {@link SdkHttpConfigurationOption#SDK_INTERNAL_FALLBACK_READ_WRITE_TIMEOUT} contributed by {@link #serviceHttpConfig()}.
268-
* The gate resolves from the {@code AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026} environment variable/system property, else the
269-
* codegen-baked {@link SdkClientOption#DEFAULT_ENABLE_READ_TIMEOUT_2026} default, else off.
268+
* The gate resolves from the {@code AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026} environment variable/system property, else the
269+
* codegen-baked {@link SdkClientOption#DEFAULT_ENABLE_SOCKET_TIMEOUT_2026} default, else off.
270270
*
271271
* <p>When the gate is on, an unlisted service (nothing baked) gets the flat 5-minute default and a baked tier is kept as-is
272272
* ({@link Duration#ZERO} for fully-exempt, 15 minutes for partial). When the gate is off, a baked positive tier (partial)
@@ -275,8 +275,8 @@ private AttributeMap resolveHttpClientConfig(LazyValueSource config) {
275275
* not truthy, so the HTTP client's option-absent path applies nothing either way.
276276
*/
277277
private AttributeMap applyDefaultReadWriteTimeout(LazyValueSource config, AttributeMap serviceHttpConfig) {
278-
boolean gateEnabled = new EnableDefaultReadTimeout2026Resolver()
279-
.defaultEnableReadTimeout2026(config.get(SdkClientOption.DEFAULT_ENABLE_READ_TIMEOUT_2026))
278+
boolean gateEnabled = new EnableDefaultSocketTimeout2026Resolver()
279+
.defaultEnableSocketTimeout2026(config.get(SdkClientOption.DEFAULT_ENABLE_SOCKET_TIMEOUT_2026))
280280
.resolve();
281281

282282
Duration bakedTier = serviceHttpConfig.get(SdkHttpConfigurationOption.SDK_INTERNAL_FALLBACK_READ_WRITE_TIMEOUT);

‎core/aws-core/src/test/java/software/amazon/awssdk/awscore/client/builder/AwsDefaultClientBuilderReadWriteTimeoutTest.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@
4747
import software.amazon.awssdk.utils.AttributeMap;
4848

4949
/**
50-
* Verifies the {@code AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026} rollout gate applied in
50+
* Verifies the {@code AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026} rollout gate applied in
5151
* {@link AwsDefaultClientBuilder#resolveHttpClientConfig} to the codegen-baked
5252
* {@link SdkHttpConfigurationOption#SDK_INTERNAL_FALLBACK_READ_WRITE_TIMEOUT}.
5353
*/
5454
@ExtendWith(MockitoExtension.class)
5555
class AwsDefaultClientBuilderReadWriteTimeoutTest {
5656

57-
private static final String GATE_PROPERTY = SdkSystemSetting.AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026.property();
57+
private static final String GATE_PROPERTY = SdkSystemSetting.AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026.property();
5858
private static final Duration PARTIAL_TIER = Duration.ofMinutes(15);
5959
private static final Duration FLAT_DEFAULT = Duration.ofMinutes(5);
6060

@@ -168,7 +168,7 @@ protected SdkClientConfiguration mergeInternalDefaults(SdkClientConfiguration co
168168
if (!codegenGateDefault) {
169169
return config;
170170
}
171-
return config.merge(c -> c.option(SdkClientOption.DEFAULT_ENABLE_READ_TIMEOUT_2026, true));
171+
return config.merge(c -> c.option(SdkClientOption.DEFAULT_ENABLE_SOCKET_TIMEOUT_2026, true));
172172
}
173173

174174
@Override

‎core/sdk-core/src/main/java/software/amazon/awssdk/core/SdkSystemSetting.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ public enum SdkSystemSetting implements SystemSetting {
286286
* <p>This setting is not intended to be used by end users. It gates an interim rollout and is subject to removal in a
287287
* future release.
288288
*/
289-
AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026("aws.enableDefaultReadTimeout2026", null);
289+
AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026("aws.enableDefaultSocketTimeout2026", null);
290290

291291
private final String systemProperty;
292292
private final String defaultValue;

‎core/sdk-core/src/main/java/software/amazon/awssdk/core/client/config/SdkClientOption.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,11 +312,11 @@ public final class SdkClientOption<T> extends ClientOption<T> {
312312
public static final SdkClientOption<Boolean> DEFAULT_NEW_RETRIES_2026 = new SdkClientOption<>(Boolean.class);
313313

314314
/**
315-
* Option to specify the default for the {@code AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026} feature gate for the SDK client.
315+
* Option to specify the default for the {@code AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026} feature gate for the SDK client.
316316
* This option is not intended to be set by end users. It gates an interim rollout and is subject to removal in a future
317317
* release.
318318
*/
319-
public static final SdkClientOption<Boolean> DEFAULT_ENABLE_READ_TIMEOUT_2026 = new SdkClientOption<>(Boolean.class);
319+
public static final SdkClientOption<Boolean> DEFAULT_ENABLE_SOCKET_TIMEOUT_2026 = new SdkClientOption<>(Boolean.class);
320320

321321
/**
322322
* Whether retries 2.1 behavior is enabled.

core/sdk-core/src/main/java/software/amazon/awssdk/core/http/EnableDefaultReadTimeout2026Resolver.java renamed to core/sdk-core/src/main/java/software/amazon/awssdk/core/http/EnableDefaultSocketTimeout2026Resolver.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,36 @@
2020
import software.amazon.awssdk.core.SdkSystemSetting;
2121

2222
/**
23-
* Resolver for the {@link SdkSystemSetting#AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026} that supports setting a fallback value if not
23+
* Resolver for the {@link SdkSystemSetting#AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026} that supports setting a fallback value if not
2424
* defined in the environment or system properties.
2525
*/
2626
@SdkProtectedApi
27-
public final class EnableDefaultReadTimeout2026Resolver {
28-
private Boolean defaultEnableReadTimeout2026;
27+
public final class EnableDefaultSocketTimeout2026Resolver {
28+
private Boolean defaultEnableSocketTimeout2026;
2929

3030
/**
31-
* The default value for {@code AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026} if not configured via
32-
* {@link SdkSystemSetting#AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026}.
31+
* The default value for {@code AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026} if not configured via
32+
* {@link SdkSystemSetting#AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026}.
3333
*
3434
* @return This resolver for method chaining.
3535
*/
36-
public EnableDefaultReadTimeout2026Resolver defaultEnableReadTimeout2026(Boolean defaultEnableReadTimeout2026) {
37-
this.defaultEnableReadTimeout2026 = defaultEnableReadTimeout2026;
36+
public EnableDefaultSocketTimeout2026Resolver defaultEnableSocketTimeout2026(Boolean defaultEnableSocketTimeout2026) {
37+
this.defaultEnableSocketTimeout2026 = defaultEnableSocketTimeout2026;
3838
return this;
3939
}
4040

4141
/**
4242
* Resolve whether a default read/write timeout is applied.
4343
*/
4444
public boolean resolve() {
45-
Optional<Boolean> envConfig = SdkSystemSetting.AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026.getBooleanValue();
45+
Optional<Boolean> envConfig = SdkSystemSetting.AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026.getBooleanValue();
4646

4747
if (envConfig.isPresent()) {
4848
return envConfig.get();
4949
}
5050

51-
if (defaultEnableReadTimeout2026 != null) {
52-
return defaultEnableReadTimeout2026;
51+
if (defaultEnableSocketTimeout2026 != null) {
52+
return defaultEnableSocketTimeout2026;
5353
}
5454

5555
return false;

core/sdk-core/src/test/java/software/amazon/awssdk/core/http/EnableDefaultReadTimeout2026ResolverTest.java renamed to core/sdk-core/src/test/java/software/amazon/awssdk/core/http/EnableDefaultSocketTimeout2026ResolverTest.java

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -27,51 +27,51 @@
2727
import software.amazon.awssdk.core.SdkSystemSetting;
2828
import software.amazon.awssdk.testutils.EnvironmentVariableHelper;
2929

30-
public class EnableDefaultReadTimeout2026ResolverTest {
31-
private static String enableDefaultReadTimeout2026Save;
30+
public class EnableDefaultSocketTimeout2026ResolverTest {
31+
private static String enableDefaultSocketTimeout2026Save;
3232

3333
@BeforeAll
3434
static void setup() {
35-
enableDefaultReadTimeout2026Save = System.getProperty(SdkSystemSetting.AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026.property());
35+
enableDefaultSocketTimeout2026Save = System.getProperty(SdkSystemSetting.AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026.property());
3636
}
3737

3838
@AfterAll
3939
static void teardown() {
40-
if (enableDefaultReadTimeout2026Save != null) {
41-
System.setProperty(SdkSystemSetting.AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026.property(),
42-
enableDefaultReadTimeout2026Save);
40+
if (enableDefaultSocketTimeout2026Save != null) {
41+
System.setProperty(SdkSystemSetting.AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026.property(),
42+
enableDefaultSocketTimeout2026Save);
4343
} else {
44-
System.clearProperty(SdkSystemSetting.AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026.property());
44+
System.clearProperty(SdkSystemSetting.AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026.property());
4545
}
4646
}
4747

4848
@BeforeEach
4949
void methodSetup() {
50-
System.clearProperty(SdkSystemSetting.AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026.property());
50+
System.clearProperty(SdkSystemSetting.AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026.property());
5151
}
5252

5353
@Test
5454
void systemSetting_usesExpectedEnvironmentVariableAndSystemPropertyNames() {
55-
assertThat(SdkSystemSetting.AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026.environmentVariable())
56-
.isEqualTo("AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026");
57-
assertThat(SdkSystemSetting.AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026.property())
58-
.isEqualTo("aws.enableDefaultReadTimeout2026");
55+
assertThat(SdkSystemSetting.AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026.environmentVariable())
56+
.isEqualTo("AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026");
57+
assertThat(SdkSystemSetting.AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026.property())
58+
.isEqualTo("aws.enableDefaultSocketTimeout2026");
5959
}
6060

6161
@ParameterizedTest
6262
@MethodSource("params")
6363
void resolve_behavesCorrectly(TestParams params) {
6464
EnvironmentVariableHelper.run((env) -> {
6565
if (params.systemProperty != null) {
66-
System.setProperty(SdkSystemSetting.AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026.property(), params.systemProperty);
66+
System.setProperty(SdkSystemSetting.AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026.property(), params.systemProperty);
6767
}
6868

6969
if (params.envVar != null) {
70-
env.set(SdkSystemSetting.AWS_ENABLE_DEFAULT_READ_TIMEOUT_2026.environmentVariable(), params.envVar);
70+
env.set(SdkSystemSetting.AWS_ENABLE_DEFAULT_SOCKET_TIMEOUT_2026.environmentVariable(), params.envVar);
7171
}
7272

73-
EnableDefaultReadTimeout2026Resolver resolver =
74-
new EnableDefaultReadTimeout2026Resolver().defaultEnableReadTimeout2026(params.defaultEnableReadTimeout2026);
73+
EnableDefaultSocketTimeout2026Resolver resolver =
74+
new EnableDefaultSocketTimeout2026Resolver().defaultEnableSocketTimeout2026(params.defaultEnableSocketTimeout2026);
7575

7676
assertThat(resolver.resolve()).isEqualTo(params.expected);
7777
});
@@ -83,19 +83,19 @@ private static Stream<TestParams> params() {
8383
new TestParams().expected(false),
8484

8585
// precedence testing
86-
new TestParams().systemProperty("true").defaultEnableReadTimeout2026(true).expected(true),
87-
new TestParams().systemProperty("false").defaultEnableReadTimeout2026(true).expected(false),
88-
new TestParams().envVar("true").defaultEnableReadTimeout2026(true).expected(true),
89-
new TestParams().envVar("false").defaultEnableReadTimeout2026(true).expected(false),
90-
new TestParams().defaultEnableReadTimeout2026(true).expected(true),
91-
new TestParams().defaultEnableReadTimeout2026(false).expected(false)
86+
new TestParams().systemProperty("true").defaultEnableSocketTimeout2026(true).expected(true),
87+
new TestParams().systemProperty("false").defaultEnableSocketTimeout2026(true).expected(false),
88+
new TestParams().envVar("true").defaultEnableSocketTimeout2026(true).expected(true),
89+
new TestParams().envVar("false").defaultEnableSocketTimeout2026(true).expected(false),
90+
new TestParams().defaultEnableSocketTimeout2026(true).expected(true),
91+
new TestParams().defaultEnableSocketTimeout2026(false).expected(false)
9292
);
9393
}
9494

9595
private static class TestParams {
9696
private String systemProperty;
9797
private String envVar;
98-
private Boolean defaultEnableReadTimeout2026;
98+
private Boolean defaultEnableSocketTimeout2026;
9999
private boolean expected;
100100

101101
public TestParams systemProperty(String systemProperty) {
@@ -108,8 +108,8 @@ public TestParams envVar(String envVar) {
108108
return this;
109109
}
110110

111-
public TestParams defaultEnableReadTimeout2026(Boolean defaultEnableReadTimeout2026) {
112-
this.defaultEnableReadTimeout2026 = defaultEnableReadTimeout2026;
111+
public TestParams defaultEnableSocketTimeout2026(Boolean defaultEnableSocketTimeout2026) {
112+
this.defaultEnableSocketTimeout2026 = defaultEnableSocketTimeout2026;
113113
return this;
114114
}
115115

0 commit comments

Comments
 (0)