From b966f12c00157405e7eaadc1d46dffd0504ae7b7 Mon Sep 17 00:00:00 2001 From: Tom Fenwick Date: Tue, 6 Feb 2024 10:48:20 -0800 Subject: [PATCH 1/6] allow for kafka-emitter to have extra dimensions be set for each event it emits --- .../extensions-contrib/kafka-emitter.md | 22 ++++++++++--------- .../druid/emitter/kafka/KafkaEmitter.java | 21 +++++++++++++----- .../emitter/kafka/KafkaEmitterConfig.java | 20 +++++++++++++---- .../emitter/kafka/KafkaEmitterConfigTest.java | 5 ++++- .../druid/emitter/kafka/KafkaEmitterTest.java | 2 +- 5 files changed, 49 insertions(+), 21 deletions(-) diff --git a/docs/development/extensions-contrib/kafka-emitter.md b/docs/development/extensions-contrib/kafka-emitter.md index 40b63ca73afd..821893c86a91 100644 --- a/docs/development/extensions-contrib/kafka-emitter.md +++ b/docs/development/extensions-contrib/kafka-emitter.md @@ -36,16 +36,17 @@ to monitor the status of your Druid cluster with this extension. All the configuration parameters for the Kafka emitter are under `druid.emitter.kafka`. -| Property | Description | Required | Default | -|----------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|-----------|-----------------------| -| `druid.emitter.kafka.bootstrap.servers` | Comma-separated Kafka broker. (`[hostname:port],[hostname:port]...`) | yes | none | -| `druid.emitter.kafka.event.types` | Comma-separated event types.
Supported types are `alerts`, `metrics`, `requests`, and `segment_metadata`. | no | `["metrics", "alerts"]` | -| `druid.emitter.kafka.metric.topic` | Kafka topic name for emitter's target to emit service metrics. If `event.types` contains `metrics`, this field cannot be empty. | no | none | -| `druid.emitter.kafka.alert.topic` | Kafka topic name for emitter's target to emit alerts. If `event.types` contains `alerts`, this field cannot empty. | no | none | -| `druid.emitter.kafka.request.topic` | Kafka topic name for emitter's target to emit request logs. If `event.types` contains `requests`, this field cannot be empty. | no | none | -| `druid.emitter.kafka.segmentMetadata.topic` | Kafka topic name for emitter's target to emit segment metadata. If `event.types` contains `segment_metadata`, this field cannot be empty. | no | none | -| `druid.emitter.kafka.producer.config` | JSON configuration to set additional properties to Kafka producer. | no | none | -| `druid.emitter.kafka.clusterName` | Optional value to specify the name of your Druid cluster. It can help make groups in your monitoring environment. | no | none | +| Property | Description | Required | Default | +|---------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|-----------------------| +| `druid.emitter.kafka.bootstrap.servers` | Comma-separated Kafka broker. (`[hostname:port],[hostname:port]...`) | yes | none | +| `druid.emitter.kafka.event.types` | Comma-separated event types.
Supported types are `alerts`, `metrics`, `requests`, and `segment_metadata`. | no | `["metrics", "alerts"]` | +| `druid.emitter.kafka.metric.topic` | Kafka topic name for emitter's target to emit service metrics. If `event.types` contains `metrics`, this field cannot be empty. | no | none | +| `druid.emitter.kafka.alert.topic` | Kafka topic name for emitter's target to emit alerts. If `event.types` contains `alerts`, this field cannot empty. | no | none | +| `druid.emitter.kafka.request.topic` | Kafka topic name for emitter's target to emit request logs. If `event.types` contains `requests`, this field cannot be empty. | no | none | +| `druid.emitter.kafka.segmentMetadata.topic` | Kafka topic name for emitter's target to emit segment metadata. If `event.types` contains `segment_metadata`, this field cannot be empty. | no | none | +| `druid.emitter.kafka.producer.config` | JSON configuration to set additional properties to Kafka producer. | no | none | +| `druid.emitter.kafka.clusterName` | Optional value to specify the name of your Druid cluster. It can help make groups in your monitoring environment. | no | none | +| `druid.emitter.kafka.extra.dimensions` | Optional JSON configuration to specify a map of string extra dimensions for the events emitted. These can help make groups in your monitoring environment. | no | none | ### Example @@ -57,5 +58,6 @@ druid.emitter.kafka.alert.topic=druid-alert druid.emitter.kafka.request.topic=druid-request-logs druid.emitter.kafka.segmentMetadata.topic=druid-segment-metadata druid.emitter.kafka.producer.config={"max.block.ms":10000} +druid.emitter.kafka.extra.dimensions={"region":"us-east-1","environment":"preProd"} ``` diff --git a/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitter.java b/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitter.java index 661543f707cb..a0cb1a9afe1e 100644 --- a/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitter.java +++ b/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitter.java @@ -198,11 +198,7 @@ public void emit(final Event event) if (event != null) { try { EventMap map = event.toMap(); - if (config.getClusterName() != null) { - map = map.asBuilder() - .put("clusterName", config.getClusterName()) - .build(); - } + map = addExtraDimensionsToEvent(map); String resultJson = jsonMapper.writeValueAsString(map); @@ -239,6 +235,21 @@ public void emit(final Event event) } } + private EventMap addExtraDimensionsToEvent(EventMap map) + { + if (config.getClusterName() != null || config.getExtraDimensions() != null) { + EventMap.Builder eventMapBuilder = map.asBuilder(); + if (config.getClusterName() != null) { + eventMapBuilder.put("clusterName", config.getClusterName()); + } + if (config.getExtraDimensions() != null) { + eventMapBuilder.putAll(config.getExtraDimensions()); + } + map = eventMapBuilder.build(); + } + return map; + } + @Override public void flush() { diff --git a/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java b/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java index c7038079aa43..32b5b64f9add 100644 --- a/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java +++ b/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java @@ -32,6 +32,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -62,7 +63,7 @@ public static EventType fromString(String name) public static final Set DEFAULT_EVENT_TYPES = ImmutableSet.of(EventType.ALERTS, EventType.METRICS); @JsonProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG) private final String bootstrapServers; - @Nullable @JsonProperty("event.types") + @Nonnull @JsonProperty("event.types") private final Set eventTypes; @Nullable @JsonProperty("metric.topic") private final String metricTopic; @@ -72,8 +73,10 @@ public static EventType fromString(String name) private final String requestTopic; @Nullable @JsonProperty("segmentMetadata.topic") private final String segmentMetadataTopic; - @JsonProperty + @Nullable @JsonProperty private final String clusterName; + @Nullable @JsonProperty("extra.dimensions") + private final Map extraDimensions; @JsonProperty("producer.config") private final Map kafkaProducerConfig; @JsonProperty("producer.hiddenProperties") @@ -87,7 +90,8 @@ public KafkaEmitterConfig( @Nullable @JsonProperty("alert.topic") String alertTopic, @Nullable @JsonProperty("request.topic") String requestTopic, @Nullable @JsonProperty("segmentMetadata.topic") String segmentMetadataTopic, - @JsonProperty("clusterName") String clusterName, + @Nullable @JsonProperty("clusterName") String clusterName, + @Nullable @JsonProperty("extra.dimensions") Map extraDimensions, @JsonProperty("producer.config") @Nullable Map kafkaProducerConfig, @JsonProperty("producer.hiddenProperties") @Nullable DynamicConfigProvider kafkaProducerSecrets ) @@ -99,10 +103,12 @@ public KafkaEmitterConfig( this.requestTopic = this.eventTypes.contains(EventType.REQUESTS) ? Preconditions.checkNotNull(requestTopic, "druid.emitter.kafka.request.topic can not be null") : null; this.segmentMetadataTopic = this.eventTypes.contains(EventType.SEGMENT_METADATA) ? Preconditions.checkNotNull(segmentMetadataTopic, "druid.emitter.kafka.segmentMetadata.topic can not be null") : null; this.clusterName = clusterName; + this.extraDimensions = extraDimensions; this.kafkaProducerConfig = kafkaProducerConfig == null ? ImmutableMap.of() : kafkaProducerConfig; this.kafkaProducerSecrets = kafkaProducerSecrets == null ? new MapStringDynamicConfigProvider(ImmutableMap.of()) : kafkaProducerSecrets; } + @Nonnull private Set maybeUpdateEventTypes(Set eventTypes, String requestTopic) { // Unless explicitly overridden, kafka emitter will always emit metrics and alerts @@ -143,12 +149,18 @@ public String getAlertTopic() return alertTopic; } - @JsonProperty + @Nullable @JsonProperty public String getClusterName() { return clusterName; } + @Nullable + public Map getExtraDimensions() + { + return extraDimensions; + } + @Nullable public String getRequestTopic() { diff --git a/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java b/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java index 603c8e6701bf..321ab6cf869f 100644 --- a/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java +++ b/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java @@ -58,6 +58,7 @@ public void testSerDeserKafkaEmitterConfig() throws IOException "requestTest", "metadataTest", "clusterNameTest", + null, ImmutableMap.builder() .put("testKey", "testValue").build(), DEFAULT_PRODUCER_SECRETS @@ -79,6 +80,7 @@ public void testSerDeserKafkaEmitterConfigNullRequestTopic() throws IOException null, "metadataTest", "clusterNameTest", + null, ImmutableMap.builder() .put("testKey", "testValue").build(), DEFAULT_PRODUCER_SECRETS @@ -102,6 +104,7 @@ public void testSerDeserKafkaEmitterConfigNullMetricsTopic() throws IOException null, "metadataTest", "clusterNameTest", + null, ImmutableMap.builder() .put("testKey", "testValue").build(), DEFAULT_PRODUCER_SECRETS @@ -117,7 +120,7 @@ public void testSerDeNotRequiredKafkaProducerConfigOrKafkaSecretProducer() { KafkaEmitterConfig kafkaEmitterConfig = new KafkaEmitterConfig("localhost:9092", null, "metricTest", "alertTest", null, "metadataTest", - "clusterNameTest", null, null + "clusterNameTest", null, null, null ); try { @SuppressWarnings("unused") diff --git a/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterTest.java b/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterTest.java index 1c30bee12fa2..336bf2250cd0 100644 --- a/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterTest.java +++ b/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterTest.java @@ -106,7 +106,7 @@ public void testKafkaEmitter() throws InterruptedException ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JodaModule()); final KafkaEmitter kafkaEmitter = new KafkaEmitter( - new KafkaEmitterConfig("", eventsType, "metrics", "alerts", requestTopic, "metadata", "test-cluster", null, null), + new KafkaEmitterConfig("", eventsType, "metrics", "alerts", requestTopic, "metadata", "test-cluster", null, null, null), mapper ) { From 23ac84a08d20912853605b2f02432daf81b6b2d0 Mon Sep 17 00:00:00 2001 From: Tom Fenwick Date: Tue, 6 Feb 2024 13:12:12 -0800 Subject: [PATCH 2/6] fix checktsyle issue in kafkaemitterconfig --- .../org/apache/druid/emitter/kafka/KafkaEmitterConfig.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java b/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java index 32b5b64f9add..bef7d351dbcb 100644 --- a/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java +++ b/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java @@ -32,7 +32,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -240,6 +239,7 @@ public int hashCode() result = 31 * result + (getRequestTopic() != null ? getRequestTopic().hashCode() : 0); result = 31 * result + (getSegmentMetadataTopic() != null ? getSegmentMetadataTopic().hashCode() : 0); result = 31 * result + (getClusterName() != null ? getClusterName().hashCode() : 0); + result = 31 * result + (getExtraDimensions() != null ? getExtraDimensions().hashCode() : 0); result = 31 * result + getKafkaProducerConfig().hashCode(); result = 31 * result + getKafkaProducerSecrets().getConfig().hashCode(); return result; @@ -256,6 +256,7 @@ public String toString() ", request.topic='" + requestTopic + '\'' + ", segmentMetadata.topic='" + segmentMetadataTopic + '\'' + ", clusterName='" + clusterName + '\'' + + ", extra.dimensions='" + clusterName + '\'' + ", producer.config=" + kafkaProducerConfig + '\'' + ", producer.hiddenProperties=" + kafkaProducerSecrets + '}'; From 0bf6079f4ecd49f2bde51b77251fb71de3394086 Mon Sep 17 00:00:00 2001 From: Tom Fenwick Date: Tue, 6 Feb 2024 14:00:05 -0800 Subject: [PATCH 3/6] make changes to fix docs, and cleanup copy paste error in #toString() --- docs/development/extensions-contrib/kafka-emitter.md | 2 +- .../java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java | 2 +- .../java/org/apache/druid/emitter/kafka/KafkaEmitterTest.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/development/extensions-contrib/kafka-emitter.md b/docs/development/extensions-contrib/kafka-emitter.md index 821893c86a91..c6fb943fa84e 100644 --- a/docs/development/extensions-contrib/kafka-emitter.md +++ b/docs/development/extensions-contrib/kafka-emitter.md @@ -46,7 +46,7 @@ All the configuration parameters for the Kafka emitter are under `druid.emitter. | `druid.emitter.kafka.segmentMetadata.topic` | Kafka topic name for emitter's target to emit segment metadata. If `event.types` contains `segment_metadata`, this field cannot be empty. | no | none | | `druid.emitter.kafka.producer.config` | JSON configuration to set additional properties to Kafka producer. | no | none | | `druid.emitter.kafka.clusterName` | Optional value to specify the name of your Druid cluster. It can help make groups in your monitoring environment. | no | none | -| `druid.emitter.kafka.extra.dimensions` | Optional JSON configuration to specify a map of string extra dimensions for the events emitted. These can help make groups in your monitoring environment. | no | none | +| `druid.emitter.kafka.extra.dimensions` | Optional JSON configuration to specify a map of extra string dimensions for the events emitted. These can help make groups in your monitoring environment. | no | none | ### Example diff --git a/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java b/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java index bef7d351dbcb..86f636e853d1 100644 --- a/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java +++ b/extensions-contrib/kafka-emitter/src/main/java/org/apache/druid/emitter/kafka/KafkaEmitterConfig.java @@ -256,7 +256,7 @@ public String toString() ", request.topic='" + requestTopic + '\'' + ", segmentMetadata.topic='" + segmentMetadataTopic + '\'' + ", clusterName='" + clusterName + '\'' + - ", extra.dimensions='" + clusterName + '\'' + + ", extra.dimensions='" + extraDimensions + '\'' + ", producer.config=" + kafkaProducerConfig + '\'' + ", producer.hiddenProperties=" + kafkaProducerSecrets + '}'; diff --git a/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterTest.java b/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterTest.java index 336bf2250cd0..228982b6cd74 100644 --- a/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterTest.java +++ b/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterTest.java @@ -106,7 +106,7 @@ public void testKafkaEmitter() throws InterruptedException ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JodaModule()); final KafkaEmitter kafkaEmitter = new KafkaEmitter( - new KafkaEmitterConfig("", eventsType, "metrics", "alerts", requestTopic, "metadata", "test-cluster", null, null, null), + new KafkaEmitterConfig("", eventsType, "metrics", "alerts", requestTopic, "metadata", "test-cluster", ImmutableMap.of("clusterId", "cluster-101"), null, null), mapper ) { From 952e1bdc8c6ea32717078159125bf91bd7f06d0b Mon Sep 17 00:00:00 2001 From: Tom Fenwick Date: Wed, 7 Feb 2024 11:22:59 -0800 Subject: [PATCH 4/6] undo formatting to markdown table --- .../extensions-contrib/kafka-emitter.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/development/extensions-contrib/kafka-emitter.md b/docs/development/extensions-contrib/kafka-emitter.md index c6fb943fa84e..a3641e89cec2 100644 --- a/docs/development/extensions-contrib/kafka-emitter.md +++ b/docs/development/extensions-contrib/kafka-emitter.md @@ -36,17 +36,17 @@ to monitor the status of your Druid cluster with this extension. All the configuration parameters for the Kafka emitter are under `druid.emitter.kafka`. -| Property | Description | Required | Default | -|---------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|-----------------------| -| `druid.emitter.kafka.bootstrap.servers` | Comma-separated Kafka broker. (`[hostname:port],[hostname:port]...`) | yes | none | -| `druid.emitter.kafka.event.types` | Comma-separated event types.
Supported types are `alerts`, `metrics`, `requests`, and `segment_metadata`. | no | `["metrics", "alerts"]` | -| `druid.emitter.kafka.metric.topic` | Kafka topic name for emitter's target to emit service metrics. If `event.types` contains `metrics`, this field cannot be empty. | no | none | -| `druid.emitter.kafka.alert.topic` | Kafka topic name for emitter's target to emit alerts. If `event.types` contains `alerts`, this field cannot empty. | no | none | -| `druid.emitter.kafka.request.topic` | Kafka topic name for emitter's target to emit request logs. If `event.types` contains `requests`, this field cannot be empty. | no | none | -| `druid.emitter.kafka.segmentMetadata.topic` | Kafka topic name for emitter's target to emit segment metadata. If `event.types` contains `segment_metadata`, this field cannot be empty. | no | none | -| `druid.emitter.kafka.producer.config` | JSON configuration to set additional properties to Kafka producer. | no | none | -| `druid.emitter.kafka.clusterName` | Optional value to specify the name of your Druid cluster. It can help make groups in your monitoring environment. | no | none | -| `druid.emitter.kafka.extra.dimensions` | Optional JSON configuration to specify a map of extra string dimensions for the events emitted. These can help make groups in your monitoring environment. | no | none | +| Property | Description | Required | Default | +|----------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|-----------|-----------------------| +| `druid.emitter.kafka.bootstrap.servers` | Comma-separated Kafka broker. (`[hostname:port],[hostname:port]...`) | yes | none | +| `druid.emitter.kafka.event.types` | Comma-separated event types.
Supported types are `alerts`, `metrics`, `requests`, and `segment_metadata`. | no | `["metrics", "alerts"]` | +| `druid.emitter.kafka.metric.topic` | Kafka topic name for emitter's target to emit service metrics. If `event.types` contains `metrics`, this field cannot be empty. | no | none | +| `druid.emitter.kafka.alert.topic` | Kafka topic name for emitter's target to emit alerts. If `event.types` contains `alerts`, this field cannot empty. | no | none | +| `druid.emitter.kafka.request.topic` | Kafka topic name for emitter's target to emit request logs. If `event.types` contains `requests`, this field cannot be empty. | no | none | +| `druid.emitter.kafka.segmentMetadata.topic` | Kafka topic name for emitter's target to emit segment metadata. If `event.types` contains `segment_metadata`, this field cannot be empty. | no | none | +| `druid.emitter.kafka.producer.config` | JSON configuration to set additional properties to Kafka producer. | no | none | +| `druid.emitter.kafka.clusterName` | Optional value to specify the name of your Druid cluster. It can help make groups in your monitoring environment. | no | none | +| `druid.emitter.kafka.extra.dimensions` | Optional JSON configuration to specify a map of extra string dimensions for the events emitted. These can help make groups in your monitoring environment. | no | none | ### Example From e55bdd1b66745a1324c8b9958cb747bbbcf36f73 Mon Sep 17 00:00:00 2001 From: Tom Fenwick Date: Wed, 7 Feb 2024 15:26:55 -0800 Subject: [PATCH 5/6] add more branches so test passes --- .../org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java b/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java index 321ab6cf869f..f3104e7f747f 100644 --- a/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java +++ b/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java @@ -58,7 +58,7 @@ public void testSerDeserKafkaEmitterConfig() throws IOException "requestTest", "metadataTest", "clusterNameTest", - null, + ImmutableMap.of("env","preProd"), ImmutableMap.builder() .put("testKey", "testValue").build(), DEFAULT_PRODUCER_SECRETS From fcfc5bfd9826a3c85a1ad0f992d29bc492fb8a96 Mon Sep 17 00:00:00 2001 From: Tom Fenwick Date: Thu, 8 Feb 2024 17:32:20 -0800 Subject: [PATCH 6/6] fix checkstyle issue --- .../org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java b/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java index f3104e7f747f..fb10868d362b 100644 --- a/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java +++ b/extensions-contrib/kafka-emitter/src/test/java/org/apache/druid/emitter/kafka/KafkaEmitterConfigTest.java @@ -58,7 +58,7 @@ public void testSerDeserKafkaEmitterConfig() throws IOException "requestTest", "metadataTest", "clusterNameTest", - ImmutableMap.of("env","preProd"), + ImmutableMap.of("env", "preProd"), ImmutableMap.builder() .put("testKey", "testValue").build(), DEFAULT_PRODUCER_SECRETS