diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/BridgeInternal.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/BridgeInternal.java index 88cc466388e3..e9a922c298b3 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/BridgeInternal.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/BridgeInternal.java @@ -10,11 +10,9 @@ import com.azure.cosmos.implementation.DatabaseAccount; import com.azure.cosmos.implementation.Document; import com.azure.cosmos.implementation.FeedResponseDiagnostics; -import com.azure.cosmos.implementation.HttpConstants; import com.azure.cosmos.implementation.JsonSerializable; import com.azure.cosmos.implementation.MetadataDiagnosticsContext; import com.azure.cosmos.implementation.QueryMetrics; -import com.azure.cosmos.implementation.RMResources; import com.azure.cosmos.implementation.ReplicationPolicy; import com.azure.cosmos.implementation.RequestTimeline; import com.azure.cosmos.implementation.Resource; @@ -24,7 +22,6 @@ import com.azure.cosmos.implementation.SerializationDiagnosticsContext; import com.azure.cosmos.implementation.ServiceUnavailableException; import com.azure.cosmos.implementation.StoredProcedureResponse; -import com.azure.cosmos.implementation.Strings; import com.azure.cosmos.implementation.Warning; import com.azure.cosmos.implementation.directconnectivity.StoreResponse; import com.azure.cosmos.implementation.directconnectivity.StoreResult; @@ -43,6 +40,7 @@ import java.net.URI; import java.nio.ByteBuffer; +import java.time.Duration; import java.time.Instant; import java.util.Collection; import java.util.List; @@ -494,4 +492,14 @@ public static ConsistencyLevel fromServiceSerializedFormat(String consistencyLev public static CosmosException createServiceUnavailableException(Exception innerException) { return new ServiceUnavailableException(innerException.getMessage(), innerException, null, null); } + + @Warning(value = INTERNAL_USE_ONLY_WARNING) + public static Duration getRequestTimeoutFromDirectConnectionConfig(DirectConnectionConfig directConnectionConfig) { + return directConnectionConfig.getRequestTimeout(); + } + + @Warning(value = INTERNAL_USE_ONLY_WARNING) + public static Duration getRequestTimeoutFromGatewayConnectionConfig(GatewayConnectionConfig gatewayConnectionConfig) { + return gatewayConnectionConfig.getRequestTimeout(); + } } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/DirectConnectionConfig.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/DirectConnectionConfig.java index 61df69431378..458232fe3ba9 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/DirectConnectionConfig.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/DirectConnectionConfig.java @@ -16,12 +16,12 @@ public final class DirectConnectionConfig { // Constants private static final Duration DEFAULT_IDLE_ENDPOINT_TIMEOUT = Duration.ofSeconds(70L); - private static final Duration DEFAULT_CONNECTION_TIMEOUT = Duration.ofSeconds(60L); - private static final Duration DEFAULT_REQUEST_TIMEOUT = Duration.ofSeconds(60L); + private static final Duration DEFAULT_CONNECT_TIMEOUT = Duration.ofSeconds(60L); + private static final Duration DEFAULT_REQUEST_TIMEOUT = Duration.ofSeconds(5L); private static final int DEFAULT_MAX_CONNECTIONS_PER_ENDPOINT = 30; private static final int DEFAULT_MAX_REQUESTS_PER_CONNECTION = 10; - private Duration connectionTimeout; + private Duration connectTimeout; private Duration idleConnectionTimeout; private Duration idleEndpointTimeout; private Duration requestTimeout; @@ -32,7 +32,7 @@ public final class DirectConnectionConfig { * Constructor. */ public DirectConnectionConfig() { - this.connectionTimeout = DEFAULT_CONNECTION_TIMEOUT; + this.connectTimeout = DEFAULT_CONNECT_TIMEOUT; this.idleConnectionTimeout = Duration.ZERO; this.idleEndpointTimeout = DEFAULT_IDLE_ENDPOINT_TIMEOUT; this.maxConnectionsPerEndpoint = DEFAULT_MAX_CONNECTIONS_PER_ENDPOINT; @@ -50,32 +50,32 @@ public static DirectConnectionConfig getDefaultConfig() { } /** - * Gets the connection timeout for direct client, + * Gets the connect timeout for direct client, * represents timeout for establishing connections with an endpoint. * * Configures timeout for underlying Netty Channel {@link ChannelOption#CONNECT_TIMEOUT_MILLIS} * - * By default, the connection timeout is 60 seconds. + * By default, the connect timeout is 60 seconds. * - * @return direct connection timeout + * @return direct connect timeout */ - public Duration getConnectionTimeout() { - return connectionTimeout; + public Duration getConnectTimeout() { + return connectTimeout; } /** - * Sets the connection timeout for direct client, + * Sets the connect timeout for direct client, * represents timeout for establishing connections with an endpoint. * * Configures timeout for underlying Netty Channel {@link ChannelOption#CONNECT_TIMEOUT_MILLIS} * - * By default, the connection timeout is 60 seconds. + * By default, the connect timeout is 60 seconds. * - * @param connectionTimeout the connection timeout + * @param connectTimeout the connection timeout * @return the {@link DirectConnectionConfig} */ - public DirectConnectionConfig setConnectionTimeout(Duration connectionTimeout) { - this.connectionTimeout = connectionTimeout; + public DirectConnectionConfig setConnectTimeout(Duration connectTimeout) { + this.connectTimeout = connectTimeout; return this; } @@ -201,7 +201,7 @@ public DirectConnectionConfig setMaxRequestsPerConnection(int maxRequestsPerConn * * @return the request timeout interval */ - public Duration getRequestTimeout() { + Duration getRequestTimeout() { return requestTimeout; } @@ -209,12 +209,12 @@ public Duration getRequestTimeout() { * Sets the request timeout interval * This represents the timeout interval for requests * - * Default value is 60 seconds + * Default value is 5 seconds * * @param requestTimeout the request timeout interval * @return the {@link DirectConnectionConfig} */ - public DirectConnectionConfig setRequestTimeout(Duration requestTimeout) { + DirectConnectionConfig setRequestTimeout(Duration requestTimeout) { this.requestTimeout = requestTimeout; return this; } @@ -222,12 +222,11 @@ public DirectConnectionConfig setRequestTimeout(Duration requestTimeout) { @Override public String toString() { return "DirectConnectionConfig{" + - "connectionTimeout=" + connectionTimeout + + "connectTimeout=" + connectTimeout + ", idleConnectionTimeout=" + idleConnectionTimeout + ", idleEndpointTimeout=" + idleEndpointTimeout + ", maxConnectionsPerEndpoint=" + maxConnectionsPerEndpoint + ", maxRequestsPerConnection=" + maxRequestsPerConnection + - ", requestTimeout=" + requestTimeout + '}'; } } diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/GatewayConnectionConfig.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/GatewayConnectionConfig.java index bd7c87b9a3f5..e396c8fabd2c 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/GatewayConnectionConfig.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/GatewayConnectionConfig.java @@ -12,7 +12,7 @@ */ public final class GatewayConnectionConfig { // Constants - private static final Duration DEFAULT_REQUEST_TIMEOUT = Duration.ofSeconds(60); + private static final Duration DEFAULT_REQUEST_TIMEOUT = Duration.ofSeconds(5); private static final Duration DEFAULT_IDLE_CONNECTION_TIMEOUT = Duration.ofSeconds(60); private static final int DEFAULT_MAX_CONNECTION_POOL_SIZE = 1000; @@ -44,18 +44,18 @@ public static GatewayConnectionConfig getDefaultConfig() { * * @return the request timeout duration. */ - public Duration getRequestTimeout() { + Duration getRequestTimeout() { return this.requestTimeout; } /** * Sets the request timeout (time to wait for response from network peer). - * The default is 60 seconds. + * The default is 5 seconds. * * @param requestTimeout the request timeout duration. * @return the {@link GatewayConnectionConfig}. */ - public GatewayConnectionConfig setRequestTimeout(Duration requestTimeout) { + GatewayConnectionConfig setRequestTimeout(Duration requestTimeout) { this.requestTimeout = requestTimeout; return this; } @@ -136,7 +136,6 @@ public String toString() { String proxyAddress = proxy != null ? proxy.getAddress().toString() : null; return "GatewayConnectionConfig{" + - "requestTimeout=" + requestTimeout + ", maxConnectionPoolSize=" + maxConnectionPoolSize + ", idleConnectionTimeout=" + idleConnectionTimeout + ", proxyType=" + proxyType + diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ConnectionPolicy.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ConnectionPolicy.java index 02a5ea734e5a..ae4bd6068f86 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ConnectionPolicy.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/ConnectionPolicy.java @@ -4,6 +4,7 @@ package com.azure.cosmos.implementation; import com.azure.core.http.ProxyOptions; +import com.azure.cosmos.BridgeInternal; import com.azure.cosmos.ConnectionMode; import com.azure.cosmos.DirectConnectionConfig; import com.azure.cosmos.GatewayConnectionConfig; @@ -39,7 +40,7 @@ public final class ConnectionPolicy { private ProxyOptions proxy; // Direct connection config properties - private Duration connectionTimeout; + private Duration connectTimeout; private Duration idleEndpointTimeout; private int maxConnectionsPerEndpoint; private int maxRequestsPerConnection; @@ -51,18 +52,18 @@ public ConnectionPolicy(GatewayConnectionConfig gatewayConnectionConfig) { this(ConnectionMode.GATEWAY); this.idleConnectionTimeout = gatewayConnectionConfig.getIdleConnectionTimeout(); this.maxConnectionPoolSize = gatewayConnectionConfig.getMaxConnectionPoolSize(); - this.requestTimeout = gatewayConnectionConfig.getRequestTimeout(); + this.requestTimeout = BridgeInternal.getRequestTimeoutFromGatewayConnectionConfig(gatewayConnectionConfig); this.proxy = gatewayConnectionConfig.getProxy(); } public ConnectionPolicy(DirectConnectionConfig directConnectionConfig) { this(ConnectionMode.DIRECT); - this.connectionTimeout = directConnectionConfig.getConnectionTimeout(); + this.connectTimeout = directConnectionConfig.getConnectTimeout(); this.idleConnectionTimeout = directConnectionConfig.getIdleConnectionTimeout(); this.idleEndpointTimeout = directConnectionConfig.getIdleEndpointTimeout(); this.maxConnectionsPerEndpoint = directConnectionConfig.getMaxConnectionsPerEndpoint(); this.maxRequestsPerConnection = directConnectionConfig.getMaxRequestsPerConnection(); - this.requestTimeout = directConnectionConfig.getRequestTimeout(); + this.requestTimeout = BridgeInternal.getRequestTimeoutFromDirectConnectionConfig(directConnectionConfig); } private ConnectionPolicy(ConnectionMode connectionMode) { @@ -373,20 +374,20 @@ public ConnectionPolicy setProxy(ProxyOptions proxy) { } /** - * Gets the direct connection timeout - * @return direct connection timeout + * Gets the direct connect timeout + * @return direct connect timeout */ - public Duration getConnectionTimeout() { - return connectionTimeout; + public Duration getConnectTimeout() { + return connectTimeout; } /** - * Sets the direct connection timeout - * @param connectionTimeout the connection timeout + * Sets the direct connect timeout + * @param connectTimeout the connect timeout * @return the {@link ConnectionPolicy} */ - public ConnectionPolicy setConnectionTimeout(Duration connectionTimeout) { - this.connectionTimeout = connectionTimeout; + public ConnectionPolicy setConnectTimeout(Duration connectTimeout) { + this.connectTimeout = connectTimeout; return this; } @@ -459,7 +460,7 @@ public String toString() { ", proxyType=" + proxy.getType() + ", inetSocketProxyAddress=" + proxy.getAddress() + ", readRequestsFallbackEnabled=" + readRequestsFallbackEnabled + - ", connectionTimeout=" + connectionTimeout + + ", connectTimeout=" + connectTimeout + ", idleEndpointTimeout=" + idleEndpointTimeout + ", maxConnectionsPerEndpoint=" + maxConnectionsPerEndpoint + ", maxRequestsPerConnection=" + maxRequestsPerConnection + diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/RntbdTransportClient.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/RntbdTransportClient.java index 887749034a65..55a58249aac0 100644 --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/RntbdTransportClient.java +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/RntbdTransportClient.java @@ -176,7 +176,7 @@ public static final class Options { private final Duration connectionAcquisitionTimeout; @JsonProperty() - private final Duration connectionTimeout; + private final Duration connectTimeout; @JsonProperty() private final Duration idleChannelTimeout; @@ -239,15 +239,15 @@ private Options(final Builder builder) { this.threadCount = builder.threadCount; this.userAgent = builder.userAgent; - this.connectionTimeout = builder.connectionTimeout == null + this.connectTimeout = builder.connectTimeout == null ? builder.requestTimeout - : builder.connectionTimeout; + : builder.connectTimeout; } private Options(final ConnectionPolicy connectionPolicy) { this.bufferPageSize = 8192; this.connectionAcquisitionTimeout = Duration.ZERO; - this.connectionTimeout = connectionPolicy.getConnectionTimeout(); + this.connectTimeout = connectionPolicy.getConnectTimeout(); this.idleChannelTimeout = connectionPolicy.getIdleConnectionTimeout(); this.idleEndpointTimeout = Duration.ofSeconds(70L); this.maxBufferCapacity = 8192 << 10; @@ -275,8 +275,8 @@ public Duration connectionAcquisitionTimeout() { return this.connectionAcquisitionTimeout; } - public Duration connectionTimeout() { - return this.connectionTimeout; + public Duration connectTimeout() { + return this.connectTimeout; } public Duration idleChannelTimeout() { @@ -367,7 +367,7 @@ public String toString() { *
{@code RntbdTransportClient.class.getClassLoader().getResourceAsStream("azure.cosmos.directTcp.defaultOptions.json")}
* Example:
{@code {
* "bufferPageSize": 8192,
- * "connectionTimeout": "PT1M",
+ * "connectTimeout": "PT1M",
* "idleChannelTimeout": "PT0S",
* "idleEndpointTimeout": "PT1M10S",
* "maxBufferCapacity": 8388608,
@@ -454,7 +454,7 @@ public static class Builder {
private int bufferPageSize;
private Duration connectionAcquisitionTimeout;
- private Duration connectionTimeout;
+ private Duration connectTimeout;
private Duration idleChannelTimeout;
private Duration idleEndpointTimeout;
private int maxBufferCapacity;
@@ -477,7 +477,7 @@ public Builder(ConnectionPolicy connectionPolicy) {
this.bufferPageSize = DEFAULT_OPTIONS.bufferPageSize;
this.connectionAcquisitionTimeout = DEFAULT_OPTIONS.connectionAcquisitionTimeout;
- this.connectionTimeout = connectionPolicy.getConnectionTimeout();
+ this.connectTimeout = connectionPolicy.getConnectTimeout();
this.idleChannelTimeout = connectionPolicy.getIdleConnectionTimeout();
this.idleEndpointTimeout = DEFAULT_OPTIONS.idleEndpointTimeout;
this.maxBufferCapacity = DEFAULT_OPTIONS.maxBufferCapacity;
@@ -515,7 +515,7 @@ public Options build() {
public Builder connectionAcquisitionTimeout(final Duration value) {
checkNotNull(value, "expected non-null value");
- this.connectionTimeout = value.compareTo(Duration.ZERO) < 0 ? Duration.ZERO : value;
+ this.connectTimeout = value.compareTo(Duration.ZERO) < 0 ? Duration.ZERO : value;
return this;
}
@@ -523,7 +523,7 @@ public Builder connectionTimeout(final Duration value) {
checkArgument(value == null || value.compareTo(Duration.ZERO) > 0,
"expected positive value, not %s",
value);
- this.connectionTimeout = value;
+ this.connectTimeout = value;
return this;
}
diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdEndpoint.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdEndpoint.java
index bc7791a8e7aa..752c4287d1bb 100644
--- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdEndpoint.java
+++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdEndpoint.java
@@ -110,8 +110,8 @@ public long connectionAcquisitionTimeoutInNanos() {
}
@JsonProperty
- public int connectionTimeoutInMillis() {
- final long value = this.options.connectionTimeout().toMillis();
+ public int connectTimeoutInMillis() {
+ final long value = this.options.connectTimeout().toMillis();
assert value <= Integer.MAX_VALUE;
return (int)value;
}
diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdServiceEndpoint.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdServiceEndpoint.java
index 6297cca3b929..17c1c1757695 100644
--- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdServiceEndpoint.java
+++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdServiceEndpoint.java
@@ -81,7 +81,7 @@ private RntbdServiceEndpoint(
.group(group)
.option(ChannelOption.ALLOCATOR, config.allocator())
.option(ChannelOption.AUTO_READ, true)
- .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, config.connectionTimeoutInMillis())
+ .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, config.connectTimeoutInMillis())
.option(ChannelOption.RCVBUF_ALLOCATOR, receiveBufferAllocator)
.option(ChannelOption.SO_KEEPALIVE, true)
.remoteAddress(physicalAddress.getHost(), physicalAddress.getPort());
diff --git a/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/ConnectionConfigTest.java b/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/ConnectionConfigTest.java
index 98ae0f81d42a..cf0dc55b925a 100644
--- a/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/ConnectionConfigTest.java
+++ b/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/ConnectionConfigTest.java
@@ -92,7 +92,7 @@ public void buildClient_withDefaultDirectConnectionConfig() {
@Test(groups = { "emulator" })
public void buildClient_withCustomDirectConnectionConfig() {
DirectConnectionConfig directConnectionConfig = DirectConnectionConfig.getDefaultConfig();
- directConnectionConfig.setConnectionTimeout(CONNECTION_TIMEOUT);
+ directConnectionConfig.setConnectTimeout(CONNECTION_TIMEOUT);
directConnectionConfig.setIdleConnectionTimeout(IDLE_CHANNEL_TIMEOUT);
directConnectionConfig.setIdleEndpointTimeout(IDLE_ENDPOINT_TIMEOUT);
directConnectionConfig.setMaxConnectionsPerEndpoint(100);
@@ -191,7 +191,7 @@ private void validateGatewayConfig(ConnectionPolicy connectionPolicy, GatewayCon
}
private void validateDirectConfig(ConnectionPolicy connectionPolicy, DirectConnectionConfig directConnectionConfig) {
- assertThat(Objects.equals(connectionPolicy.getConnectionTimeout(), directConnectionConfig.getConnectionTimeout()));
+ assertThat(Objects.equals(connectionPolicy.getConnectTimeout(), directConnectionConfig.getConnectTimeout()));
assertThat(Objects.equals(connectionPolicy.getIdleConnectionTimeout(), directConnectionConfig.getIdleConnectionTimeout()));
assertThat(Objects.equals(connectionPolicy.getIdleEndpointTimeout(), directConnectionConfig.getIdleEndpointTimeout()));
assertThat(Objects.equals(connectionPolicy.getMaxConnectionsPerEndpoint(), directConnectionConfig.getMaxConnectionsPerEndpoint()));