Skip to content

Commit 197dece

Browse files
committed
Merge branch 'main' into upgrade-jetty
2 parents 4eb7b81 + e30eaf3 commit 197dece

6 files changed

Lines changed: 225 additions & 112 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262
matrix:
6363
java-ver: [17]
6464
java-dist: ['temurin']
65-
hw_platform: ['s390x']
65+
hw_platform: ['s390x', 'ppc64le']
6666
runs-on: ubuntu-latest
6767
steps:
6868
- uses: actions/checkout@v4

build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,6 @@ project(':cruise-control-core') {
189189
implementation "org.apache.logging.log4j:log4j-slf4j-impl:2.17.2"
190190
implementation 'org.apache.commons:commons-math3:3.6.1'
191191
api "org.eclipse.jetty.ee10:jetty-ee10-servlet:${jettyVersion}"
192-
implementation 'com.github.spotbugs:spotbugs-annotations:4.8.6'
193192

194193
api "io.vertx:vertx-core:${vertxVersion}"
195194
api "io.vertx:vertx-web:${vertxVersion}"
@@ -304,7 +303,7 @@ project(':cruise-control') {
304303
implementation 'com.google.code.gson:gson:2.9.0'
305304
implementation "org.eclipse.jetty:jetty-server:${jettyVersion}"
306305
implementation 'io.dropwizard.metrics:metrics-jmx:4.2.9'
307-
implementation 'com.nimbusds:nimbus-jose-jwt:9.45'
306+
implementation 'com.nimbusds:nimbus-jose-jwt:10.0.2'
308307
implementation 'io.swagger.parser.v3:swagger-parser-v3:2.1.16'
309308
implementation 'io.github.classgraph:classgraph:4.8.141'
310309
implementation 'com.google.code.findbugs:jsr305:3.0.2'
@@ -340,6 +339,7 @@ project(':cruise-control') {
340339
testImplementation 'com.jayway.jsonpath:json-path:2.7.0'
341340
testImplementation 'org.powermock:powermock-module-junit4:2.0.9'
342341
testImplementation 'org.powermock:powermock-api-easymock:2.0.9'
342+
testImplementation "org.testcontainers:kafka:$testcontainersVersion"
343343
}
344344

345345
publishing {
@@ -484,7 +484,7 @@ project(':cruise-control-metrics-reporter') {
484484
testImplementation "org.apache.kafka:kafka-raft:$kafkaVersion"
485485
testImplementation "org.apache.kafka:kafka-storage:$kafkaVersion"
486486
testImplementation 'commons-io:commons-io:2.11.0'
487-
testImplementation "org.testcontainers:kafka:1.21.3"
487+
testImplementation "org.testcontainers:kafka:$testcontainersVersion"
488488
testOutput sourceSets.test.output
489489
}
490490

cruise-control-metrics-reporter/src/test/java/com/linkedin/kafka/cruisecontrol/metricsreporter/CruiseControlMetricsReporterTest.java

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
package com.linkedin.kafka.cruisecontrol.metricsreporter;
66

7-
import com.linkedin.kafka.cruisecontrol.metricsreporter.exception.KafkaTopicDescriptionException;
87
import com.linkedin.kafka.cruisecontrol.metricsreporter.metric.CruiseControlMetric;
98
import com.linkedin.kafka.cruisecontrol.metricsreporter.metric.MetricSerde;
109
import com.linkedin.kafka.cruisecontrol.metricsreporter.utils.CCContainerizedKraftCluster;
@@ -20,11 +19,8 @@
2019
import java.util.Set;
2120
import java.util.concurrent.TimeoutException;
2221
import java.util.concurrent.atomic.AtomicInteger;
23-
import java.util.function.Predicate;
2422
import java.util.regex.Pattern;
2523
import org.apache.kafka.clients.CommonClientConfigs;
26-
import org.apache.kafka.clients.admin.Admin;
27-
import org.apache.kafka.clients.admin.AdminClient;
2824
import org.apache.kafka.clients.admin.TopicDescription;
2925
import org.apache.kafka.clients.consumer.Consumer;
3026
import org.apache.kafka.clients.consumer.ConsumerConfig;
@@ -36,7 +32,6 @@
3632
import org.apache.kafka.clients.producer.ProducerConfig;
3733
import org.apache.kafka.clients.producer.ProducerRecord;
3834
import org.apache.kafka.clients.producer.RecordMetadata;
39-
import org.apache.kafka.common.errors.UnknownTopicOrPartitionException;
4035
import org.apache.kafka.common.serialization.StringDeserializer;
4136
import org.junit.After;
4237
import org.junit.Before;
@@ -45,7 +40,6 @@
4540

4641
import static com.linkedin.kafka.cruisecontrol.metricsreporter.CruiseControlMetricsReporter.DEFAULT_BOOTSTRAP_SERVERS_HOST;
4742
import static com.linkedin.kafka.cruisecontrol.metricsreporter.CruiseControlMetricsReporter.DEFAULT_BOOTSTRAP_SERVERS_PORT;
48-
import static com.linkedin.kafka.cruisecontrol.metricsreporter.CruiseControlMetricsReporter.getTopicDescription;
4943
import static com.linkedin.kafka.cruisecontrol.metricsreporter.CruiseControlMetricsReporterConfig.CRUISE_CONTROL_METRICS_REPORTER_INTERVAL_MS_CONFIG;
5044
import static com.linkedin.kafka.cruisecontrol.metricsreporter.CruiseControlMetricsReporterConfig.CRUISE_CONTROL_METRICS_TOPIC_AUTO_CREATE_CONFIG;
5145
import static com.linkedin.kafka.cruisecontrol.metricsreporter.CruiseControlMetricsReporterConfig.CRUISE_CONTROL_METRICS_TOPIC_CONFIG;
@@ -206,41 +200,9 @@ public void testReportingMetrics() {
206200
assertEquals("Expected " + expectedMetricTypes + ", but saw " + metricTypes, expectedMetricTypes, metricTypes);
207201
}
208202

209-
private TopicDescription waitForTopicMetadata(Admin adminClient,
210-
Duration timeout,
211-
Predicate<TopicDescription> condition)
212-
throws InterruptedException, TimeoutException {
213-
214-
long deadline = System.currentTimeMillis() + timeout.toMillis();
215-
216-
while (System.currentTimeMillis() < deadline) {
217-
try {
218-
TopicDescription topicDescription = getTopicDescription((AdminClient) adminClient, TOPIC);
219-
220-
if (condition.test(topicDescription)) {
221-
return topicDescription;
222-
}
223-
} catch (KafkaTopicDescriptionException e) {
224-
if (!(e.getCause() instanceof UnknownTopicOrPartitionException)) {
225-
throw new RuntimeException("Failed to describe topic: " + TOPIC, e);
226-
}
227-
// else ignore and retry
228-
}
229-
230-
Thread.sleep(500);
231-
}
232-
233-
throw new TimeoutException("Timeout waiting for topic metadata condition to be met: " + TOPIC);
234-
}
235-
236203
@Test
237204
public void testUpdatingMetricsTopicConfig() throws InterruptedException, TimeoutException {
238-
Properties props = new Properties();
239-
setSecurityConfigs(props, "admin");
240-
props.setProperty(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers());
241-
Admin adminClient = Admin.create(props);
242-
243-
TopicDescription topicDescription = waitForTopicMetadata(adminClient, Duration.ofSeconds(30), td -> true);
205+
TopicDescription topicDescription = _cluster.waitForTopicMetadata(TOPIC, Duration.ofSeconds(30), td -> true);
244206
assertEquals(1, topicDescription.partitions().size());
245207

246208
KafkaContainer broker = _cluster.getBrokers().get(0);
@@ -261,7 +223,7 @@ public void testUpdatingMetricsTopicConfig() throws InterruptedException, Timeou
261223

262224
// Wait for topic metadata configuration change to propagate
263225
int oldPartitionCount = topicDescription.partitions().size();
264-
TopicDescription newTopicDescription = waitForTopicMetadata(adminClient, Duration.ofSeconds(30),
226+
TopicDescription newTopicDescription = _cluster.waitForTopicMetadata(TOPIC, Duration.ofSeconds(30),
265227
td -> td.partitions().size() != oldPartitionCount);
266228

267229
assertEquals(2, newTopicDescription.partitions().size());

0 commit comments

Comments
 (0)