diff --git a/clients/clients-integration-tests/src/test/java/org/apache/kafka/server/quota/CustomQuotaCallbackTest.java b/clients/clients-integration-tests/src/test/java/org/apache/kafka/server/quota/CustomQuotaCallbackTest.java index da42c7a300747..ee891b478262b 100644 --- a/clients/clients-integration-tests/src/test/java/org/apache/kafka/server/quota/CustomQuotaCallbackTest.java +++ b/clients/clients-integration-tests/src/test/java/org/apache/kafka/server/quota/CustomQuotaCallbackTest.java @@ -173,7 +173,7 @@ public static class MonitorableCustomQuotaCallback extends CustomQuotaCallback i @Override public void withPluginMetrics(PluginMetrics metrics) { - MetricName metricName = metrics.metricName(METRIC_NAME, METRIC_DESCRIPTION, Map.of()); + MetricName metricName = metrics.metricName(METRIC_NAME, METRIC_DESCRIPTION, new LinkedHashMap<>()); metrics.addMetric(metricName, (Gauge) (config, now) -> 1); } diff --git a/clients/src/main/java/org/apache/kafka/common/metrics/PluginMetrics.java b/clients/src/main/java/org/apache/kafka/common/metrics/PluginMetrics.java index d296234105d7b..5edd9462b80fd 100644 --- a/clients/src/main/java/org/apache/kafka/common/metrics/PluginMetrics.java +++ b/clients/src/main/java/org/apache/kafka/common/metrics/PluginMetrics.java @@ -18,7 +18,7 @@ import org.apache.kafka.common.MetricName; -import java.util.Map; +import java.util.LinkedHashMap; /** * This allows plugins to register metrics and sensors. @@ -35,7 +35,7 @@ public interface PluginMetrics { * @param tags Additional tags for the metric * @throws IllegalArgumentException if any of the tag names collide with the default tags for the plugin */ - MetricName metricName(String name, String description, Map tags); + MetricName metricName(String name, String description, LinkedHashMap tags); /** * Add a metric to monitor an object that implements {@link MetricValueProvider}. This metric won't be associated with any diff --git a/clients/src/main/java/org/apache/kafka/common/metrics/internals/PluginMetricsImpl.java b/clients/src/main/java/org/apache/kafka/common/metrics/internals/PluginMetricsImpl.java index c109b5789629a..4ea51f3ea4769 100644 --- a/clients/src/main/java/org/apache/kafka/common/metrics/internals/PluginMetricsImpl.java +++ b/clients/src/main/java/org/apache/kafka/common/metrics/internals/PluginMetricsImpl.java @@ -45,7 +45,7 @@ public PluginMetricsImpl(Metrics metrics, Map tags) { } @Override - public MetricName metricName(String name, String description, Map tags) { + public MetricName metricName(String name, String description, LinkedHashMap tags) { if (closing) throw new IllegalStateException("This PluginMetrics instance is closed"); for (String tagName : tags.keySet()) { if (this.tags.containsKey(tagName)) { diff --git a/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaConsumerTest.java b/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaConsumerTest.java index 5cdb268e04576..37bd78f4bb0e2 100644 --- a/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaConsumerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/consumer/KafkaConsumerTest.java @@ -3746,9 +3746,13 @@ private MetricName expectedMetricName(String clientId, String config, Class c private static final String NAME = "name"; private static final String DESCRIPTION = "description"; - private static final Map TAGS = Collections.singletonMap("k", "v"); + private static final LinkedHashMap TAGS = new LinkedHashMap<>(); private static final double VALUE = 123.0; + static { + TAGS.put("t1", "v1"); + } + public static class MonitorableDeserializer extends MockDeserializer implements Monitorable { @Override diff --git a/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java b/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java index d8cfe6578c0ac..a03273f1c7eb1 100644 --- a/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java +++ b/clients/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java @@ -237,14 +237,7 @@ public void testOverwriteAcksAndRetriesForIdempotentProducers() { @Test public void testAcksAndIdempotenceForIdempotentProducers() { - Properties baseProps = new Properties() {{ - setProperty( - ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9999"); - setProperty( - ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); - setProperty( - ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); - }}; + Properties baseProps = baseProperties(); Properties validProps = new Properties() {{ putAll(baseProps); @@ -347,11 +340,7 @@ public void testAcksAndIdempotenceForIdempotentProducers() { @Test public void testRetriesAndIdempotenceForIdempotentProducers() { - Properties baseProps = new Properties() {{ - setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9999"); - setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); - setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); - }}; + Properties baseProps = baseProperties(); Properties validProps = new Properties() {{ putAll(baseProps); @@ -413,13 +402,17 @@ public void testRetriesAndIdempotenceForIdempotentProducers() { "Must set retries to non-zero when using the transactional producer."); } + private Properties baseProperties() { + Properties baseProps = new Properties(); + baseProps.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9999"); + baseProps.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); + baseProps.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); + return baseProps; + } + @Test public void testInflightRequestsAndIdempotenceForIdempotentProducers() { - Properties baseProps = new Properties() {{ - setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9999"); - setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); - setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); - }}; + Properties baseProps = baseProperties(); Properties validProps = new Properties() {{ putAll(baseProps); @@ -1589,7 +1582,7 @@ public void testMeasureAbortTransactionDuration() { } @Test - public void testCommitTransactionWithRecordTooLargeException() throws Exception { + public void testCommitTransactionWithRecordTooLargeException() { Map configs = new HashMap<>(); configs.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "some.id"); configs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9000"); @@ -1619,7 +1612,7 @@ public void testCommitTransactionWithRecordTooLargeException() throws Exception } @Test - public void testCommitTransactionWithMetadataTimeoutForMissingTopic() throws Exception { + public void testCommitTransactionWithMetadataTimeoutForMissingTopic() { Map configs = new HashMap<>(); configs.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "some.id"); configs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9999"); @@ -1656,7 +1649,7 @@ public void testCommitTransactionWithMetadataTimeoutForMissingTopic() throws Exc } @Test - public void testCommitTransactionWithMetadataTimeoutForPartitionOutOfRange() throws Exception { + public void testCommitTransactionWithMetadataTimeoutForPartitionOutOfRange() { Map configs = new HashMap<>(); configs.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "some.id"); configs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9999"); @@ -1693,7 +1686,7 @@ public void testCommitTransactionWithMetadataTimeoutForPartitionOutOfRange() thr } @Test - public void testCommitTransactionWithSendToInvalidTopic() throws Exception { + public void testCommitTransactionWithSendToInvalidTopic() { Map configs = new HashMap<>(); configs.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "some.id"); configs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9000"); @@ -2129,7 +2122,7 @@ public void testOnlyCanExecuteCloseAfterInitTransactionsTimeout() { } @Test - public void testSendToInvalidTopic() throws Exception { + public void testSendToInvalidTopic() { Map configs = new HashMap<>(); configs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9000"); configs.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, "15000"); @@ -2935,9 +2928,13 @@ private MetricName expectedMetricName(String clientId, String config, Class c private static final String NAME = "name"; private static final String DESCRIPTION = "description"; - private static final Map TAGS = Collections.singletonMap("k", "v"); + private static final LinkedHashMap TAGS = new LinkedHashMap<>(); private static final double VALUE = 123.0; + static { + TAGS.put("t1", "v1"); + } + public static class MonitorableSerializer extends MockSerializer implements Monitorable { @Override diff --git a/clients/src/test/java/org/apache/kafka/common/internals/PluginTest.java b/clients/src/test/java/org/apache/kafka/common/internals/PluginTest.java index d414d77bdba2e..0fd835d742e83 100644 --- a/clients/src/test/java/org/apache/kafka/common/internals/PluginTest.java +++ b/clients/src/test/java/org/apache/kafka/common/internals/PluginTest.java @@ -26,7 +26,7 @@ import java.io.Closeable; import java.io.IOException; import java.util.Arrays; -import java.util.Collections; +import java.util.LinkedHashMap; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -129,7 +129,7 @@ public void testUsePluginMetricsAfterClose() throws Exception { Plugin plugin = Plugin.wrapInstance(new SomeMonitorablePlugin(), METRICS, CONFIG); PluginMetrics pluginMetrics = plugin.get().pluginMetrics; plugin.close(); - assertThrows(IllegalStateException.class, () -> pluginMetrics.metricName("", "", Collections.emptyMap())); + assertThrows(IllegalStateException.class, () -> pluginMetrics.metricName("", "", new LinkedHashMap<>())); assertThrows(IllegalStateException.class, () -> pluginMetrics.addMetric(null, null)); assertThrows(IllegalStateException.class, () -> pluginMetrics.removeMetric(null)); assertThrows(IllegalStateException.class, () -> pluginMetrics.addSensor("")); diff --git a/clients/src/test/java/org/apache/kafka/common/metrics/internals/PluginMetricsImplTest.java b/clients/src/test/java/org/apache/kafka/common/metrics/internals/PluginMetricsImplTest.java index 0ff349e361d6a..4d0bedb3d3061 100644 --- a/clients/src/test/java/org/apache/kafka/common/metrics/internals/PluginMetricsImplTest.java +++ b/clients/src/test/java/org/apache/kafka/common/metrics/internals/PluginMetricsImplTest.java @@ -27,7 +27,6 @@ import org.junit.jupiter.api.Test; import java.io.IOException; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; @@ -36,11 +35,15 @@ public class PluginMetricsImplTest { - private final Map extraTags = Collections.singletonMap("my-tag", "my-value"); + private static final LinkedHashMap EXTRA_TAGS = new LinkedHashMap<>(); private Map tags; private Metrics metrics; private int initialMetrics; + static { + EXTRA_TAGS.put("my-tag", "my-value"); + } + @BeforeEach void setup() { metrics = new Metrics(); @@ -53,26 +56,28 @@ void setup() { @Test void testMetricName() { PluginMetricsImpl pmi = new PluginMetricsImpl(metrics, tags); - MetricName metricName = pmi.metricName("name", "description", extraTags); + MetricName metricName = pmi.metricName("name", "description", EXTRA_TAGS); assertEquals("name", metricName.name()); assertEquals("plugins", metricName.group()); assertEquals("description", metricName.description()); Map expectedTags = new LinkedHashMap<>(tags); - expectedTags.putAll(extraTags); + expectedTags.putAll(EXTRA_TAGS); assertEquals(expectedTags, metricName.tags()); } @Test void testDuplicateTagName() { PluginMetricsImpl pmi = new PluginMetricsImpl(metrics, tags); + LinkedHashMap tags = new LinkedHashMap<>(); + tags.put("k1", "value"); assertThrows(IllegalArgumentException.class, - () -> pmi.metricName("name", "description", Collections.singletonMap("k1", "value"))); + () -> pmi.metricName("name", "description", tags)); } @Test void testAddRemoveMetrics() { PluginMetricsImpl pmi = new PluginMetricsImpl(metrics, tags); - MetricName metricName = pmi.metricName("name", "description", extraTags); + MetricName metricName = pmi.metricName("name", "description", EXTRA_TAGS); pmi.addMetric(metricName, (Measurable) (config, now) -> 0.0); assertEquals(initialMetrics + 1, metrics.metrics().size()); @@ -88,7 +93,7 @@ void testAddRemoveMetrics() { void testAddRemoveSensor() { PluginMetricsImpl pmi = new PluginMetricsImpl(metrics, tags); String sensorName = "my-sensor"; - MetricName metricName = pmi.metricName("name", "description", extraTags); + MetricName metricName = pmi.metricName("name", "description", EXTRA_TAGS); Sensor sensor = pmi.addSensor(sensorName); assertEquals(initialMetrics, metrics.metrics().size()); sensor.add(metricName, new Rate()); @@ -107,10 +112,10 @@ void testAddRemoveSensor() { void testClose() throws IOException { PluginMetricsImpl pmi = new PluginMetricsImpl(metrics, tags); String sensorName = "my-sensor"; - MetricName metricName1 = pmi.metricName("name1", "description", extraTags); + MetricName metricName1 = pmi.metricName("name1", "description", EXTRA_TAGS); Sensor sensor = pmi.addSensor(sensorName); sensor.add(metricName1, new Rate()); - MetricName metricName2 = pmi.metricName("name2", "description", extraTags); + MetricName metricName2 = pmi.metricName("name2", "description", EXTRA_TAGS); pmi.addMetric(metricName2, (Measurable) (config, now) -> 1.0); assertEquals(initialMetrics + 2, metrics.metrics().size()); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSinkConnector.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSinkConnector.java index 80609d769685c..f86fabca7159a 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSinkConnector.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSinkConnector.java @@ -24,6 +24,7 @@ import org.apache.kafka.connect.sink.SinkRecord; import java.util.Collection; +import java.util.LinkedHashMap; import java.util.Map; public class MonitorableSinkConnector extends TestableSinkConnector { @@ -35,7 +36,7 @@ public class MonitorableSinkConnector extends TestableSinkConnector { public void start(Map props) { super.start(props); PluginMetrics pluginMetrics = context.pluginMetrics(); - metricsName = pluginMetrics.metricName("start", "description", Map.of()); + metricsName = pluginMetrics.metricName("start", "description", new LinkedHashMap<>()); pluginMetrics.addMetric(metricsName, (Gauge) (config, now) -> VALUE); } @@ -53,7 +54,7 @@ public static class MonitorableSinkTask extends TestableSinkTask { public void start(Map props) { super.start(props); PluginMetrics pluginMetrics = context.pluginMetrics(); - metricsName = pluginMetrics.metricName("put", "description", Map.of()); + metricsName = pluginMetrics.metricName("put", "description", new LinkedHashMap<>()); pluginMetrics.addMetric(metricsName, (Measurable) (config, now) -> count); } diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSourceConnector.java b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSourceConnector.java index 49bcbc0492001..07b7155b92543 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSourceConnector.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/integration/MonitorableSourceConnector.java @@ -23,6 +23,7 @@ import org.apache.kafka.connect.connector.Task; import org.apache.kafka.connect.source.SourceRecord; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -35,7 +36,7 @@ public class MonitorableSourceConnector extends TestableSourceConnector { public void start(Map props) { super.start(props); PluginMetrics pluginMetrics = context.pluginMetrics(); - metricsName = pluginMetrics.metricName("start", "description", Map.of()); + metricsName = pluginMetrics.metricName("start", "description", new LinkedHashMap<>()); pluginMetrics.addMetric(metricsName, (Gauge) (config, now) -> VALUE); } @@ -53,7 +54,7 @@ public static class MonitorableSourceTask extends TestableSourceTask { public void start(Map props) { super.start(props); PluginMetrics pluginMetrics = context.pluginMetrics(); - metricsName = pluginMetrics.metricName("poll", "description", Map.of()); + metricsName = pluginMetrics.metricName("poll", "description", new LinkedHashMap<>()); pluginMetrics.addMetric(metricsName, (Measurable) (config, now) -> count); } diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/AbstractHerderTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/AbstractHerderTest.java index 4ac2b9758dccf..81efeab6ca4e7 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/AbstractHerderTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/AbstractHerderTest.java @@ -78,6 +78,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -799,7 +800,7 @@ protected boolean isAllowed(ConfigValue configValue) { @Override public void withPluginMetrics(PluginMetrics metrics) { - metricName = metrics.metricName("name", "description", Map.of()); + metricName = metrics.metricName("name", "description", new LinkedHashMap<>()); metrics.addMetric(metricName, (Measurable) (config, now) -> count); } } diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ConnectMetricsTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ConnectMetricsTest.java index dfde3ec77460b..b473315758774 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ConnectMetricsTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/ConnectMetricsTest.java @@ -64,10 +64,13 @@ public class ConnectMetricsTest { WorkerConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.json.JsonConverter", WorkerConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.json.JsonConverter"); private static final ConnectorTaskId CONNECTOR_TASK_ID = new ConnectorTaskId("connector", 0); - private static final Map TAGS = Map.of("t1", "v1"); - + private static final LinkedHashMap TAGS = new LinkedHashMap<>(); private ConnectMetrics metrics; - + + static { + TAGS.put("t1", "v1"); + } + @BeforeEach public void setUp() { metrics = new ConnectMetrics("worker1", new WorkerConfig(WorkerConfig.baseConfigDef(), DEFAULT_WORKER_CONFIG), new MockTime(), "cluster-1"); diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/rest/ConnectRestServerTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/rest/ConnectRestServerTest.java index 9eedcd7c60a9e..0354c79ce43d8 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/rest/ConnectRestServerTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/rest/ConnectRestServerTest.java @@ -64,6 +64,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -402,7 +403,7 @@ public void register(ConnectRestExtensionContext restPluginContext) { @Override public void withPluginMetrics(PluginMetrics metrics) { - metricName = metrics.metricName("name", "description", Map.of()); + metricName = metrics.metricName("name", "description", new LinkedHashMap<>()); metrics.addMetric(metricName, (Gauge) (config, now) -> called); } } diff --git a/metadata/src/main/java/org/apache/kafka/metadata/authorizer/StandardAuthorizer.java b/metadata/src/main/java/org/apache/kafka/metadata/authorizer/StandardAuthorizer.java index 28511a9845652..474c593bb673b 100644 --- a/metadata/src/main/java/org/apache/kafka/metadata/authorizer/StandardAuthorizer.java +++ b/metadata/src/main/java/org/apache/kafka/metadata/authorizer/StandardAuthorizer.java @@ -39,6 +39,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -230,21 +231,21 @@ private class AuthorizerMetrics { private AuthorizerMetrics(PluginMetrics metrics) { authorizationAllowedSensor = metrics.addSensor("authorizer-authorization-allowed"); authorizationAllowedSensor.add( - metrics.metricName("authorization-allowed-rate-per-minute", "The number of authorization allowed per minute", Map.of()), + metrics.metricName("authorization-allowed-rate-per-minute", "The number of authorization allowed per minute", new LinkedHashMap<>()), new Rate(TimeUnit.MINUTES, new WindowedCount())); authorizationDeniedSensor = metrics.addSensor("authorizer-authorization-denied"); authorizationDeniedSensor.add( - metrics.metricName("authorization-denied-rate-per-minute", "The number of authorization denied per minute", Map.of()), + metrics.metricName("authorization-denied-rate-per-minute", "The number of authorization denied per minute", new LinkedHashMap<>()), new Rate(TimeUnit.MINUTES, new WindowedCount())); authorizationRequestSensor = metrics.addSensor("authorizer-authorization-request"); authorizationRequestSensor.add( - metrics.metricName("authorization-request-rate-per-minute", "The number of authorization request per minute", Map.of()), + metrics.metricName("authorization-request-rate-per-minute", "The number of authorization request per minute", new LinkedHashMap<>()), new Rate(TimeUnit.MINUTES, new WindowedCount())); metrics.addMetric( - metrics.metricName("acls-total-count", "The number of acls defined", Map.of()), + metrics.metricName("acls-total-count", "The number of acls defined", new LinkedHashMap<>()), (Gauge) (config, now) -> aclCount()); } diff --git a/server/src/test/java/org/apache/kafka/security/authorizer/AuthorizerUtilsTest.java b/server/src/test/java/org/apache/kafka/security/authorizer/AuthorizerUtilsTest.java index c62633a651dd8..7fc1371e93ac8 100644 --- a/server/src/test/java/org/apache/kafka/security/authorizer/AuthorizerUtilsTest.java +++ b/server/src/test/java/org/apache/kafka/security/authorizer/AuthorizerUtilsTest.java @@ -38,6 +38,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CompletionStage; @@ -76,7 +77,7 @@ public void testCreateAuthorizer(ProcessRole role) throws ClassNotFoundException assertEquals(ServerConfigs.AUTHORIZER_CLASS_NAME_CONFIG, metricName.tags().get("config")); assertEquals(MonitorableAuthorizer.class.getSimpleName(), metricName.tags().get("class")); assertEquals(role.toString(), metricName.tags().get("role")); - assertTrue(metricName.tags().entrySet().containsAll(monitorableAuthorizer.extraTags.entrySet())); + assertTrue(metricName.tags().entrySet().containsAll(MonitorableAuthorizer.EXTRA_TAGS.entrySet())); assertEquals(0, metrics.metric(metricName).metricValue()); monitorableAuthorizer.authorize(null, null); assertEquals(1, metrics.metric(metricName).metricValue()); @@ -84,15 +85,19 @@ public void testCreateAuthorizer(ProcessRole role) throws ClassNotFoundException public static class MonitorableAuthorizer implements Authorizer, Monitorable { - private final Map extraTags = Map.of("k1", "v1"); + private static final LinkedHashMap EXTRA_TAGS = new LinkedHashMap<>(); private final AtomicInteger counter = new AtomicInteger(); private boolean configured = false; private MetricName metricName = null; + static { + EXTRA_TAGS.put("t1", "v1"); + } + @Override public void withPluginMetrics(PluginMetrics metrics) { assertTrue(configured); - metricName = metrics.metricName("authorize calls", "Number of times authorize was called", extraTags); + metricName = metrics.metricName("authorize calls", "Number of times authorize was called", EXTRA_TAGS); metrics.addMetric(metricName, (Gauge) (config, now) -> counter.get()); } diff --git a/server/src/test/java/org/apache/kafka/server/MonitorablePluginsIntegrationTest.java b/server/src/test/java/org/apache/kafka/server/MonitorablePluginsIntegrationTest.java index 43b56e63298f6..c702e1a78e9d1 100644 --- a/server/src/test/java/org/apache/kafka/server/MonitorablePluginsIntegrationTest.java +++ b/server/src/test/java/org/apache/kafka/server/MonitorablePluginsIntegrationTest.java @@ -113,7 +113,7 @@ public static class MonitorableNoOpRemoteLogMetadataManager extends NoOpRemoteLo @Override public void withPluginMetrics(PluginMetrics metrics) { - MetricName name = metrics.metricName("name", "description", Map.of()); + MetricName name = metrics.metricName("name", "description", new LinkedHashMap<>()); metrics.addMetric(name, (Measurable) (config, now) -> 123); } } @@ -124,7 +124,7 @@ public static class MonitorableReplicaSelector extends RackAwareReplicaSelector @Override public void withPluginMetrics(PluginMetrics metrics) { - MetricName name = metrics.metricName("name", "description", Map.of()); + MetricName name = metrics.metricName("name", "description", new LinkedHashMap<>()); metrics.addMetric(name, (Measurable) (config, now) -> 123); } } @@ -135,7 +135,7 @@ public static class MonitorableNoOpRemoteStorageManager extends NoOpRemoteStorag @Override public void withPluginMetrics(PluginMetrics metrics) { - MetricName name = metrics.metricName("name", "description", Map.of()); + MetricName name = metrics.metricName("name", "description", new LinkedHashMap<>()); metrics.addMetric(name, (Measurable) (config, now) -> 123); } }