Skip to content

Commit 344cf15

Browse files
authored
Add undeclared Azure settings, modify test to exercise them (#118634)
1 parent 2ab4d3d commit 344cf15

File tree

4 files changed

+37
-0
lines changed

4 files changed

+37
-0
lines changed

docs/changelog/118634.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 118634
2+
summary: "Add undeclared Azure settings, modify test to exercise them"
3+
area: Snapshot/Restore
4+
type: bug
5+
issues: []

modules/repository-azure/src/internalClusterTest/java/org/elasticsearch/repositories/azure/AzureBlobStoreRepositoryTests.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.elasticsearch.common.unit.ByteSizeUnit;
3232
import org.elasticsearch.common.unit.ByteSizeValue;
3333
import org.elasticsearch.core.SuppressForbidden;
34+
import org.elasticsearch.core.TimeValue;
3435
import org.elasticsearch.plugins.Plugin;
3536
import org.elasticsearch.plugins.PluginsService;
3637
import org.elasticsearch.repositories.RepositoriesService;
@@ -41,6 +42,7 @@
4142
import org.elasticsearch.telemetry.Measurement;
4243
import org.elasticsearch.telemetry.TestTelemetryPlugin;
4344
import org.elasticsearch.test.BackgroundIndexer;
45+
import org.elasticsearch.threadpool.ThreadPool;
4446

4547
import java.io.ByteArrayInputStream;
4648
import java.io.IOException;
@@ -53,6 +55,7 @@
5355
import java.util.HashMap;
5456
import java.util.List;
5557
import java.util.Map;
58+
import java.util.concurrent.atomic.AtomicInteger;
5659
import java.util.function.Predicate;
5760
import java.util.regex.Pattern;
5861
import java.util.stream.Collectors;
@@ -75,6 +78,8 @@ public class AzureBlobStoreRepositoryTests extends ESMockAPIBasedRepositoryInteg
7578
protected static final String DEFAULT_ACCOUNT_NAME = "account";
7679
protected static final Predicate<String> LIST_PATTERN = Pattern.compile("GET /[a-zA-Z0-9]+/[a-zA-Z0-9]+\\?.+").asMatchPredicate();
7780
protected static final Predicate<String> GET_BLOB_PATTERN = Pattern.compile("GET /[a-zA-Z0-9]+/[a-zA-Z0-9]+/.+").asMatchPredicate();
81+
private static final AtomicInteger MAX_CONNECTION_SETTING = new AtomicInteger(-1);
82+
private static final AtomicInteger EVENT_LOOP_THREAD_COUNT_SETTING = new AtomicInteger(-1);
7883

7984
@Override
8085
protected String repositoryType() {
@@ -132,9 +137,17 @@ protected Settings nodeSettings(int nodeOrdinal, Settings otherSettings) {
132137

133138
// see com.azure.storage.blob.BlobUrlParts.parseIpUrl
134139
final String endpoint = "ignored;DefaultEndpointsProtocol=http;BlobEndpoint=" + httpServerUrl() + "/" + accountName;
140+
141+
// The first node configured sets these for all nodes
142+
MAX_CONNECTION_SETTING.compareAndSet(-1, randomIntBetween(10, 30));
143+
EVENT_LOOP_THREAD_COUNT_SETTING.compareAndSet(-1, randomIntBetween(1, 3));
135144
return Settings.builder()
136145
.put(super.nodeSettings(nodeOrdinal, otherSettings))
137146
.put(AzureStorageSettings.ENDPOINT_SUFFIX_SETTING.getConcreteSettingForNamespace("test").getKey(), endpoint)
147+
.put(AzureClientProvider.EVENT_LOOP_THREAD_COUNT.getKey(), EVENT_LOOP_THREAD_COUNT_SETTING.get())
148+
.put(AzureClientProvider.MAX_OPEN_CONNECTIONS.getKey(), MAX_CONNECTION_SETTING.get())
149+
.put(AzureClientProvider.MAX_IDLE_TIME.getKey(), TimeValue.timeValueSeconds(randomIntBetween(10, 30)))
150+
.put(AzureClientProvider.OPEN_CONNECTION_TIMEOUT.getKey(), TimeValue.timeValueSeconds(randomIntBetween(10, 30)))
138151
.setSecureSettings(secureSettings)
139152
.build();
140153
}
@@ -262,6 +275,16 @@ private boolean isPutBlockList(String request) {
262275
}
263276
}
264277

278+
public void testSettingsTakeEffect() {
279+
AzureClientProvider azureClientProvider = internalCluster().getInstance(AzureClientProvider.class);
280+
assertEquals(MAX_CONNECTION_SETTING.get(), azureClientProvider.getConnectionProvider().maxConnections());
281+
ThreadPool nodeThreadPool = internalCluster().getInstance(ThreadPool.class);
282+
assertEquals(
283+
EVENT_LOOP_THREAD_COUNT_SETTING.get(),
284+
nodeThreadPool.info(AzureRepositoryPlugin.NETTY_EVENT_LOOP_THREAD_POOL_NAME).getMax()
285+
);
286+
}
287+
265288
public void testLargeBlobCountDeletion() throws Exception {
266289
int numberOfBlobs = randomIntBetween(257, 2000);
267290
try (BlobStore store = newBlobStore()) {

modules/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureClientProvider.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,11 @@ protected void doStop() {
265265
@Override
266266
protected void doClose() {}
267267

268+
// visible for testing
269+
ConnectionProvider getConnectionProvider() {
270+
return connectionProvider;
271+
}
272+
268273
static class RequestMetrics {
269274
private volatile long totalRequestTimeNanos = 0;
270275
private volatile int requestCount;

modules/repository-azure/src/main/java/org/elasticsearch/repositories/azure/AzureRepositoryPlugin.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ AzureStorageService createAzureStorageService(Settings settingsToUse, AzureClien
9797
@Override
9898
public List<Setting<?>> getSettings() {
9999
return Arrays.asList(
100+
AzureClientProvider.EVENT_LOOP_THREAD_COUNT,
101+
AzureClientProvider.MAX_OPEN_CONNECTIONS,
102+
AzureClientProvider.OPEN_CONNECTION_TIMEOUT,
103+
AzureClientProvider.MAX_IDLE_TIME,
100104
AzureStorageSettings.ACCOUNT_SETTING,
101105
AzureStorageSettings.KEY_SETTING,
102106
AzureStorageSettings.SAS_TOKEN_SETTING,

0 commit comments

Comments
 (0)