diff --git a/modules/repository-s3/src/internalClusterTest/java/org/elasticsearch/repositories/s3/S3BlobStoreRepositoryTests.java b/modules/repository-s3/src/internalClusterTest/java/org/elasticsearch/repositories/s3/S3BlobStoreRepositoryTests.java index 12220dc51ea8f..92b305c97b0ca 100644 --- a/modules/repository-s3/src/internalClusterTest/java/org/elasticsearch/repositories/s3/S3BlobStoreRepositoryTests.java +++ b/modules/repository-s3/src/internalClusterTest/java/org/elasticsearch/repositories/s3/S3BlobStoreRepositoryTests.java @@ -282,7 +282,7 @@ public void testMetrics() throws Exception { final BlobStore blobStore = blobStoreRepository.blobStore(); final BlobStore delegateBlobStore = ((BlobStoreWrapper) blobStore).delegate(); final S3BlobStore s3BlobStore = (S3BlobStore) delegateBlobStore; - final Map statsCollectors = s3BlobStore + final Map statsCollectors = s3BlobStore .getStatsCollectors().collectors; final var plugins = internalCluster().getInstance(PluginsService.class, nodeName) diff --git a/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3BlobStore.java b/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3BlobStore.java index 74cd995c7207a..2a35ff5598659 100644 --- a/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3BlobStore.java +++ b/modules/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3BlobStore.java @@ -134,15 +134,16 @@ public TimeValue getCompareAndExchangeAntiContentionDelay() { return service.compareAndExchangeAntiContentionDelay; } - // metrics collector that ignores null responses that we interpret as the request not reaching the S3 endpoint due to a network - // issue - class IgnoreNoResponseMetricsCollector extends RequestMetricCollector { + /** + * A {@link RequestMetricCollector} that processes the metrics related to each API invocation attempt according to Elasticsearch's needs + */ + class ElasticsearchS3MetricsCollector extends RequestMetricCollector { final LongAdder counter = new LongAdder(); private final Operation operation; private final Map attributes; - private IgnoreNoResponseMetricsCollector(Operation operation, OperationPurpose purpose) { + private ElasticsearchS3MetricsCollector(Operation operation, OperationPurpose purpose) { this.operation = operation; this.attributes = Map.of( "repo_type", @@ -519,7 +520,7 @@ public String toString() { } class StatsCollectors { - final Map collectors = new ConcurrentHashMap<>(); + final Map collectors = new ConcurrentHashMap<>(); RequestMetricCollector getMetricCollector(Operation operation, OperationPurpose purpose) { return collectors.computeIfAbsent(new StatsKey(operation, purpose), k -> buildMetricCollector(k.operation(), k.purpose())); @@ -537,8 +538,8 @@ Map statsMap(boolean isStateless) { } } - IgnoreNoResponseMetricsCollector buildMetricCollector(Operation operation, OperationPurpose purpose) { - return new IgnoreNoResponseMetricsCollector(operation, purpose); + ElasticsearchS3MetricsCollector buildMetricCollector(Operation operation, OperationPurpose purpose) { + return new ElasticsearchS3MetricsCollector(operation, purpose); } }