From 2a3ea25a97090e97bfa39931d53bda2a954243fd Mon Sep 17 00:00:00 2001 From: Matthias Oesterheld Date: Thu, 9 Jul 2026 12:25:08 +0200 Subject: [PATCH 1/6] bump opensearch-java client to 3.9.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a48a8c5c88d1..ea8097c35931 100644 --- a/pom.xml +++ b/pom.xml @@ -98,7 +98,7 @@ 2.19.3-1 - 3.2.0 + 3.9.0 3.2.0 5.32.0 4.13.2 From 8e5d0c5f9d2ff0281886e3e3ca65820992972f2e Mon Sep 17 00:00:00 2001 From: Matthias Oesterheld Date: Thu, 9 Jul 2026 12:25:29 +0200 Subject: [PATCH 2/6] fix compression enabled setting in os client --- .../org/graylog/storage/opensearch2/RestClientProvider.java | 2 +- .../storage/opensearch3/OfficialOpensearchClientProvider.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/graylog-storage-opensearch2/src/main/java/org/graylog/storage/opensearch2/RestClientProvider.java b/graylog-storage-opensearch2/src/main/java/org/graylog/storage/opensearch2/RestClientProvider.java index 02dd8ecf0234..a7e3652a3161 100644 --- a/graylog-storage-opensearch2/src/main/java/org/graylog/storage/opensearch2/RestClientProvider.java +++ b/graylog-storage-opensearch2/src/main/java/org/graylog/storage/opensearch2/RestClientProvider.java @@ -141,7 +141,7 @@ public RestHighLevelClient buildBasicRestClient(List hosts) { } return httpClientConfig; }) - .setChunkedEnabled(configuration.compressionEnabled()); + .setCompressionEnabled(configuration.compressionEnabled()); return new RestHighLevelClient(restClientBuilder); } diff --git a/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/OfficialOpensearchClientProvider.java b/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/OfficialOpensearchClientProvider.java index ba90913751ff..2c9733badb3c 100644 --- a/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/OfficialOpensearchClientProvider.java +++ b/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/OfficialOpensearchClientProvider.java @@ -136,7 +136,7 @@ public OpenSearchTransport buildTransport(List uris, TransportConfig config .setAuthenticationEnabled(true) ); - builder.setChunkedEnabled(clientConfiguration.compressionEnabled()); + builder.setCompressionEnabled(clientConfiguration.compressionEnabled()); builder.setHttpClientConfigCallback(httpClientBuilder -> { final PoolingAsyncClientConnectionManagerBuilder connectionManagerBuilder = PoolingAsyncClientConnectionManagerBuilder.create() From d2e6c5471ec0cd79e9562c1e2784f3f9f0a4ad29 Mon Sep 17 00:00:00 2001 From: Matthias Oesterheld Date: Thu, 9 Jul 2026 12:26:22 +0200 Subject: [PATCH 3/6] fix parameter documentation --- .../configuration/ElasticsearchClientConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graylog2-server/src/main/java/org/graylog2/configuration/ElasticsearchClientConfiguration.java b/graylog2-server/src/main/java/org/graylog2/configuration/ElasticsearchClientConfiguration.java index 8d0c0c08c096..ffa4d2d67071 100644 --- a/graylog2-server/src/main/java/org/graylog2/configuration/ElasticsearchClientConfiguration.java +++ b/graylog2-server/src/main/java/org/graylog2/configuration/ElasticsearchClientConfiguration.java @@ -197,7 +197,7 @@ Maximum number of total connections per Elasticsearch route (normally this means private String defaultPasswordForDiscoveredNodes = null; @Documentation(""" - Enable payload compression for Elasticsearch requests. + Enable payload compression for Elasticsearch requests and responses. Default: false """) From 77d263f188bcdce4ccb5c5d4a195ef0a7ff97dcd Mon Sep 17 00:00:00 2001 From: Matthias Oesterheld Date: Thu, 9 Jul 2026 12:30:53 +0200 Subject: [PATCH 4/6] cl --- changelog/unreleased/pr-26633.toml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 changelog/unreleased/pr-26633.toml diff --git a/changelog/unreleased/pr-26633.toml b/changelog/unreleased/pr-26633.toml new file mode 100644 index 000000000000..c7f6bdde9960 --- /dev/null +++ b/changelog/unreleased/pr-26633.toml @@ -0,0 +1,4 @@ +type = "f" +message = "Fix setting compression in OpenSearch client when enabled using `elasticsearch_compression_enabled`." + +pulls = ["26633"] From 92b3cc5f4fa0e65f0b1d752dd280ef9696ec17fa Mon Sep 17 00:00:00 2001 From: Matthias Oesterheld Date: Thu, 9 Jul 2026 14:57:18 +0200 Subject: [PATCH 5/6] adapt to new client --- .../org/graylog/storage/opensearch3/MoreSearchAdapterOS.java | 2 +- .../storage/opensearch3/client/CustomOpenSearchClient.java | 4 ++-- .../graylog/storage/opensearch3/views/OpenSearchBackend.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/MoreSearchAdapterOS.java b/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/MoreSearchAdapterOS.java index 77d596589859..d0c636d4f669 100644 --- a/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/MoreSearchAdapterOS.java +++ b/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/MoreSearchAdapterOS.java @@ -249,7 +249,7 @@ public MoreSearch.Histogram eventHistogram(String queryString, AbsoluteRange tim return dh; }) - .aggregations(TERMS_AGGREGATION_NAME, Aggregation.builder().terms(terms -> terms.minDocCount(0).field(EventDto.FIELD_ALERT)).build()) + .aggregations(TERMS_AGGREGATION_NAME, Aggregation.builder().terms(terms -> terms.minDocCount(0L).field(EventDto.FIELD_ALERT)).build()) .build(); builder.aggregations(HISTOGRAM_AGGREGATION_NAME, histogramAggregation); diff --git a/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/client/CustomOpenSearchClient.java b/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/client/CustomOpenSearchClient.java index 6ff51d9c582f..b59ac12a3ed9 100644 --- a/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/client/CustomOpenSearchClient.java +++ b/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/client/CustomOpenSearchClient.java @@ -20,7 +20,7 @@ import org.opensearch.client.opensearch.OpenSearchClient; import org.opensearch.client.opensearch._types.ErrorResponse; import org.opensearch.client.opensearch._types.OpenSearchException; -import org.opensearch.client.opensearch._types.ShardFailure; +import org.opensearch.client.opensearch._types.ShardSearchFailure; import org.opensearch.client.opensearch._types.ShardStatistics; import org.opensearch.client.opensearch.core.MsearchResponse; import org.opensearch.client.opensearch.core.SearchRequest; @@ -68,7 +68,7 @@ static void throwOnShardFailures(ShardStatistics shards) { } final var reason = String.format(Locale.ROOT, "%d of %d shards failed", shards.failed(), shards.total()); final var rootCauses = shards.failures().stream() - .map(ShardFailure::reason) + .map(ShardSearchFailure::reason) .toList(); throw new OpenSearchException(ErrorResponse.of(r -> r .status(500) diff --git a/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/views/OpenSearchBackend.java b/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/views/OpenSearchBackend.java index 2cb91d310e34..5db8eaa726c1 100644 --- a/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/views/OpenSearchBackend.java +++ b/graylog-storage-opensearch3/src/main/java/org/graylog/storage/opensearch3/views/OpenSearchBackend.java @@ -60,7 +60,7 @@ import org.opensearch.client.opensearch._types.ExpandWildcard; import org.opensearch.client.opensearch._types.FieldValue; import org.opensearch.client.opensearch._types.OpenSearchException; -import org.opensearch.client.opensearch._types.ShardFailure; +import org.opensearch.client.opensearch._types.ShardSearchFailure; import org.opensearch.client.opensearch._types.Time; import org.opensearch.client.opensearch._types.query_dsl.BoolQuery; import org.opensearch.client.opensearch._types.query_dsl.MatchAllQuery; @@ -457,7 +457,7 @@ private Optional checkForFailedShards(MultiSearchRespons final MultiSearchItem searchResponse = multiSearchResponse.result(); if (searchResponse != null && searchResponse.shards().failed() > 0) { final List shardFailures = searchResponse.shards().failures().stream() - .map(ShardFailure::reason) + .map(ShardSearchFailure::reason) .toList(); final List nonNumericFieldErrors = shardFailures .stream() From ba42fae7fce79986b9bcecb679c579665bb4d1ab Mon Sep 17 00:00:00 2001 From: Matthias Oesterheld Date: Thu, 9 Jul 2026 17:27:22 +0200 Subject: [PATCH 6/6] fix test --- .../opensearch3/client/CustomOpenSearchClientTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/graylog-storage-opensearch3/src/test/java/org/graylog/storage/opensearch3/client/CustomOpenSearchClientTest.java b/graylog-storage-opensearch3/src/test/java/org/graylog/storage/opensearch3/client/CustomOpenSearchClientTest.java index b5c9e30bcf79..6b3c31be3a45 100644 --- a/graylog-storage-opensearch3/src/test/java/org/graylog/storage/opensearch3/client/CustomOpenSearchClientTest.java +++ b/graylog-storage-opensearch3/src/test/java/org/graylog/storage/opensearch3/client/CustomOpenSearchClientTest.java @@ -19,7 +19,7 @@ import org.junit.jupiter.api.Test; import org.opensearch.client.opensearch._types.ErrorCause; import org.opensearch.client.opensearch._types.OpenSearchException; -import org.opensearch.client.opensearch._types.ShardFailure; +import org.opensearch.client.opensearch._types.ShardSearchFailure; import org.opensearch.client.opensearch._types.ShardStatistics; import static org.assertj.core.api.Assertions.assertThat; @@ -37,7 +37,7 @@ void throwOnShardFailuresDoesNothingWhenAllShardsSucceeded() { @Test void throwOnShardFailuresDoesNothingWhenSomeShardsFailedButOthersSucceeded() { - final ShardFailure failure = ShardFailure.of(b -> b + final ShardSearchFailure failure = ShardSearchFailure.of(b -> b .index("graylog_0") .shard(2) .reason(ErrorCause.of(c -> c.type("query_shard_exception").reason("parse error"))) @@ -54,7 +54,7 @@ void throwOnShardFailuresDoesNothingWhenSomeShardsFailedButOthersSucceeded() { @Test void throwOnShardFailuresThrowsWhenAllShardsFailed() { - final ShardFailure failure = ShardFailure.of(b -> b + final ShardSearchFailure failure = ShardSearchFailure.of(b -> b .index("graylog_0") .shard(2) .reason(ErrorCause.of(c -> c.type("query_shard_exception").reason("parse error")))