diff --git a/plugins/repository-s3/README.md b/plugins/repository-s3/README.md index 9bd2fb4bed2e1..a8e0882164ae1 100644 --- a/plugins/repository-s3/README.md +++ b/plugins/repository-s3/README.md @@ -27,3 +27,4 @@ Optional environment variables: - `amazon_s3_path_style_access`: Possible values true or false. Default is false. - `amazon_s3_endpoint`: s3 custom endpoint url if aws s3 default endpoint is not being used. + diff --git a/plugins/repository-s3/src/main/java/org/opensearch/repositories/s3/S3ClientSettings.java b/plugins/repository-s3/src/main/java/org/opensearch/repositories/s3/S3ClientSettings.java index ee4a7ac09cca1..c3f410fefeaff 100644 --- a/plugins/repository-s3/src/main/java/org/opensearch/repositories/s3/S3ClientSettings.java +++ b/plugins/repository-s3/src/main/java/org/opensearch/repositories/s3/S3ClientSettings.java @@ -443,6 +443,7 @@ S3ClientSettings refine(Settings repositorySettings) { && newConnectionTTLMillis == connectionTTLMillis && newMaxConnections == maxConnections && newConnectionAcquisitionTimeoutMillis == connectionAcquisitionTimeoutMillis + && newMaxSyncConnections == maxSyncConnections // added maxSyncConnections && maxRetries == newMaxRetries && newThrottleRetries == throttleRetries && Objects.equals(credentials, newCredentials) @@ -673,6 +674,7 @@ public boolean equals(final Object o) { && connectionTimeoutMillis == that.connectionTimeoutMillis && connectionTTLMillis == that.connectionTTLMillis && maxConnections == that.maxConnections + && maxSyncConnections == that.maxSyncConnections // fixed here && connectionAcquisitionTimeoutMillis == that.connectionAcquisitionTimeoutMillis && maxRetries == that.maxRetries && throttleRetries == that.throttleRetries @@ -680,7 +682,7 @@ public boolean equals(final Object o) { && Objects.equals(endpoint, that.endpoint) && protocol == that.protocol && proxySettings.equals(that.proxySettings) - && Objects.equals(disableChunkedEncoding, that.disableChunkedEncoding) + && disableChunkedEncoding == that.disableChunkedEncoding && Objects.equals(region, that.region) && Objects.equals(signerOverride, that.signerOverride) && Objects.equals(irsaCredentials, that.irsaCredentials); @@ -698,6 +700,7 @@ public int hashCode() { connectionTimeoutMillis, connectionTTLMillis, maxConnections, + maxSyncConnections, // fixed here connectionAcquisitionTimeoutMillis, maxRetries, throttleRetries, diff --git a/plugins/repository-s3/src/main/java/org/opensearch/repositories/s3/S3RepositoryPlugin.java b/plugins/repository-s3/src/main/java/org/opensearch/repositories/s3/S3RepositoryPlugin.java index 4b5510ad70186..d78f9c33256d4 100644 --- a/plugins/repository-s3/src/main/java/org/opensearch/repositories/s3/S3RepositoryPlugin.java +++ b/plugins/repository-s3/src/main/java/org/opensearch/repositories/s3/S3RepositoryPlugin.java @@ -345,7 +345,7 @@ public Map getRepositories( @Override public List> getSettings() { return Arrays.asList( - // named s3 client configuration settings + // s3 client configuration settings S3ClientSettings.ACCESS_KEY_SETTING, S3ClientSettings.SECRET_KEY_SETTING, S3ClientSettings.SESSION_TOKEN_SETTING, @@ -363,6 +363,17 @@ public List> getSettings() { S3Repository.ACCESS_KEY_SETTING, S3Repository.SECRET_KEY_SETTING, S3ClientSettings.SIGNER_OVERRIDE, + + // additional s3 client configuration settings added in this PR + S3ClientSettings.REQUEST_TIMEOUT_SETTING, + S3ClientSettings.CONNECTION_TIMEOUT_SETTING, + S3ClientSettings.CONNECTION_TTL_SETTING, + S3ClientSettings.MAX_CONNECTIONS_SETTING, + S3ClientSettings.MAX_SYNC_CONNECTIONS_SETTING, + S3ClientSettings.CONNECTION_ACQUISITION_TIMEOUT, + S3ClientSettings.MAX_PENDING_CONNECTION_ACQUIRES, + S3ClientSettings.DISABLE_CHUNKED_ENCODING, + S3ClientSettings.REGION, S3ClientSettings.ROLE_ARN_SETTING, S3ClientSettings.IDENTITY_TOKEN_FILE_SETTING, @@ -378,6 +389,7 @@ public List> getSettings() { ); } + @Override public void reload(Settings settings) { // secure settings should be readable diff --git a/plugins/repository-s3/src/test/java/org/opensearch/repositories/s3/S3RepositoryPluginTests.java b/plugins/repository-s3/src/test/java/org/opensearch/repositories/s3/S3RepositoryPluginTests.java index 799cbe90103e5..91e8bc5ef36f5 100644 --- a/plugins/repository-s3/src/test/java/org/opensearch/repositories/s3/S3RepositoryPluginTests.java +++ b/plugins/repository-s3/src/test/java/org/opensearch/repositories/s3/S3RepositoryPluginTests.java @@ -75,6 +75,17 @@ public void testGetExecutorBuilders() throws IOException { ); } assertTrue(plugin.getSettings().contains(S3Repository.S3_ASYNC_HTTP_CLIENT_TYPE)); + // New assertion for your bug fix + assertTrue(plugin.getSettings().contains(S3ClientSettings.DISABLE_CHUNKED_ENCODING)); + // settings added to expose missing s3.client.* configs + assertTrue(plugin.getSettings().contains(S3ClientSettings.REQUEST_TIMEOUT_SETTING)); + assertTrue(plugin.getSettings().contains(S3ClientSettings.CONNECTION_TIMEOUT_SETTING)); + assertTrue(plugin.getSettings().contains(S3ClientSettings.CONNECTION_TTL_SETTING)); + assertTrue(plugin.getSettings().contains(S3ClientSettings.MAX_CONNECTIONS_SETTING)); + assertTrue(plugin.getSettings().contains(S3ClientSettings.MAX_SYNC_CONNECTIONS_SETTING)); + assertTrue(plugin.getSettings().contains(S3ClientSettings.CONNECTION_ACQUISITION_TIMEOUT)); + assertTrue(plugin.getSettings().contains(S3ClientSettings.MAX_PENDING_CONNECTION_ACQUIRES)); + } finally { if (threadPool != null) { terminate(threadPool);