From 82b919c8f426c70b2a38512d1a4d4ce694e76954 Mon Sep 17 00:00:00 2001 From: Scott Balmos <399112+sbalmos@users.noreply.github.com> Date: Sun, 21 Sep 2025 16:16:15 -0400 Subject: [PATCH 1/2] Implement proper indexer ack query compression in `splunk_hec` sinks --- .../splunk_hec/common/acknowledgements.rs | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/sinks/splunk_hec/common/acknowledgements.rs b/src/sinks/splunk_hec/common/acknowledgements.rs index 5fc0ab568823f..6975653a8b2fc 100644 --- a/src/sinks/splunk_hec/common/acknowledgements.rs +++ b/src/sinks/splunk_hec/common/acknowledgements.rs @@ -1,16 +1,17 @@ +use hyper::Body; +use serde::{Deserialize, Serialize}; +use std::io::Write; use std::{ collections::HashMap, num::{NonZeroU8, NonZeroU64}, sync::Arc, time::Duration, }; - -use hyper::Body; -use serde::{Deserialize, Serialize}; use tokio::sync::{mpsc::Receiver, oneshot::Sender}; use vector_lib::{configurable::configurable_component, event::EventStatus}; use super::service::{HttpRequestBuilder, MetadataFields}; +use crate::sinks::util::Compressor; use crate::{ config::AcknowledgementsConfig, http::HttpClient, @@ -18,7 +19,6 @@ use crate::{ SplunkIndexerAcknowledgementAPIError, SplunkIndexerAcknowledgementAckAdded, SplunkIndexerAcknowledgementAcksRemoved, }, - sinks::util::Compression, }; /// Splunk HEC acknowledgement configuration. @@ -96,12 +96,6 @@ impl HecAckClient { client: HttpClient, http_request_builder: Arc, ) -> Self { - // Reimplement with compression support, see https://github.com/vectordotdev/vector/issues/23748 - let http_request_builder = Arc::new(HttpRequestBuilder { - compression: Compression::None, - ..(*http_request_builder).clone() - }); - Self { acks: HashMap::new(), retry_limit, @@ -222,10 +216,18 @@ impl HecAckClient { let request_body_bytes = crate::serde::json::to_bytes(request_body) .map_err(|_| HecAckApiError::ClientBuildRequest)? .freeze(); + let mut compressor = Compressor::from(self.http_request_builder.compression); + compressor + .write_all(request_body_bytes.as_ref()) + .map_err(|_| HecAckApiError::ClientBuildRequest)?; + let payload = compressor + .finish() + .map_err(|_| HecAckApiError::ClientBuildRequest)? + .freeze(); let request = self .http_request_builder .build_request( - request_body_bytes, + payload, "/services/collector/ack", None, MetadataFields::default(), From 64c50063a2bd8994ee3c21e9b89744a9f38e77cf Mon Sep 17 00:00:00 2001 From: Scott Balmos <399112+sbalmos@users.noreply.github.com> Date: Sun, 21 Sep 2025 16:23:34 -0400 Subject: [PATCH 2/2] Changelog fragment --- changelog.d/23748_add_indexer_ack_compression.feature.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog.d/23748_add_indexer_ack_compression.feature.md diff --git a/changelog.d/23748_add_indexer_ack_compression.feature.md b/changelog.d/23748_add_indexer_ack_compression.feature.md new file mode 100644 index 0000000000000..5b9068623a09a --- /dev/null +++ b/changelog.d/23748_add_indexer_ack_compression.feature.md @@ -0,0 +1,3 @@ +Adds proper support for compression of HEC indexer ack queries, using the sink's configured `compression` setting. + +authors: sbalmos