This is an automated email from the ASF dual-hosted git repository.
epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 8c750e25b11 SOLR-18300 : Update apache.kafka to V4 (#4610)
8c750e25b11 is described below
commit 8c750e25b114d5c436a9aa7d8d3fd56a669d2b1d
Author: Jalaz Kumar <[email protected]>
AuthorDate: Sat Aug 22 18:13:12 2026 +0530
SOLR-18300 : Update apache.kafka to V4 (#4610)
Signed-off-by: jaykay12 <[email protected]>
Co-authored-by: SolrBot <[email protected]>
Co-authored-by: Eric Pugh <[email protected]>
---
.../unreleased/SOLR-18300-update-kafka-v4.yml | 8 +
gradle/libs.versions.toml | 5 +-
.../randomization/policies/solr-tests.policy | 1 -
solr/cross-dc-manager/build.gradle | 34 +-
solr/cross-dc-manager/gradle.lockfile | 51 +-
.../apache/solr/crossdc/manager/consumer/Util.java | 3 +-
.../crossdc/manager/DeleteByQueryToIdTest.java | 39 +-
.../solr/crossdc/manager/KafkaContainerRule.java | 70 ++
.../crossdc/manager/RetryQueueIntegrationTest.java | 38 +-
.../manager/SolrAndKafkaIntegrationTest.java | 56 +-
...SolrAndKafkaMultiCollectionIntegrationTest.java | 57 +-
.../crossdc/manager/SolrAndKafkaReindexTest.java | 37 +-
.../crossdc/manager/ZkConfigIntegrationTest.java | 65 +-
solr/licenses/argparse4j-0.7.0.jar.sha1 | 1 -
solr/licenses/commons-beanutils-1.11.0.jar.sha1 | 1 -
solr/licenses/commons-collections-3.2.2.jar.sha1 | 1 -
solr/licenses/commons-digester-2.1.jar.sha1 | 1 -
solr/licenses/commons-validator-1.10.1.jar.sha1 | 1 -
.../jackson-dataformat-csv-2.22.0.jar.sha1 | 1 -
.../jackson-module-scala_2.13-2.22.0.jar.sha1 | 1 -
solr/licenses/kafka-clients-3.9.2-test.jar.sha1 | 1 -
solr/licenses/kafka-clients-3.9.2.jar.sha1 | 1 -
solr/licenses/kafka-clients-4.3.1.jar.sha1 | 1 +
.../kafka-group-coordinator-3.9.2.jar.sha1 | 1 -
.../kafka-group-coordinator-api-3.9.2.jar.sha1 | 1 -
solr/licenses/kafka-metadata-3.9.2.jar.sha1 | 1 -
solr/licenses/kafka-raft-3.9.2.jar.sha1 | 1 -
solr/licenses/kafka-server-3.9.2.jar.sha1 | 1 -
.../kafka-server-common-3.9.2-test.jar.sha1 | 1 -
solr/licenses/kafka-server-common-3.9.2.jar.sha1 | 1 -
solr/licenses/kafka-storage-3.9.2.jar.sha1 | 1 -
solr/licenses/kafka-storage-api-3.9.2.jar.sha1 | 1 -
solr/licenses/kafka-streams-3.9.2-test.jar.sha1 | 1 -
solr/licenses/kafka-streams-3.9.2.jar.sha1 | 1 -
solr/licenses/kafka-tools-api-3.9.2.jar.sha1 | 1 -
.../kafka-transaction-coordinator-3.9.2.jar.sha1 | 1 -
solr/licenses/kafka_2.13-3.9.2-test.jar.sha1 | 1 -
solr/licenses/kafka_2.13-3.9.2.jar.sha1 | 1 -
solr/licenses/kafka_2.13-LICENSE-ASL.txt | 345 --------
solr/licenses/kafka_2.13-NOTICE.txt | 863 ---------------------
solr/licenses/lz4-java-1.10.1.jar.sha1 | 1 -
solr/licenses/lz4-java-1.10.2.jar.sha1 | 1 +
solr/licenses/metrics-core-2.2.0.jar.sha1 | 1 -
solr/licenses/paranamer-2.8.3.jar.sha1 | 1 -
solr/licenses/pcollections-4.0.1.jar.sha1 | 1 -
solr/licenses/rocksdbjni-7.9.2.jar.sha1 | 1 -
.../scala-collection-compat_2.13-2.10.0.jar.sha1 | 1 -
.../scala-java8-compat_2.13-1.0.2.jar.sha1 | 1 -
solr/licenses/scala-library-2.13.18.jar.sha1 | 1 -
solr/licenses/scala-logging_2.13-3.9.5.jar.sha1 | 1 -
solr/licenses/scala-reflect-2.13.15.jar.sha1 | 1 -
solr/licenses/testcontainers-kafka-2.0.5.jar.sha1 | 1 +
solr/licenses/zstd-jni-1.5.6-10.jar.sha1 | 1 +
solr/licenses/zstd-jni-1.5.6-4.jar.sha1 | 1 -
solr/modules/cross-dc/gradle.lockfile | 6 +-
.../pages/cross-dc-replication.adoc | 4 +
56 files changed, 228 insertions(+), 1493 deletions(-)
diff --git a/changelog/unreleased/SOLR-18300-update-kafka-v4.yml
b/changelog/unreleased/SOLR-18300-update-kafka-v4.yml
new file mode 100644
index 00000000000..3167136f158
--- /dev/null
+++ b/changelog/unreleased/SOLR-18300-update-kafka-v4.yml
@@ -0,0 +1,8 @@
+title: Update apache.kafka to v4
+type: dependency_update
+authors:
+- name: Jalaz Kumar
+- name: Eric Pugh
+links:
+- name: SOLR-18300
+ url: https://issues.apache.org/jira/browse/SOLR-18300
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 65a432d10f4..a29d84f42ed 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -37,7 +37,7 @@ apache-curator = "5.9.0"
apache-httpcomponents-httpclient = "4.5.14"
apache-httpcomponents-httpcore = "4.4.16"
apache-httpcomponents-httpmime = "4.5.14"
-apache-kafka = "3.9.2"
+apache-kafka = "4.3.1"
apache-log4j = "2.26.0"
apache-lucene = "10.4.0"
apache-opennlp = "2.5.10"
@@ -257,8 +257,6 @@ apache-httpcomponents-httpclient = { module =
"org.apache.httpcomponents:httpcli
apache-httpcomponents-httpcore = { module =
"org.apache.httpcomponents:httpcore", version.ref =
"apache-httpcomponents-httpcore" }
apache-httpcomponents-httpmime = { module =
"org.apache.httpcomponents:httpmime", version.ref =
"apache-httpcomponents-httpmime" }
apache-kafka-clients = { module = "org.apache.kafka:kafka-clients",
version.ref = "apache-kafka" }
-apache-kafka-kafka213 = { module = "org.apache.kafka:kafka_2.13", version.ref
= "apache-kafka" }
-apache-kafka-server-common = { module =
"org.apache.kafka:kafka-server-common", version.ref = "apache-kafka" }
apache-kafka-streams = { module = "org.apache.kafka:kafka-streams",
version.ref = "apache-kafka" }
apache-log4j-api = { module = "org.apache.logging.log4j:log4j-api",
version.ref = "apache-log4j" }
apache-log4j-core = { module = "org.apache.logging.log4j:log4j-core",
version.ref = "apache-log4j" }
@@ -529,5 +527,6 @@ swagger3-annotations-jakarta = { module =
"io.swagger.core.v3:swagger-annotation
swagger3-jaxrs2-jakarta = { module =
"io.swagger.core.v3:swagger-jaxrs2-jakarta", version.ref = "swagger3" }
tdunning-tdigest = { module = "com.tdunning:t-digest", version.ref =
"tdunning-tdigest" }
testcontainers = { module = "org.testcontainers:testcontainers", version.ref =
"testcontainers" }
+testcontainers-kafka = { module = "org.testcontainers:testcontainers-kafka",
version.ref = "testcontainers" }
threeten-bp = { module = "org.threeten:threetenbp", version.ref =
"threeten-bp" }
xerial-snappy-java = { module = "org.xerial.snappy:snappy-java", version.ref =
"xerial-snappy" }
diff --git a/gradle/testing/randomization/policies/solr-tests.policy
b/gradle/testing/randomization/policies/solr-tests.policy
index 8709e2c0127..1af2b7df05a 100644
--- a/gradle/testing/randomization/policies/solr-tests.policy
+++ b/gradle/testing/randomization/policies/solr-tests.policy
@@ -255,7 +255,6 @@ grant {
permission java.io.FilePermission
"${user.home}${/}.config${/}gcloud${/}active_config", "read,readlink";
permission java.io.FilePermission
"${user.home}${/}.config${/}gcloud${/}configurations${/}config_default",
"read,readlink";
-
// expanded to a wildcard if set, allows all networking everywhere
permission java.net.SocketPermission "${solr.internal.network.permission}",
"accept,listen,connect,resolve";
permission java.net.SocketPermission "metadata.google.internal:80",
"connect,resolve";
diff --git a/solr/cross-dc-manager/build.gradle
b/solr/cross-dc-manager/build.gradle
index cb8b5389ff6..66b0ebf3f6d 100644
--- a/solr/cross-dc-manager/build.gradle
+++ b/solr/cross-dc-manager/build.gradle
@@ -1,5 +1,3 @@
-import org.apache.tools.ant.taskdefs.condition.Os
-
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -40,8 +38,6 @@ dependencies {
runtimeOnly libs.commonscodec.commonscodec
implementation libs.apache.kafka.clients
- runtimeOnly libs.apache.kafka.kafka213
- runtimeOnly libs.apache.kafka.streams
runtimeOnly libs.apache.log4j.api
runtimeOnly libs.apache.log4j.core
@@ -65,35 +61,17 @@ dependencies {
testRuntimeOnly libs.bytebuddy
testRuntimeOnly libs.bytebuddy.agent
- testImplementation(libs.apache.kafka.streams) {
- artifact {
- classifier = "test"
- }
- }
- // EmbeddedKafkaCluster loads org.apache.kafka.test.TestCondition from this
at runtime
- testRuntimeOnly(libs.apache.kafka.clients) {
- artifact {
- classifier = "test"
- }
- }
- testRuntimeOnly(libs.apache.kafka.kafka213) {
- artifact {
- classifier = "test"
- }
- }
- testRuntimeOnly(libs.apache.kafka.server.common) {
- artifact {
- classifier = "test"
- }
- }
+ testImplementation libs.testcontainers.kafka
}
ext {
mainClass = 'org.apache.solr.crossdc.manager.consumer.Consumer'
- // Use of the security manager is not supported on windows.
- // Mockito does not work with it enabled.
- useSecurityManager = !Os.isFamily(Os.FAMILY_WINDOWS)
+ // Docker/Testcontainers integration tests (KafkaContainerRule) do PATH
scanning,
+ // spawn processes, and talk to the Docker daemon over a Unix socket -- none
of
+ // which play well with a static SecurityManager policy. Same rationale as
+ // solr:modules:extraction, Solr's other Testcontainers consumer.
+ useSecurityManager = false
}
task run(type: JavaExec) {
diff --git a/solr/cross-dc-manager/gradle.lockfile
b/solr/cross-dc-manager/gradle.lockfile
index 0893d8e825c..f7f13b00582 100644
--- a/solr/cross-dc-manager/gradle.lockfile
+++ b/solr/cross-dc-manager/gradle.lockfile
@@ -2,23 +2,23 @@
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
# To regenerate this file, run: ./gradlew :solr:cross-dc-manager:dependencies
--write-locks
-at.yawk.lz4:lz4-java:1.10.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+at.yawk.lz4:lz4-java:1.10.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.carrotsearch.randomizedtesting:randomizedtesting-runner:2.9.1=jarValidation,testCompileClasspath,testRuntimeClasspath
com.carrotsearch:hppc:0.10.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.22=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-core:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-databind:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-smile:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-com.fasterxml.jackson.module:jackson-module-scala_2.13:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
com.fasterxml.jackson:jackson-bom:2.22.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
com.fasterxml.woodstox:woodstox-core:7.2.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.github.ben-manes.caffeine:caffeine:3.2.4=annotationProcessor,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testRuntimeClasspath
+com.github.docker-java:docker-java-api:3.7.1=jarValidation,testCompileClasspath,testRuntimeClasspath
+com.github.docker-java:docker-java-transport-zerodep:3.7.1=jarValidation,testCompileClasspath,testRuntimeClasspath
+com.github.docker-java:docker-java-transport:3.7.1=jarValidation,testCompileClasspath,testRuntimeClasspath
com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone,testAnnotationProcessor
-com.github.luben:zstd-jni:1.5.6-4=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+com.github.luben:zstd-jni:1.5.6-10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor
com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor
com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor
@@ -39,16 +39,9 @@
com.j256.simplemagic:simplemagic:1.17=jarValidation,runtimeClasspath,runtimeLibs
com.jayway.jsonpath:json-path:3.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.lmax:disruptor:4.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.tdunning:t-digest:3.3=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-com.thoughtworks.paranamer:paranamer:2.8.3=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-com.typesafe.scala-logging:scala-logging_2.13:3.9.5=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-com.yammer.metrics:metrics-core:2.2.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-commons-beanutils:commons-beanutils:1.11.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
commons-cli:commons-cli:1.11.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-commons-codec:commons-codec:1.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-commons-collections:commons-collections:3.2.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-commons-digester:commons-digester:2.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
+commons-codec:commons-codec:1.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
commons-io:commons-io:2.22.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-commons-validator:commons-validator:1.10.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
io.dropwizard.metrics:metrics-core:4.2.39=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
io.github.eisop:dataflow-errorprone:3.41.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor
io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,errorprone,testAnnotationProcessor
@@ -102,28 +95,16 @@
javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcess
junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath
net.bytebuddy:byte-buddy-agent:1.18.11=jarValidation,testRuntimeClasspath
net.bytebuddy:byte-buddy:1.18.11=jarValidation,testRuntimeClasspath
-net.sf.jopt-simple:jopt-simple:5.0.4=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-net.sourceforge.argparse4j:argparse4j:0.7.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
+net.java.dev.jna:jna:5.19.1=jarValidation,testCompileClasspath,testRuntimeClasspath
org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.apache.commons:commons-compress:1.28.0=jarValidation,testCompileClasspath,testRuntimeClasspath
org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apache.commons:commons-math3:3.6.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.apache.curator:curator-client:5.9.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apache.curator:curator-framework:5.9.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apache.curator:curator-test:5.9.0=jarValidation,testRuntimeClasspath
-org.apache.kafka:kafka-clients:3.9.2=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.apache.kafka:kafka-group-coordinator-api:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.apache.kafka:kafka-group-coordinator:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.apache.kafka:kafka-metadata:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.apache.kafka:kafka-raft:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.apache.kafka:kafka-server-common:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.apache.kafka:kafka-server:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.apache.kafka:kafka-storage-api:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.apache.kafka:kafka-storage:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.apache.kafka:kafka-streams:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
-org.apache.kafka:kafka-tools-api:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.apache.kafka:kafka-transaction-coordinator:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.apache.kafka:kafka_2.13:3.9.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
+org.apache.kafka:kafka-clients:4.3.1=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apache.logging.log4j:log4j-1.2-api:2.26.0=solrPlatformLibs
org.apache.logging.log4j:log4j-api:2.26.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.apache.logging.log4j:log4j-core:2.26.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
@@ -155,7 +136,6 @@
org.apache.lucene:lucene-test-framework:10.4.0=jarValidation,testCompileClasspat
org.apache.zookeeper:zookeeper-jute:3.9.5=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apache.zookeeper:zookeeper:3.9.5=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
-org.bitbucket.b_c:jose4j:0.9.6=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
org.codehaus.woodstox:stax2-api:4.3.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.eclipse.jetty.compression:jetty-compression-common:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.eclipse.jetty.compression:jetty-compression-gzip:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
@@ -198,6 +178,7 @@
org.glassfish.jersey.media:jersey-media-json-jackson:4.0.2=jarValidation,runtime
org.glassfish.jersey:jersey-bom:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.hamcrest:hamcrest:3.0=jarValidation,testCompileClasspath,testRuntimeClasspath
org.javassist:javassist:3.30.2-GA=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.jetbrains:annotations:26.1.0=jarValidation,testCompileClasspath,testRuntimeClasspath
org.jspecify:jspecify:1.0.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-api:5.6.2=jarValidation,testRuntimeClasspath
org.junit.platform:junit-platform-commons:1.6.2=jarValidation,testRuntimeClasspath
@@ -209,15 +190,13 @@
org.opentest4j:opentest4j:1.2.0=jarValidation,testRuntimeClasspath
org.ow2.asm:asm-commons:9.10.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.ow2.asm:asm-tree:9.10.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.ow2.asm:asm:9.10.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.pcollections:pcollections:4.0.1=annotationProcessor,errorprone,jarValidation,runtimeClasspath,runtimeLibs,testAnnotationProcessor,testRuntimeClasspath
-org.rocksdb:rocksdbjni:7.9.2=jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
-org.scala-lang.modules:scala-collection-compat_2.13:2.10.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.scala-lang.modules:scala-java8-compat_2.13:1.0.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.scala-lang:scala-library:2.13.18=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
-org.scala-lang:scala-reflect:2.13.15=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
+org.pcollections:pcollections:4.0.1=annotationProcessor,errorprone,testAnnotationProcessor
+org.rnorth.duct-tape:duct-tape:1.0.8=jarValidation,testCompileClasspath,testRuntimeClasspath
org.semver4j:semver4j:6.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.slf4j:jcl-over-slf4j:2.0.17=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.slf4j:jul-to-slf4j:2.0.17=solrPlatformLibs
org.slf4j:slf4j-api:2.0.17=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.testcontainers:testcontainers-kafka:2.0.5=jarValidation,testCompileClasspath,testRuntimeClasspath
+org.testcontainers:testcontainers:2.0.5=jarValidation,testCompileClasspath,testRuntimeClasspath
org.xerial.snappy:snappy-java:1.1.10.8=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
empty=missingdoclet,packaging
diff --git
a/solr/cross-dc-manager/src/java/org/apache/solr/crossdc/manager/consumer/Util.java
b/solr/cross-dc-manager/src/java/org/apache/solr/crossdc/manager/consumer/Util.java
index f0d4dcca4da..b31665d61f9 100644
---
a/solr/cross-dc-manager/src/java/org/apache/solr/crossdc/manager/consumer/Util.java
+++
b/solr/cross-dc-manager/src/java/org/apache/solr/crossdc/manager/consumer/Util.java
@@ -88,7 +88,8 @@ public class Util {
for (TopicPartition topicPartition : topicPartitions) {
if (topicPartition.topic().equals(topic)) {
long endOffset = consumer.position(topicPartition);
- long committedOffset =
consumer.committed(topicPartition).offset();
+ long committedOffset =
+
consumer.committed(Set.of(topicPartition)).get(topicPartition).offset();
long updatesInQueue = endOffset - committedOffset;
log.info("Topic: {}", topic);
diff --git
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/DeleteByQueryToIdTest.java
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/DeleteByQueryToIdTest.java
index 1898def635c..47a9a7fb024 100644
---
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/DeleteByQueryToIdTest.java
+++
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/DeleteByQueryToIdTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.solr.crossdc.manager;
+import static
org.apache.solr.crossdc.common.KafkaCrossDcConf.BOOTSTRAP_SERVERS;
+
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
import java.io.ByteArrayOutputStream;
@@ -26,7 +28,9 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.CountDownLatch;
-import org.apache.kafka.streams.integration.utils.EmbeddedKafkaCluster;
+import org.apache.kafka.clients.admin.AdminClient;
+import org.apache.kafka.clients.admin.AdminClientConfig;
+import org.apache.kafka.clients.admin.NewTopic;
import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
@@ -49,6 +53,7 @@ import
org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
@@ -67,10 +72,7 @@ public class DeleteByQueryToIdTest extends SolrCloudTestCase
{
private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- static final String VERSION_FIELD = "_version_";
-
- private static final int NUM_BROKERS = 1;
- public static EmbeddedKafkaCluster kafkaCluster;
+ @ClassRule public static final KafkaContainerRule kafkaContainer = new
KafkaContainerRule();
protected static volatile MiniSolrCloudCluster solrCluster1;
protected static volatile MiniSolrCloudCluster solrCluster2;
@@ -94,16 +96,13 @@ public class DeleteByQueryToIdTest extends
SolrCloudTestCase {
Properties config = new Properties();
- kafkaCluster =
- new EmbeddedKafkaCluster(NUM_BROKERS, config) {
- @Override
- public String bootstrapServers() {
- return super.bootstrapServers().replaceAll("localhost",
"127.0.0.1");
- }
- };
- kafkaCluster.start();
+ String bootstrapServers = kafkaContainer.getBootstrapServers();
- kafkaCluster.createTopic(TOPIC, 1, 1);
+ // Replaced legacy in-JVM topic provisioner with official AdminClient
configurations
+ config.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
+ try (AdminClient adminClient = AdminClient.create(config)) {
+ adminClient.createTopics(List.of(new NewTopic(TOPIC, 3, (short)
1))).all().get();
+ }
Properties props = new Properties();
@@ -114,7 +113,7 @@ public class DeleteByQueryToIdTest extends
SolrCloudTestCase {
.configure();
props.setProperty("solr.crossdc.topicName", TOPIC);
- props.setProperty("solr.crossdc.bootstrapServers",
kafkaCluster.bootstrapServers());
+ props.setProperty(BOOTSTRAP_SERVERS, bootstrapServers);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
props.store(baos, "");
@@ -148,7 +147,6 @@ public class DeleteByQueryToIdTest extends
SolrCloudTestCase {
solrCluster2.getSolrClient().request(createTarget2);
solrCluster2.waitForActiveCollection(COLLECTION2, 1, 1);
- String bootstrapServers = kafkaCluster.bootstrapServers();
log.info("bootstrapServers={}", bootstrapServers);
Map<String, Object> properties = new HashMap<>();
@@ -189,14 +187,6 @@ public class DeleteByQueryToIdTest extends
SolrCloudTestCase {
consumer.shutdown();
}
- try {
- if (kafkaCluster != null) {
- kafkaCluster.stop();
- }
- } catch (Exception e) {
- log.error("Exception stopping Kafka cluster", e);
- }
-
if (solrCluster1 != null) {
solrCluster1.getZkServer().getZkClient().printLayoutToStream(System.out);
solrCluster1.shutdown();
@@ -208,7 +198,6 @@ public class DeleteByQueryToIdTest extends
SolrCloudTestCase {
solrCluster1 = null;
solrCluster2 = null;
- kafkaCluster = null;
consumer = null;
}
diff --git
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/KafkaContainerRule.java
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/KafkaContainerRule.java
new file mode 100644
index 00000000000..0ec73d2e18b
--- /dev/null
+++
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/KafkaContainerRule.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.crossdc.manager;
+
+import java.lang.invoke.MethodHandles;
+import org.junit.Assume;
+import org.junit.rules.ExternalResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.DockerClientFactory;
+import org.testcontainers.kafka.KafkaContainer;
+import org.testcontainers.utility.DockerImageName;
+
+/**
+ * JUnit rule that manages a single Kafka broker Testcontainer. Declare as a
{@code @ClassRule} so
+ * the (expensive to start) broker is shared across all {@code @Test} methods
in a class instead of
+ * being restarted for each one; JUnit starts it before, and stops it after,
the whole class runs.
+ *
+ * <p>Skips the calling test (via {@link Assume}) instead of failing outright
if
+ * Docker/Testcontainers isn't available in this environment.
+ */
+public class KafkaContainerRule extends ExternalResource {
+
+ private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ public static final String KAFKA_DOCKER_IMAGE = "apache/kafka:4.3.1";
+
+ private KafkaContainer kafkaContainer;
+
+ @Override
+ protected void before() {
+ Assume.assumeTrue(
+ "Docker/Testcontainers not available; skipping test",
+ DockerClientFactory.instance().isDockerAvailable());
+ kafkaContainer = new
KafkaContainer(DockerImageName.parse(KAFKA_DOCKER_IMAGE));
+ kafkaContainer.start();
+ }
+
+ @Override
+ protected void after() {
+ if (kafkaContainer != null) {
+ try {
+ kafkaContainer.stop();
+ } catch (Exception e) {
+ log.error("Exception stopping Kafka container", e);
+ } finally {
+ kafkaContainer = null;
+ }
+ }
+ }
+
+ public String getBootstrapServers() {
+ return kafkaContainer.getBootstrapServers();
+ }
+}
diff --git
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/RetryQueueIntegrationTest.java
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/RetryQueueIntegrationTest.java
index 1e06264c965..e69171a01cd 100644
---
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/RetryQueueIntegrationTest.java
+++
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/RetryQueueIntegrationTest.java
@@ -21,9 +21,12 @@ import
com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
import java.lang.invoke.MethodHandles;
import java.nio.file.Path;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
-import org.apache.kafka.streams.integration.utils.EmbeddedKafkaCluster;
+import org.apache.kafka.clients.admin.AdminClient;
+import org.apache.kafka.clients.admin.AdminClientConfig;
+import org.apache.kafka.clients.admin.NewTopic;
import org.apache.lucene.tests.util.LuceneTestCase;
import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
import org.apache.solr.SolrIgnoredThreadsFilter;
@@ -43,6 +46,7 @@ import
org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -60,10 +64,7 @@ public class RetryQueueIntegrationTest extends
SolrTestCaseJ4 {
private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- static final String VERSION_FIELD = "_version_";
-
- private static final int NUM_BROKERS = 1;
- public static EmbeddedKafkaCluster kafkaCluster;
+ @ClassRule public static final KafkaContainerRule kafkaContainer = new
KafkaContainerRule();
protected static volatile MiniSolrCloudCluster solrCluster1;
protected static volatile MiniSolrCloudCluster solrCluster2;
@@ -89,19 +90,16 @@ public class RetryQueueIntegrationTest extends
SolrTestCaseJ4 {
config.put("unclean.leader.election.enable", "true");
config.put("enable.partition.eof", "false");
- kafkaCluster =
- new EmbeddedKafkaCluster(NUM_BROKERS, config) {
- @Override
- public String bootstrapServers() {
- return super.bootstrapServers().replaceAll("localhost",
"127.0.0.1");
- }
- };
- kafkaCluster.start();
+ String bootstrapServers = kafkaContainer.getBootstrapServers();
- kafkaCluster.createTopic(TOPIC, 1, 1);
+ // Replaced legacy in-JVM topic provisioner with official AdminClient
configurations
+ config.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
+ try (AdminClient adminClient = AdminClient.create(config)) {
+ adminClient.createTopics(List.of(new NewTopic(TOPIC, 3, (short)
1))).all().get();
+ }
System.setProperty("solr.crossdc.topicName", TOPIC);
- System.setProperty("solr.crossdc.bootstrapServers",
kafkaCluster.bootstrapServers());
+ System.setProperty("solr.crossdc.bootstrapServers",
kafkaContainer.getBootstrapServers());
baseDir1 = createTempDir();
Path zkDir1 = baseDir1.resolve("zookeeper/server1/data");
@@ -132,7 +130,6 @@ public class RetryQueueIntegrationTest extends
SolrTestCaseJ4 {
CloudSolrClient client = solrCluster1.getSolrClient(COLLECTION);
- String bootstrapServers = kafkaCluster.bootstrapServers();
log.info("bootstrapServers={}", bootstrapServers);
Map<String, Object> properties = new HashMap<>();
@@ -174,14 +171,6 @@ public class RetryQueueIntegrationTest extends
SolrTestCaseJ4 {
consumer.shutdown();
}
- try {
- if (kafkaCluster != null) {
- kafkaCluster.stop();
- }
- } catch (Exception e) {
- log.error("Exception stopping Kafka cluster", e);
- }
-
if (solrCluster1 != null) {
solrCluster1.shutdown();
}
@@ -199,7 +188,6 @@ public class RetryQueueIntegrationTest extends
SolrTestCaseJ4 {
consumer = null;
solrCluster1 = null;
solrCluster2 = null;
- kafkaCluster = null;
zkTestServer1 = null;
zkTestServer2 = null;
}
diff --git
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaIntegrationTest.java
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaIntegrationTest.java
index 797080454b5..5206def632a 100644
---
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaIntegrationTest.java
+++
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaIntegrationTest.java
@@ -46,12 +46,14 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
import org.apache.commons.io.IOUtils;
+import org.apache.kafka.clients.admin.AdminClient;
+import org.apache.kafka.clients.admin.AdminClientConfig;
+import org.apache.kafka.clients.admin.NewTopic;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;
-import org.apache.kafka.streams.integration.utils.EmbeddedKafkaCluster;
import org.apache.lucene.tests.util.LuceneTestCase.Nightly;
import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
import org.apache.solr.SolrIgnoredThreadsFilter;
@@ -88,6 +90,7 @@ import org.apache.solr.util.TimeOut;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.Ignore;
import org.junit.Test;
import org.noggit.ObjectBuilder;
@@ -108,8 +111,7 @@ public class SolrAndKafkaIntegrationTest extends
SolrCloudTestCase {
private static final int MAX_DOC_SIZE_BYTES =
Integer.parseInt(DEFAULT_MAX_REQUEST_SIZE);
- private static final int NUM_BROKERS = 1;
- public EmbeddedKafkaCluster kafkaCluster;
+ @ClassRule public static final KafkaContainerRule kafkaContainer = new
KafkaContainerRule();
private static class ConsumerBatch {
final String kafkaTopic;
@@ -171,6 +173,10 @@ public class SolrAndKafkaIntegrationTest extends
SolrCloudTestCase {
private static final String TOPIC = "topic1";
+ // Unique per test method (built from TOPIC), so tests sharing the Kafka
container don't see
+ // each other's topics, records, or consumer group offsets.
+ private String topic;
+
private static final String COLLECTION = "collection1";
private static final String ALT_COLLECTION = "collection2";
private static Thread.UncaughtExceptionHandler uceh;
@@ -210,22 +216,19 @@ public class SolrAndKafkaIntegrationTest extends
SolrCloudTestCase {
};
Properties config = new Properties();
- kafkaCluster =
- new EmbeddedKafkaCluster(NUM_BROKERS, config) {
- @Override
- public String bootstrapServers() {
- return super.bootstrapServers().replaceAll("localhost",
"127.0.0.1");
- }
- };
- kafkaCluster.start();
+ topic = TOPIC + "-" + Integer.toHexString(random().nextInt());
+ String bootstrapServers = kafkaContainer.getBootstrapServers();
- // create many partitions to test for re-ordered reads
- kafkaCluster.createTopic(TOPIC, 3, 1);
+ // Replaced legacy in-JVM topic provisioner with official AdminClient
configurations
+ config.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
+ try (AdminClient adminClient = AdminClient.create(config)) {
+ adminClient.createTopics(List.of(new NewTopic(topic, 3, (short)
1))).all().get();
+ }
- // ensure small batches to test multi-partition ordering
+ // Ensure small batches to test multi-partition ordering
System.setProperty(BATCH_SIZE_BYTES, "100");
- System.setProperty(TOPIC_NAME, TOPIC);
- System.setProperty(BOOTSTRAP_SERVERS, kafkaCluster.bootstrapServers());
+ System.setProperty(TOPIC_NAME, topic);
+ System.setProperty(BOOTSTRAP_SERVERS, bootstrapServers);
System.setProperty(INDEX_UNMIRRORABLE_DOCS, "false");
System.setProperty(COLLAPSE_UPDATES, "none");
@@ -245,14 +248,13 @@ public class SolrAndKafkaIntegrationTest extends
SolrCloudTestCase {
solrCluster2.getSolrClient().request(create2);
solrCluster2.waitForActiveCollection(COLLECTION, 1, 1);
- String bootstrapServers = kafkaCluster.bootstrapServers();
log.info("bootstrapServers={}", bootstrapServers);
Map<String, Object> properties = new HashMap<>();
properties.put(KafkaCrossDcConf.BOOTSTRAP_SERVERS, bootstrapServers);
properties.put(KafkaCrossDcConf.ZK_CONNECT_STRING,
solrCluster2.getZkServer().getZkAddress());
- properties.put(KafkaCrossDcConf.TOPIC_NAME, TOPIC);
- properties.put(KafkaCrossDcConf.GROUP_ID, "group1");
+ properties.put(KafkaCrossDcConf.TOPIC_NAME, topic);
+ properties.put(KafkaCrossDcConf.GROUP_ID, "group1-" + topic);
properties.put(KafkaCrossDcConf.MAX_REQUEST_SIZE_BYTES,
MAX_DOC_SIZE_BYTES);
consumer.start(properties);
}
@@ -270,15 +272,9 @@ public class SolrAndKafkaIntegrationTest extends
SolrCloudTestCase {
solrCluster2.shutdown();
}
- consumer.shutdown();
- consumer = null;
-
- try {
- // kafkaCluster.deleteAllTopicsAndWait(5000);
- kafkaCluster.stop();
- kafkaCluster = null;
- } catch (Exception e) {
- log.error("Exception stopping Kafka cluster", e);
+ if (consumer != null) {
+ consumer.shutdown();
+ consumer = null;
}
Thread.setDefaultUncaughtExceptionHandler(uceh);
@@ -303,7 +299,7 @@ public class SolrAndKafkaIntegrationTest extends
SolrCloudTestCase {
@Test
public void testProducerToCloud() throws Exception {
Properties properties = new Properties();
- properties.put("bootstrap.servers", kafkaCluster.bootstrapServers());
+ properties.put("bootstrap.servers", kafkaContainer.getBootstrapServers());
properties.put("acks", "all");
properties.put("retries", 1);
properties.put("batch.size", 1);
@@ -319,7 +315,7 @@ public class SolrAndKafkaIntegrationTest extends
SolrCloudTestCase {
updateRequest.setParam("collection", COLLECTION);
MirroredSolrRequest<?> mirroredSolrRequest = new
MirroredSolrRequest<>(updateRequest);
producer.send(
- new ProducerRecord<>(TOPIC, mirroredSolrRequest),
+ new ProducerRecord<>(topic, mirroredSolrRequest),
(metadata, exception) ->
log.warn("Producer finished sending metadata={}, exception={}",
metadata, exception));
producer.flush();
diff --git
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaMultiCollectionIntegrationTest.java
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaMultiCollectionIntegrationTest.java
index e859e80f4b8..5e0795d4ff8 100644
---
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaMultiCollectionIntegrationTest.java
+++
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaMultiCollectionIntegrationTest.java
@@ -30,7 +30,9 @@ import java.util.Properties;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
-import org.apache.kafka.streams.integration.utils.EmbeddedKafkaCluster;
+import org.apache.kafka.clients.admin.AdminClient;
+import org.apache.kafka.clients.admin.AdminClientConfig;
+import org.apache.kafka.clients.admin.NewTopic;
import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.client.solrj.SolrClient;
@@ -52,6 +54,7 @@ import
org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
@@ -65,17 +68,14 @@ import org.slf4j.LoggerFactory;
SolrKafkaTestsIgnoredThreadsFilter.class
})
@ThreadLeakLingering(linger = 5000)
-@Ignore("This test relies on collecton properties and I don't see where they
are set anymore")
+@Ignore("This test relies on collection properties and I don't see where they
are set anymore")
public class SolrAndKafkaMultiCollectionIntegrationTest extends
SolrCloudTestCase {
private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final int MAX_DOC_SIZE_BYTES =
Integer.parseInt(DEFAULT_MAX_REQUEST_SIZE);
- static final String VERSION_FIELD = "_version_";
-
- private static final int NUM_BROKERS = 1;
- public EmbeddedKafkaCluster kafkaCluster;
+ @ClassRule public static final KafkaContainerRule kafkaContainer = new
KafkaContainerRule();
protected volatile MiniSolrCloudCluster solrCluster1;
protected volatile MiniSolrCloudCluster solrCluster2;
@@ -84,6 +84,10 @@ public class SolrAndKafkaMultiCollectionIntegrationTest
extends SolrCloudTestCas
private static final String TOPIC = "topic1";
+ // Unique per test method (built from TOPIC), so tests sharing the Kafka
container don't see
+ // each other's topics, records, or consumer group offsets.
+ private String topic;
+
private static final String COLLECTION = "collection1";
private static final String ALT_COLLECTION = "collection2";
@@ -98,22 +102,20 @@ public class SolrAndKafkaMultiCollectionIntegrationTest
extends SolrCloudTestCas
consumer = new Consumer();
Properties config = new Properties();
- kafkaCluster =
- new EmbeddedKafkaCluster(NUM_BROKERS, config) {
- @Override
- public String bootstrapServers() {
- return super.bootstrapServers().replaceAll("localhost",
"127.0.0.1");
- }
- };
- kafkaCluster.start();
+ topic = TOPIC + "-" + Integer.toHexString(random().nextInt());
+ String bootstrapServers = kafkaContainer.getBootstrapServers();
- kafkaCluster.createTopic(TOPIC, 1, 1);
+ // Replaced legacy in-JVM topic provisioner with official AdminClient
configurations
+ config.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
+ try (AdminClient adminClient = AdminClient.create(config)) {
+ adminClient.createTopics(List.of(new NewTopic(topic, 3, (short)
1))).all().get();
+ }
// in this test we will count on collection properties for topicName and
enabled=true
System.setProperty("solr.crossdc.enabled", "false");
- // System.setProperty("solr.crossdc.topicName", TOPIC);
+ // System.setProperty("solr.crossdc.topicName", topic);
- System.setProperty("solr.crossdc.bootstrapServers",
kafkaCluster.bootstrapServers());
+ System.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS,
kafkaContainer.getBootstrapServers());
System.setProperty(INDEX_UNMIRRORABLE_DOCS, "false");
solrCluster1 =
@@ -135,20 +137,19 @@ public class SolrAndKafkaMultiCollectionIntegrationTest
extends SolrCloudTestCas
// Update the collection property "enabled" to true
CollectionProperties cp = new
CollectionProperties(solrCluster1.getZkClient());
cp.setCollectionProperty(COLLECTION, "solr.crossdc.enabled", "true");
- cp.setCollectionProperty(COLLECTION, "solr.crossdc.topicName", TOPIC);
+ cp.setCollectionProperty(COLLECTION, "solr.crossdc.topicName", topic);
// Reloading the collection
CollectionAdminRequest.Reload reloadRequest =
CollectionAdminRequest.reloadCollection(COLLECTION);
reloadRequest.process(solrCluster1.getSolrClient());
- String bootstrapServers = kafkaCluster.bootstrapServers();
log.info("bootstrapServers={}", bootstrapServers);
Map<String, Object> properties = new HashMap<>();
properties.put(KafkaCrossDcConf.BOOTSTRAP_SERVERS, bootstrapServers);
properties.put(KafkaCrossDcConf.ZK_CONNECT_STRING,
solrCluster2.getZkServer().getZkAddress());
- properties.put(KafkaCrossDcConf.TOPIC_NAME, TOPIC);
- properties.put(KafkaCrossDcConf.GROUP_ID, "group1");
+ properties.put(KafkaCrossDcConf.TOPIC_NAME, topic);
+ properties.put(KafkaCrossDcConf.GROUP_ID, "group1-" + topic);
properties.put(KafkaCrossDcConf.MAX_REQUEST_SIZE_BYTES,
MAX_DOC_SIZE_BYTES);
consumer.start(properties);
}
@@ -157,7 +158,7 @@ public class SolrAndKafkaMultiCollectionIntegrationTest
extends SolrCloudTestCas
public void afterSolrAndKafkaIntegrationTest() throws Exception {
ObjectReleaseTracker.clear();
- Util.printKafkaInfo(kafkaCluster.bootstrapServers(),
"SolrCrossDCConsumer");
+ Util.printKafkaInfo(kafkaContainer.getBootstrapServers(),
"SolrCrossDCConsumer");
if (solrCluster1 != null) {
solrCluster1.getZkServer().getZkClient().printLayoutToStream(System.out);
@@ -170,14 +171,6 @@ public class SolrAndKafkaMultiCollectionIntegrationTest
extends SolrCloudTestCas
consumer.shutdown();
consumer = null;
-
- try {
- // kafkaCluster.deleteAllTopicsAndWait(10000);
- kafkaCluster.stop();
- kafkaCluster = null;
- } catch (Exception e) {
- log.error("Exception stopping Kafka cluster", e);
- }
}
private static SolrInputDocument getDoc() {
@@ -208,7 +201,7 @@ public class SolrAndKafkaMultiCollectionIntegrationTest
extends SolrCloudTestCas
// Update the collection property "enabled" to true
CollectionProperties cp = new
CollectionProperties(solrCluster1.getZkClient());
cp.setCollectionProperty(ALT_COLLECTION, "solr.crossdc.enabled", "true");
- cp.setCollectionProperty(ALT_COLLECTION, "solr.crossdc.topicName",
TOPIC);
+ cp.setCollectionProperty(ALT_COLLECTION, "solr.crossdc.topicName",
topic);
// Reloading the collection
CollectionAdminRequest.Reload reloadRequest =
CollectionAdminRequest.reloadCollection(ALT_COLLECTION);
@@ -264,7 +257,7 @@ public class SolrAndKafkaMultiCollectionIntegrationTest
extends SolrCloudTestCas
// Update the collection property "enabled" to true
CollectionProperties cp = new
CollectionProperties(solrCluster1.getZkClient());
cp.setCollectionProperty(ALT_COLLECTION, "solr.crossdc.enabled", "true");
- cp.setCollectionProperty(ALT_COLLECTION, "solr.crossdc.topicName",
TOPIC);
+ cp.setCollectionProperty(ALT_COLLECTION, "solr.crossdc.topicName",
topic);
// Reloading the collection
CollectionAdminRequest.Reload reloadRequest =
CollectionAdminRequest.reloadCollection(ALT_COLLECTION);
diff --git
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaReindexTest.java
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaReindexTest.java
index a7c12207e57..7e1cc540b6d 100644
---
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaReindexTest.java
+++
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/SolrAndKafkaReindexTest.java
@@ -25,7 +25,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import org.apache.kafka.streams.integration.utils.EmbeddedKafkaCluster;
+import org.apache.kafka.clients.admin.AdminClient;
+import org.apache.kafka.clients.admin.AdminClientConfig;
+import org.apache.kafka.clients.admin.NewTopic;
import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.client.solrj.SolrServerException;
@@ -43,6 +45,7 @@ import
org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -58,10 +61,7 @@ public class SolrAndKafkaReindexTest extends
SolrCloudTestCase {
private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- static final String VERSION_FIELD = "_version_";
-
- private static final int NUM_BROKERS = 1;
- public static EmbeddedKafkaCluster kafkaCluster;
+ @ClassRule public static final KafkaContainerRule kafkaContainer = new
KafkaContainerRule();
protected static volatile MiniSolrCloudCluster solrCluster1;
protected static volatile MiniSolrCloudCluster solrCluster2;
@@ -83,19 +83,16 @@ public class SolrAndKafkaReindexTest extends
SolrCloudTestCase {
config.put("unclean.leader.election.enable", "true");
config.put("enable.partition.eof", "false");
- kafkaCluster =
- new EmbeddedKafkaCluster(NUM_BROKERS, config) {
- @Override
- public String bootstrapServers() {
- return super.bootstrapServers().replaceAll("localhost",
"127.0.0.1");
- }
- };
- kafkaCluster.start();
+ String bootstrapServers = kafkaContainer.getBootstrapServers();
- kafkaCluster.createTopic(TOPIC, 1, 1);
+ // Replaced legacy in-JVM topic provisioner with official AdminClient
configurations
+ config.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
+ try (AdminClient adminClient = AdminClient.create(config)) {
+ adminClient.createTopics(List.of(new NewTopic(TOPIC, 3, (short)
1))).all().get();
+ }
System.setProperty("solr.crossdc.topicName", TOPIC);
- System.setProperty("solr.crossdc.bootstrapServers",
kafkaCluster.bootstrapServers());
+ System.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS,
kafkaContainer.getBootstrapServers());
solrCluster1 =
configureCluster(3).addConfig("conf",
getFile("configs/cloud-minimal/conf")).configure();
@@ -113,7 +110,6 @@ public class SolrAndKafkaReindexTest extends
SolrCloudTestCase {
solrCluster2.getSolrClient().request(create2);
solrCluster2.waitForActiveCollection(COLLECTION, 2, 6);
- String bootstrapServers = kafkaCluster.bootstrapServers();
log.info("bootstrapServers={}", bootstrapServers);
Map<String, Object> properties = new HashMap<>();
@@ -148,17 +144,8 @@ public class SolrAndKafkaReindexTest extends
SolrCloudTestCase {
consumer.shutdown();
}
- try {
- if (kafkaCluster != null) {
- kafkaCluster.stop();
- }
- } catch (Exception e) {
- log.error("Exception stopping Kafka cluster, ignoring", e);
- }
-
solrCluster1 = null;
solrCluster2 = null;
- kafkaCluster = null;
consumer = null;
}
diff --git
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/ZkConfigIntegrationTest.java
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/ZkConfigIntegrationTest.java
index e0af7eaeb61..d4daa6f8040 100644
---
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/ZkConfigIntegrationTest.java
+++
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/ZkConfigIntegrationTest.java
@@ -21,9 +21,12 @@ import
com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
import java.io.ByteArrayOutputStream;
import java.lang.invoke.MethodHandles;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
-import org.apache.kafka.streams.integration.utils.EmbeddedKafkaCluster;
+import org.apache.kafka.clients.admin.AdminClient;
+import org.apache.kafka.clients.admin.AdminClientConfig;
+import org.apache.kafka.clients.admin.NewTopic;
import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
@@ -41,6 +44,7 @@ import
org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,10 +61,7 @@ public class ZkConfigIntegrationTest extends
SolrCloudTestCase {
private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- static final String VERSION_FIELD = "_version_";
-
- private static final int NUM_BROKERS = 1;
- public static EmbeddedKafkaCluster kafkaCluster;
+ @ClassRule public static final KafkaContainerRule kafkaContainer = new
KafkaContainerRule();
protected static volatile MiniSolrCloudCluster solrCluster1;
protected static volatile MiniSolrCloudCluster solrCluster2;
@@ -80,24 +81,20 @@ public class ZkConfigIntegrationTest extends
SolrCloudTestCase {
System.setProperty(KafkaCrossDcConf.PORT, "-1");
consumer1 = new Consumer();
consumer2 = new Consumer();
- Properties config = new Properties();
- config.put("unclean.leader.election.enable", "true");
- config.put("enable.partition.eof", "false");
-
- kafkaCluster =
- new EmbeddedKafkaCluster(NUM_BROKERS, config) {
- @Override
- public String bootstrapServers() {
- return super.bootstrapServers().replaceAll("localhost",
"127.0.0.1");
- }
- };
- kafkaCluster.start();
- kafkaCluster.createTopic(TOPIC1, 1, 1);
- kafkaCluster.createTopic(TOPIC2, 1, 1);
-
- // System.setProperty("solr.crossdc.topicName", null);
- // System.setProperty("solr.crossdc.bootstrapServers", null);
+ String bootstrapServers = kafkaContainer.getBootstrapServers();
+ log.info("Kafka Testcontainer started. bootstrapServers={}",
bootstrapServers);
+
+ // Create required execution topics using standard Kafka AdminClient
mechanics
+ Properties adminProps = new Properties();
+ adminProps.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG,
bootstrapServers);
+ try (AdminClient adminClient = AdminClient.create(adminProps)) {
+ adminClient
+ .createTopics(
+ List.of(new NewTopic(TOPIC1, 1, (short) 1), new NewTopic(TOPIC2,
1, (short) 1)))
+ .all()
+ .get();
+ }
Properties props = new Properties();
@@ -105,10 +102,10 @@ public class ZkConfigIntegrationTest extends
SolrCloudTestCase {
configureCluster(1).addConfig("conf",
getFile("configs/cloud-minimal/conf")).configure();
props.setProperty(KafkaCrossDcConf.TOPIC_NAME, TOPIC2);
- props.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS,
kafkaCluster.bootstrapServers());
+ props.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS, bootstrapServers);
System.setProperty(KafkaCrossDcConf.TOPIC_NAME, TOPIC2);
- System.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS,
kafkaCluster.bootstrapServers());
+ System.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS, bootstrapServers);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
props.store(baos, "");
@@ -129,22 +126,17 @@ public class ZkConfigIntegrationTest extends
SolrCloudTestCase {
solrCluster2.waitForActiveCollection(COLLECTION, 1, 1);
props = new Properties();
- props.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS,
kafkaCluster.bootstrapServers());
+ props.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS, bootstrapServers);
baos = new ByteArrayOutputStream();
props.store(baos, "");
data = baos.toByteArray();
solrCluster2.getZkClient().makePath("/crossdc.properties", data, true);
- String bootstrapServers = kafkaCluster.bootstrapServers();
- log.info("bootstrapServers={}", bootstrapServers);
-
Map<String, Object> properties = new HashMap<>();
- Object put =
- properties.put(
- KafkaCrossDcConf.ZK_CONNECT_STRING,
solrCluster2.getZkServer().getZkAddress());
+ properties.put(KafkaCrossDcConf.ZK_CONNECT_STRING,
solrCluster2.getZkServer().getZkAddress());
- System.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS,
kafkaCluster.bootstrapServers());
+ System.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS, bootstrapServers);
consumer1.start(properties);
@@ -175,17 +167,8 @@ public class ZkConfigIntegrationTest extends
SolrCloudTestCase {
consumer2.shutdown();
}
- if (kafkaCluster != null) {
- try {
- kafkaCluster.stop();
- } catch (Exception e) {
- log.error("Exception stopping Kafka cluster", e);
- }
- }
-
solrCluster1 = null;
solrCluster2 = null;
- kafkaCluster = null;
consumer1 = null;
consumer2 = null;
}
diff --git a/solr/licenses/argparse4j-0.7.0.jar.sha1
b/solr/licenses/argparse4j-0.7.0.jar.sha1
deleted file mode 100644
index 23beccf9588..00000000000
--- a/solr/licenses/argparse4j-0.7.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-6f0621d0c3888de39e0f06d01f37ba53a798e657
diff --git a/solr/licenses/commons-beanutils-1.11.0.jar.sha1
b/solr/licenses/commons-beanutils-1.11.0.jar.sha1
deleted file mode 100644
index b445b39655f..00000000000
--- a/solr/licenses/commons-beanutils-1.11.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ac03ea606d13de04c2e4508227680faff151f491
diff --git a/solr/licenses/commons-collections-3.2.2.jar.sha1
b/solr/licenses/commons-collections-3.2.2.jar.sha1
deleted file mode 100644
index 3284fcae413..00000000000
--- a/solr/licenses/commons-collections-3.2.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8ad72fe39fa8c91eaaf12aadb21e0c3661fe26d5
diff --git a/solr/licenses/commons-digester-2.1.jar.sha1
b/solr/licenses/commons-digester-2.1.jar.sha1
deleted file mode 100644
index 0a4c66f0bb9..00000000000
--- a/solr/licenses/commons-digester-2.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-73a8001e7a54a255eef0f03521ec1805dc738ca0
diff --git a/solr/licenses/commons-validator-1.10.1.jar.sha1
b/solr/licenses/commons-validator-1.10.1.jar.sha1
deleted file mode 100644
index 8a885b5ada9..00000000000
--- a/solr/licenses/commons-validator-1.10.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-cdf5c2a69aad509c4db54786f19f1e1ccc471bcf
diff --git a/solr/licenses/jackson-dataformat-csv-2.22.0.jar.sha1
b/solr/licenses/jackson-dataformat-csv-2.22.0.jar.sha1
deleted file mode 100644
index 14ad17bebba..00000000000
--- a/solr/licenses/jackson-dataformat-csv-2.22.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-cb79c48fff4f42e970d16e26754ab8b33b569410
diff --git a/solr/licenses/jackson-module-scala_2.13-2.22.0.jar.sha1
b/solr/licenses/jackson-module-scala_2.13-2.22.0.jar.sha1
deleted file mode 100644
index 06254cea850..00000000000
--- a/solr/licenses/jackson-module-scala_2.13-2.22.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ee9cda18f877b8b650005575915a379d344a0ddb
diff --git a/solr/licenses/kafka-clients-3.9.2-test.jar.sha1
b/solr/licenses/kafka-clients-3.9.2-test.jar.sha1
deleted file mode 100644
index d63004758a1..00000000000
--- a/solr/licenses/kafka-clients-3.9.2-test.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-06e3f668d8d989f608dc3891d3e2d6a95508f074
diff --git a/solr/licenses/kafka-clients-3.9.2.jar.sha1
b/solr/licenses/kafka-clients-3.9.2.jar.sha1
deleted file mode 100644
index 5825a6db392..00000000000
--- a/solr/licenses/kafka-clients-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a06edbaa01458ed2e8cf1be69a18c2f231fda6e0
diff --git a/solr/licenses/kafka-clients-4.3.1.jar.sha1
b/solr/licenses/kafka-clients-4.3.1.jar.sha1
new file mode 100644
index 00000000000..8fbeb30c153
--- /dev/null
+++ b/solr/licenses/kafka-clients-4.3.1.jar.sha1
@@ -0,0 +1 @@
+74209a28d36f819b2f7a9b599e468b5654cad514
diff --git a/solr/licenses/kafka-group-coordinator-3.9.2.jar.sha1
b/solr/licenses/kafka-group-coordinator-3.9.2.jar.sha1
deleted file mode 100644
index 1141ce9a3c1..00000000000
--- a/solr/licenses/kafka-group-coordinator-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-416c1dbcdd1e141707dd89dfe04328a9ce870264
diff --git a/solr/licenses/kafka-group-coordinator-api-3.9.2.jar.sha1
b/solr/licenses/kafka-group-coordinator-api-3.9.2.jar.sha1
deleted file mode 100644
index 13b0b7f78db..00000000000
--- a/solr/licenses/kafka-group-coordinator-api-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7a69f2be4047f3f55554c403fe78680d54a26480
diff --git a/solr/licenses/kafka-metadata-3.9.2.jar.sha1
b/solr/licenses/kafka-metadata-3.9.2.jar.sha1
deleted file mode 100644
index fe49498df2f..00000000000
--- a/solr/licenses/kafka-metadata-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-01a266d85e89f1216e1325955942c3037da21d3b
diff --git a/solr/licenses/kafka-raft-3.9.2.jar.sha1
b/solr/licenses/kafka-raft-3.9.2.jar.sha1
deleted file mode 100644
index c3040256780..00000000000
--- a/solr/licenses/kafka-raft-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5b72980224762aef91766a8fb047a03640905700
diff --git a/solr/licenses/kafka-server-3.9.2.jar.sha1
b/solr/licenses/kafka-server-3.9.2.jar.sha1
deleted file mode 100644
index 4fe94c9114b..00000000000
--- a/solr/licenses/kafka-server-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e3d11d66ce497bfc3572d9e095280b4a893d16fa
diff --git a/solr/licenses/kafka-server-common-3.9.2-test.jar.sha1
b/solr/licenses/kafka-server-common-3.9.2-test.jar.sha1
deleted file mode 100644
index c142a96f299..00000000000
--- a/solr/licenses/kafka-server-common-3.9.2-test.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-dfe59e02dde550d01ca98dca66ceb885af6d84b1
diff --git a/solr/licenses/kafka-server-common-3.9.2.jar.sha1
b/solr/licenses/kafka-server-common-3.9.2.jar.sha1
deleted file mode 100644
index 8e9b718fffc..00000000000
--- a/solr/licenses/kafka-server-common-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e6fe2cdafd5b2a0b07db07cf692863e0b9335625
diff --git a/solr/licenses/kafka-storage-3.9.2.jar.sha1
b/solr/licenses/kafka-storage-3.9.2.jar.sha1
deleted file mode 100644
index 2d38f15baaa..00000000000
--- a/solr/licenses/kafka-storage-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a8a997893c4cb8cc3093c71720b3c33f1e03cade
diff --git a/solr/licenses/kafka-storage-api-3.9.2.jar.sha1
b/solr/licenses/kafka-storage-api-3.9.2.jar.sha1
deleted file mode 100644
index 39ea1716578..00000000000
--- a/solr/licenses/kafka-storage-api-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8fa32fee158c900bd2d3d87d09d5838bd5a8813f
diff --git a/solr/licenses/kafka-streams-3.9.2-test.jar.sha1
b/solr/licenses/kafka-streams-3.9.2-test.jar.sha1
deleted file mode 100644
index d0dd0217f90..00000000000
--- a/solr/licenses/kafka-streams-3.9.2-test.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a73440d85accc36697234500238635f617dd704e
diff --git a/solr/licenses/kafka-streams-3.9.2.jar.sha1
b/solr/licenses/kafka-streams-3.9.2.jar.sha1
deleted file mode 100644
index 2beffe31980..00000000000
--- a/solr/licenses/kafka-streams-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-3253bfc2c12441a54be3c2c77ce5b1d2dec7be72
diff --git a/solr/licenses/kafka-tools-api-3.9.2.jar.sha1
b/solr/licenses/kafka-tools-api-3.9.2.jar.sha1
deleted file mode 100644
index 8aa9ceabe94..00000000000
--- a/solr/licenses/kafka-tools-api-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-d1b40695ba813f5647fe5bcd5960628cd1ef9a77
diff --git a/solr/licenses/kafka-transaction-coordinator-3.9.2.jar.sha1
b/solr/licenses/kafka-transaction-coordinator-3.9.2.jar.sha1
deleted file mode 100644
index 02b3cf0fc79..00000000000
--- a/solr/licenses/kafka-transaction-coordinator-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-b001c1f9e45521be560d9a2a9e6d337a1b3a82c9
diff --git a/solr/licenses/kafka_2.13-3.9.2-test.jar.sha1
b/solr/licenses/kafka_2.13-3.9.2-test.jar.sha1
deleted file mode 100644
index 61558f444d8..00000000000
--- a/solr/licenses/kafka_2.13-3.9.2-test.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ac5d850006fa65cdba75012d6f2c17ed1759c1ce
diff --git a/solr/licenses/kafka_2.13-3.9.2.jar.sha1
b/solr/licenses/kafka_2.13-3.9.2.jar.sha1
deleted file mode 100644
index 4386ee2ced1..00000000000
--- a/solr/licenses/kafka_2.13-3.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a671d4c2c65740d4a564687d9313ca50be6c10e5
diff --git a/solr/licenses/kafka_2.13-LICENSE-ASL.txt
b/solr/licenses/kafka_2.13-LICENSE-ASL.txt
deleted file mode 100644
index a6fe25e5c8d..00000000000
--- a/solr/licenses/kafka_2.13-LICENSE-ASL.txt
+++ /dev/null
@@ -1,345 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--------------------------------------------------------------------------------
-This project bundles some components that are also licensed under the Apache
-License Version 2.0:
-
-audience-annotations-0.12.0
-caffeine-2.9.3
-commons-beanutils-1.9.4
-commons-cli-1.4
-commons-collections-3.2.2
-commons-digester-2.1
-commons-io-2.11.0
-commons-lang3-3.12.0
-commons-logging-1.2
-commons-validator-1.7
-error_prone_annotations-2.10.0
-jackson-annotations-2.16.2
-jackson-core-2.16.2
-jackson-databind-2.16.2
-jackson-dataformat-csv-2.16.2
-jackson-datatype-jdk8-2.16.2
-jackson-jaxrs-base-2.16.2
-jackson-jaxrs-json-provider-2.16.2
-jackson-module-afterburner-2.16.2
-jackson-module-jaxb-annotations-2.16.2
-jackson-module-scala_2.13-2.16.2
-jackson-module-scala_2.12-2.16.2
-jakarta.validation-api-2.0.2
-javassist-3.29.2-GA
-jetty-client-9.4.54.v20240208
-jetty-continuation-9.4.54.v20240208
-jetty-http-9.4.54.v20240208
-jetty-io-9.4.54.v20240208
-jetty-security-9.4.54.v20240208
-jetty-server-9.4.54.v20240208
-jetty-servlet-9.4.54.v20240208
-jetty-servlets-9.4.54.v20240208
-jetty-util-9.4.54.v20240208
-jetty-util-ajax-9.4.54.v20240208
-jose4j-0.9.4
-lz4-java-1.8.0
-maven-artifact-3.9.6
-metrics-core-4.1.12.1
-metrics-core-2.2.0
-netty-buffer-4.1.111.Final
-netty-codec-4.1.111.Final
-netty-common-4.1.111.Final
-netty-handler-4.1.111.Final
-netty-resolver-4.1.111.Final
-netty-transport-4.1.111.Final
-netty-transport-classes-epoll-4.1.111.Final
-netty-transport-native-epoll-4.1.111.Final
-netty-transport-native-unix-common-4.1.111.Final
-opentelemetry-proto-1.0.0-alpha
-plexus-utils-3.5.1
-reflections-0.10.2
-reload4j-1.2.25
-rocksdbjni-7.9.2
-scala-collection-compat_2.12-2.10.0
-scala-collection-compat_2.13-2.10.0
-scala-library-2.12.19
-scala-library-2.13.14
-scala-logging_2.12-3.9.5
-scala-logging_2.13-3.9.5
-scala-reflect-2.12.19
-scala-reflect-2.13.14
-scala-java8-compat_2.12-1.0.2
-scala-java8-compat_2.13-1.0.2
-snappy-java-1.1.10.5
-swagger-annotations-2.2.8
-zookeeper-3.8.4
-zookeeper-jute-3.8.4
-
-===============================================================================
-This product bundles various third-party components under other open source
-licenses. This section summarizes those components and their licenses.
-See licenses/ for text of these licenses.
-
----------------------------------------
-Eclipse Distribution License - v 1.0
-see: licenses/eclipse-distribution-license-1.0
-
-jakarta.activation-api-1.2.2
-jakarta.xml.bind-api-2.3.3
-
----------------------------------------
-Eclipse Public License - v 2.0
-see: licenses/eclipse-public-license-2.0
-
-jakarta.annotation-api-1.3.5
-jakarta.ws.rs-api-2.1.6
-hk2-api-2.6.1
-hk2-locator-2.6.1
-hk2-utils-2.6.1
-osgi-resource-locator-1.0.3
-aopalliance-repackaged-2.6.1
-jakarta.inject-2.6.1
-jersey-client-2.39.1
-jersey-common-2.39.1
-jersey-container-servlet-2.39.1
-jersey-container-servlet-core-2.39.1
-jersey-hk2-2.39.1
-jersey-server-2.39.1
-
----------------------------------------
-CDDL 1.1 + GPLv2 with classpath exception
-see: licenses/CDDL+GPL-1.1
-
-javax.activation-api-1.2.0
-javax.annotation-api-1.3.2
-javax.servlet-api-3.1.0
-javax.ws.rs-api-2.1.1
-jaxb-api-2.3.1
-activation-1.1.1
-
----------------------------------------
-MIT License
-
-argparse4j-0.7.0, see: licenses/argparse-MIT
-checker-qual-3.19.0, see: licenses/checker-qual-MIT
-jopt-simple-5.0.4, see: licenses/jopt-simple-MIT
-slf4j-api-1.7.36, see: licenses/slf4j-MIT
-slf4j-reload4j-1.7.36, see: licenses/slf4j-MIT
-pcollections-4.0.1, see: licenses/pcollections-MIT
-
----------------------------------------
-BSD 2-Clause
-
-zstd-jni-1.5.6-3 see: licenses/zstd-jni-BSD-2-clause
-
----------------------------------------
-BSD 3-Clause
-
-jline-3.25.1, see: licenses/jline-BSD-3-clause
-jsr305-3.0.2, see: licenses/jsr305-BSD-3-clause
-paranamer-2.8, see: licenses/paranamer-BSD-3-clause
-protobuf-java-3.23.4, see: licenses/protobuf-java-BSD-3-clause
-
----------------------------------------
-Do What The F*ck You Want To Public License
-see: licenses/DWTFYWTPL
-
-reflections-0.10.2
\ No newline at end of file
diff --git a/solr/licenses/kafka_2.13-NOTICE.txt
b/solr/licenses/kafka_2.13-NOTICE.txt
deleted file mode 100644
index c5c9b84e932..00000000000
--- a/solr/licenses/kafka_2.13-NOTICE.txt
+++ /dev/null
@@ -1,863 +0,0 @@
-Apache Kafka
-Copyright 2021 The Apache Software Foundation.
-
-This product includes software developed at
-The Apache Software Foundation (https://www.apache.org/).
-
-This distribution has a binary dependency on jersey, which is available under
the CDDL
-License. The source code of jersey can be found at
https://github.com/jersey/jersey/.
-
-This distribution has a binary test dependency on jqwik, which is available
under
-the Eclipse Public License 2.0. The source code can be found at
-https://github.com/jlink/jqwik.
-
-The streams-scala (streams/streams-scala) module was donated by Lightbend and
the original code was copyrighted by them:
-Copyright (C) 2018 Lightbend Inc. <https://www.lightbend.com>
-Copyright (C) 2017-2018 Alexis Seigneurin.
-
-This project contains the following code copied from Apache Hadoop:
-clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java
-Some portions of this file Copyright (c) 2004-2006 Intel Corporation and
licensed under the BSD license.
-
-This project contains the following code copied from Apache Hive:
-streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java
-
-// ------------------------------------------------------------------
-// NOTICE file corresponding to the section 4d of The Apache License,
-// Version 2.0, in this case for
-// ------------------------------------------------------------------
-
-# Notices for Eclipse GlassFish
-
-This content is produced and maintained by the Eclipse GlassFish project.
-
-* Project home: https://projects.eclipse.org/projects/ee4j.glassfish
-
-## Trademarks
-
-Eclipse GlassFish, and GlassFish are trademarks of the Eclipse Foundation.
-
-## Copyright
-
-All content is the property of the respective authors or their employers. For
-more information regarding authorship of content, please consult the listed
-source code repository logs.
-
-## Declared Project Licenses
-
-This program and the accompanying materials are made available under the terms
-of the Eclipse Public License v. 2.0 which is available at
-http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made
-available under the following Secondary Licenses when the conditions for such
-availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU
-General Public License, version 2 with the GNU Classpath Exception which is
-available at https://www.gnu.org/software/classpath/license.html.
-
-SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
-## Source Code
-
-The project maintains the following source code repositories:
-
-* https://github.com/eclipse-ee4j/glassfish-ha-api
-* https://github.com/eclipse-ee4j/glassfish-logging-annotation-processor
-* https://github.com/eclipse-ee4j/glassfish-shoal
-* https://github.com/eclipse-ee4j/glassfish-cdi-porting-tck
-* https://github.com/eclipse-ee4j/glassfish-jsftemplating
-* https://github.com/eclipse-ee4j/glassfish-hk2-extra
-* https://github.com/eclipse-ee4j/glassfish-hk2
-* https://github.com/eclipse-ee4j/glassfish-fighterfish
-
-## Third-party Content
-
-This project leverages the following third party content.
-
-None
-
-## Cryptography
-
-Content may contain encryption software. The country in which you are currently
-may have restrictions on the import, possession, and use, and/or re-export to
-another country, of encryption software. BEFORE using any encryption software,
-please check the country's laws, regulations and policies concerning the
import,
-possession, or use, and re-export of encryption software, to see if this is
-permitted.
-
-
-Apache Yetus - Audience Annotations
-Copyright 2015-2017 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-
-Apache Commons CLI
-Copyright 2001-2017 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-
-Apache Commons IO
-Copyright 2002-2021 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (https://www.apache.org/).
-
-
-Apache Commons Lang
-Copyright 2001-2018 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-
-# Jackson JSON processor
-
-Jackson is a high-performance, Free/Open Source JSON processing library.
-It was originally written by Tatu Saloranta ([email protected]), and has
-been in development since 2007.
-It is currently developed by a community of developers, as well as supported
-commercially by FasterXML.com.
-
-## Licensing
-
-Jackson core and extension components may licensed under different licenses.
-To find the details that apply to this artifact see the accompanying LICENSE
file.
-For more information, including possible other licensing options, contact
-FasterXML.com (http://fasterxml.com).
-
-## Credits
-
-A list of contributors may be found from CREDITS file, which is included
-in some artifacts (usually source distributions); but is always available
-from the source code management (SCM) system project uses.
-
-
-# Notices for Eclipse Project for JAF
-
-This content is produced and maintained by the Eclipse Project for JAF project.
-
-* Project home: https://projects.eclipse.org/projects/ee4j.jaf
-
-## Copyright
-
-All content is the property of the respective authors or their employers. For
-more information regarding authorship of content, please consult the listed
-source code repository logs.
-
-## Declared Project Licenses
-
-This program and the accompanying materials are made available under the terms
-of the Eclipse Distribution License v. 1.0,
-which is available at http://www.eclipse.org/org/documents/edl-v10.php.
-
-SPDX-License-Identifier: BSD-3-Clause
-
-## Source Code
-
-The project maintains the following source code repositories:
-
-* https://github.com/eclipse-ee4j/jaf
-
-## Third-party Content
-
-This project leverages the following third party content.
-
-JUnit (4.12)
-
-* License: Eclipse Public License
-
-
-# Notices for Jakarta Annotations
-
-This content is produced and maintained by the Jakarta Annotations project.
-
- * Project home: https://projects.eclipse.org/projects/ee4j.ca
-
-## Trademarks
-
-Jakarta Annotations is a trademark of the Eclipse Foundation.
-
-## Declared Project Licenses
-
-This program and the accompanying materials are made available under the terms
-of the Eclipse Public License v. 2.0 which is available at
-http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made
-available under the following Secondary Licenses when the conditions for such
-availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU
-General Public License, version 2 with the GNU Classpath Exception which is
-available at https://www.gnu.org/software/classpath/license.html.
-
-SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
-## Source Code
-
-The project maintains the following source code repositories:
-
- * https://github.com/eclipse-ee4j/common-annotations-api
-
-## Third-party Content
-
-## Cryptography
-
-Content may contain encryption software. The country in which you are currently
-may have restrictions on the import, possession, and use, and/or re-export to
-another country, of encryption software. BEFORE using any encryption software,
-please check the country's laws, regulations and policies concerning the
import,
-possession, or use, and re-export of encryption software, to see if this is
-permitted.
-
-
-# Notices for the Jakarta RESTful Web Services Project
-
-This content is produced and maintained by the **Jakarta RESTful Web Services**
-project.
-
-* Project home: https://projects.eclipse.org/projects/ee4j.jaxrs
-
-## Trademarks
-
-**Jakarta RESTful Web Services** is a trademark of the Eclipse Foundation.
-
-## Copyright
-
-All content is the property of the respective authors or their employers. For
-more information regarding authorship of content, please consult the listed
-source code repository logs.
-
-## Declared Project Licenses
-
-This program and the accompanying materials are made available under the terms
-of the Eclipse Public License v. 2.0 which is available at
-http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made
-available under the following Secondary Licenses when the conditions for such
-availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU
-General Public License, version 2 with the GNU Classpath Exception which is
-available at https://www.gnu.org/software/classpath/license.html.
-
-SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
-## Source Code
-
-The project maintains the following source code repositories:
-
-* https://github.com/eclipse-ee4j/jaxrs-api
-
-## Third-party Content
-
-This project leverages the following third party content.
-
-javaee-api (7.0)
-
-* License: Apache-2.0 AND W3C
-
-JUnit (4.11)
-
-* License: Common Public License 1.0
-
-Mockito (2.16.0)
-
-* Project: http://site.mockito.org
-* Source: https://github.com/mockito/mockito/releases/tag/v2.16.0
-
-## Cryptography
-
-Content may contain encryption software. The country in which you are currently
-may have restrictions on the import, possession, and use, and/or re-export to
-another country, of encryption software. BEFORE using any encryption software,
-please check the country's laws, regulations and policies concerning the
import,
-possession, or use, and re-export of encryption software, to see if this is
-permitted.
-
-
-# Notices for Eclipse Project for JAXB
-
-This content is produced and maintained by the Eclipse Project for JAXB
project.
-
-* Project home: https://projects.eclipse.org/projects/ee4j.jaxb
-
-## Trademarks
-
-Eclipse Project for JAXB is a trademark of the Eclipse Foundation.
-
-## Copyright
-
-All content is the property of the respective authors or their employers. For
-more information regarding authorship of content, please consult the listed
-source code repository logs.
-
-## Declared Project Licenses
-
-This program and the accompanying materials are made available under the terms
-of the Eclipse Distribution License v. 1.0 which is available
-at http://www.eclipse.org/org/documents/edl-v10.php.
-
-SPDX-License-Identifier: BSD-3-Clause
-
-## Source Code
-
-The project maintains the following source code repositories:
-
-* https://github.com/eclipse-ee4j/jaxb-api
-
-## Third-party Content
-
-This project leverages the following third party content.
-
-None
-
-## Cryptography
-
-Content may contain encryption software. The country in which you are currently
-may have restrictions on the import, possession, and use, and/or re-export to
-another country, of encryption software. BEFORE using any encryption software,
-please check the country's laws, regulations and policies concerning the
import,
-possession, or use, and re-export of encryption software, to see if this is
-permitted.
-
-
-# Notice for Jersey
-This content is produced and maintained by the Eclipse Jersey project.
-
-* Project home: https://projects.eclipse.org/projects/ee4j.jersey
-
-## Trademarks
-Eclipse Jersey is a trademark of the Eclipse Foundation.
-
-## Copyright
-
-All content is the property of the respective authors or their employers. For
-more information regarding authorship of content, please consult the listed
-source code repository logs.
-
-## Declared Project Licenses
-
-This program and the accompanying materials are made available under the terms
-of the Eclipse Public License v. 2.0 which is available at
-http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made
-available under the following Secondary Licenses when the conditions for such
-availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU
-General Public License, version 2 with the GNU Classpath Exception which is
-available at https://www.gnu.org/software/classpath/license.html.
-
-SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-
-## Source Code
-The project maintains the following source code repositories:
-
-* https://github.com/eclipse-ee4j/jersey
-
-## Third-party Content
-
-Angular JS, v1.6.6
-* License MIT (http://www.opensource.org/licenses/mit-license.php)
-* Project: http://angularjs.org
-* Coyright: (c) 2010-2017 Google, Inc.
-
-aopalliance Version 1
-* License: all the source code provided by AOP Alliance is Public Domain.
-* Project: http://aopalliance.sourceforge.net
-* Copyright: Material in the public domain is not protected by copyright
-
-Bean Validation API 2.0.2
-* License: Apache License, 2.0
-* Project: http://beanvalidation.org/1.1/
-* Copyright: 2009, Red Hat, Inc. and/or its affiliates, and individual
contributors
-* by the @authors tag.
-
-Hibernate Validator CDI, 6.1.2.Final
-* License: Apache License, 2.0
-* Project: https://beanvalidation.org/
-* Repackaged in org.glassfish.jersey.server.validation.internal.hibernate
-
-Bootstrap v3.3.7
-* License: MIT license (https://github.com/twbs/bootstrap/blob/master/LICENSE)
-* Project: http://getbootstrap.com
-* Copyright: 2011-2016 Twitter, Inc
-
-Google Guava Version 18.0
-* License: Apache License, 2.0
-* Copyright (C) 2009 The Guava Authors
-
-javax.inject Version: 1
-* License: Apache License, 2.0
-* Copyright (C) 2009 The JSR-330 Expert Group
-
-Javassist Version 3.25.0-GA
-* License: Apache License, 2.0
-* Project: http://www.javassist.org/
-* Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.
-
-Jackson JAX-RS Providers Version 2.10.1
-* License: Apache License, 2.0
-* Project: https://github.com/FasterXML/jackson-jaxrs-providers
-* Copyright: (c) 2009-2011 FasterXML, LLC. All rights reserved unless
otherwise indicated.
-
-jQuery v1.12.4
-* License: jquery.org/license
-* Project: jquery.org
-* Copyright: (c) jQuery Foundation
-
-jQuery Barcode plugin 0.3
-* License: MIT & GPL (http://www.opensource.org/licenses/mit-license.php &
http://www.gnu.org/licenses/gpl.html)
-* Project: http://www.pasella.it/projects/jQuery/barcode
-* Copyright: (c) 2009 Antonello Pasella [email protected]
-
-JSR-166 Extension - JEP 266
-* License: CC0
-* No copyright
-* Written by Doug Lea with assistance from members of JCP JSR-166 Expert Group
and released to the public domain, as explained at
http://creativecommons.org/publicdomain/zero/1.0/
-
-KineticJS, v4.7.1
-* License: MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Project: http://www.kineticjs.com, https://github.com/ericdrowell/KineticJS
-* Copyright: Eric Rowell
-
-org.objectweb.asm Version 8.0
-* License: Modified BSD (http://asm.objectweb.org/license.html)
-* Copyright (c) 2000-2011 INRIA, France Telecom. All rights reserved.
-
-org.osgi.core version 6.0.0
-* License: Apache License, 2.0
-* Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
-
-org.glassfish.jersey.server.internal.monitoring.core
-* License: Apache License, 2.0
-* Copyright (c) 2015-2018 Oracle and/or its affiliates. All rights reserved.
-* Copyright 2010-2013 Coda Hale and Yammer, Inc.
-
-W3.org documents
-* License: W3C License
-* Copyright: Copyright (c) 1994-2001 World Wide Web Consortium, (Massachusetts
Institute of Technology, Institut National de Recherche en Informatique et en
Automatique, Keio University). All Rights Reserved.
http://www.w3.org/Consortium/Legal/
-
-
-==============================================================
- Jetty Web Container
- Copyright 1995-2018 Mort Bay Consulting Pty Ltd.
-==============================================================
-
-The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd
-unless otherwise noted.
-
-Jetty is dual licensed under both
-
- * The Apache 2.0 License
- http://www.apache.org/licenses/LICENSE-2.0.html
-
- and
-
- * The Eclipse Public 1.0 License
- http://www.eclipse.org/legal/epl-v10.html
-
-Jetty may be distributed under either license.
-
-------
-Eclipse
-
-The following artifacts are EPL.
- * org.eclipse.jetty.orbit:org.eclipse.jdt.core
-
-The following artifacts are EPL and ASL2.
- * org.eclipse.jetty.orbit:javax.security.auth.message
-
-
-The following artifacts are EPL and CDDL 1.0.
- * org.eclipse.jetty.orbit:javax.mail.glassfish
-
-
-------
-Oracle
-
-The following artifacts are CDDL + GPLv2 with classpath exception.
-https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html
-
- * javax.servlet:javax.servlet-api
- * javax.annotation:javax.annotation-api
- * javax.transaction:javax.transaction-api
- * javax.websocket:javax.websocket-api
-
-------
-Oracle OpenJDK
-
-If ALPN is used to negotiate HTTP/2 connections, then the following
-artifacts may be included in the distribution or downloaded when ALPN
-module is selected.
-
- * java.sun.security.ssl
-
-These artifacts replace/modify OpenJDK classes. The modififications
-are hosted at github and both modified and original are under GPL v2 with
-classpath exceptions.
-http://openjdk.java.net/legal/gplv2+ce.html
-
-
-------
-OW2
-
-The following artifacts are licensed by the OW2 Foundation according to the
-terms of http://asm.ow2.org/license.html
-
-org.ow2.asm:asm-commons
-org.ow2.asm:asm
-
-
-------
-Apache
-
-The following artifacts are ASL2 licensed.
-
-org.apache.taglibs:taglibs-standard-spec
-org.apache.taglibs:taglibs-standard-impl
-
-
-------
-MortBay
-
-The following artifacts are ASL2 licensed. Based on selected classes from
-following Apache Tomcat jars, all ASL2 licensed.
-
-org.mortbay.jasper:apache-jsp
- org.apache.tomcat:tomcat-jasper
- org.apache.tomcat:tomcat-juli
- org.apache.tomcat:tomcat-jsp-api
- org.apache.tomcat:tomcat-el-api
- org.apache.tomcat:tomcat-jasper-el
- org.apache.tomcat:tomcat-api
- org.apache.tomcat:tomcat-util-scan
- org.apache.tomcat:tomcat-util
-
-org.mortbay.jasper:apache-el
- org.apache.tomcat:tomcat-jasper-el
- org.apache.tomcat:tomcat-el-api
-
-
-------
-Mortbay
-
-The following artifacts are CDDL + GPLv2 with classpath exception.
-
-https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html
-
-org.eclipse.jetty.toolchain:jetty-schemas
-
-------
-Assorted
-
-The UnixCrypt.java code implements the one way cryptography used by
-Unix systems for simple password protection. Copyright 1996 Aki Yoshida,
-modified April 2001 by Iris Van den Broeke, Daniel Deville.
-Permission to use, copy, modify and distribute UnixCrypt
-for non-commercial or commercial purposes and without fee is
-granted provided that the copyright notice appears in all copies.
-
-
-Apache log4j
-Copyright 2007 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-
-Maven Artifact
-Copyright 2001-2024 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-
-This product includes software developed by the Indiana University
- Extreme! Lab (http://www.extreme.indiana.edu/).
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-ThoughtWorks (http://www.thoughtworks.com).
-
-This product includes software developed by
-javolution (http://javolution.org/).
-
-This product includes software developed by
-Rome (https://rome.dev.java.net/).
-
-
-Scala
-Copyright (c) 2002-2020 EPFL
-Copyright (c) 2011-2020 Lightbend, Inc.
-
-Scala includes software developed at
-LAMP/EPFL (https://lamp.epfl.ch/) and
-Lightbend, Inc. (https://www.lightbend.com/).
-
-Licensed under the Apache License, Version 2.0 (the "License").
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-This software includes projects with other licenses -- see `doc/LICENSE.md`.
-
-
-Apache ZooKeeper - Server
-Copyright 2008-2021 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-
-Apache ZooKeeper - Jute
-Copyright 2008-2021 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-
-The Netty Project
- =================
-
-Please visit the Netty web site for more information:
-
- * https://netty.io/
-
-Copyright 2014 The Netty Project
-
-The Netty Project licenses this file to you under the Apache License,
-version 2.0 (the "License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at:
-
- https://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-License for the specific language governing permissions and limitations
-under the License.
-
-Also, please refer to each LICENSE.<component>.txt file, which is located in
-the 'license' directory of the distribution file, for the license terms of the
-components that this product depends on.
-
--------------------------------------------------------------------------------
-This product contains the extensions to Java Collections Framework which has
-been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:
-
- * LICENSE:
- * license/LICENSE.jsr166y.txt (Public Domain)
- * HOMEPAGE:
- * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
- *
http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/
-
-This product contains a modified version of Robert Harder's Public Domain
-Base64 Encoder and Decoder, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.base64.txt (Public Domain)
- * HOMEPAGE:
- * http://iharder.sourceforge.net/current/java/base64/
-
-This product contains a modified portion of 'Webbit', an event based
-WebSocket and HTTP server, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.webbit.txt (BSD License)
- * HOMEPAGE:
- * https://github.com/joewalnes/webbit
-
-This product contains a modified portion of 'SLF4J', a simple logging
-facade for Java, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.slf4j.txt (MIT License)
- * HOMEPAGE:
- * https://www.slf4j.org/
-
-This product contains a modified portion of 'Apache Harmony', an open source
-Java SE, which can be obtained at:
-
- * NOTICE:
- * license/NOTICE.harmony.txt
- * LICENSE:
- * license/LICENSE.harmony.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://archive.apache.org/dist/harmony/
-
-This product contains a modified portion of 'jbzip2', a Java bzip2 compression
-and decompression library written by Matthew J. Francis. It can be obtained at:
-
- * LICENSE:
- * license/LICENSE.jbzip2.txt (MIT License)
- * HOMEPAGE:
- * https://code.google.com/p/jbzip2/
-
-This product contains a modified portion of 'libdivsufsort', a C API library
to construct
-the suffix array and the Burrows-Wheeler transformed string for any input
string of
-a constant-size alphabet written by Yuta Mori. It can be obtained at:
-
- * LICENSE:
- * license/LICENSE.libdivsufsort.txt (MIT License)
- * HOMEPAGE:
- * https://github.com/y-256/libdivsufsort
-
-This product contains a modified portion of Nitsan Wakart's 'JCTools', Java
Concurrency Tools for the JVM,
- which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.jctools.txt (ASL2 License)
- * HOMEPAGE:
- * https://github.com/JCTools/JCTools
-
-This product optionally depends on 'JZlib', a re-implementation of zlib in
-pure Java, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.jzlib.txt (BSD style License)
- * HOMEPAGE:
- * http://www.jcraft.com/jzlib/
-
-This product optionally depends on 'Compress-LZF', a Java library for encoding
and
-decoding data in LZF format, written by Tatu Saloranta. It can be obtained at:
-
- * LICENSE:
- * license/LICENSE.compress-lzf.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://github.com/ning/compress
-
-This product optionally depends on 'lz4', a LZ4 Java compression
-and decompression library written by Adrien Grand. It can be obtained at:
-
- * LICENSE:
- * license/LICENSE.lz4.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://github.com/jpountz/lz4-java
-
-This product optionally depends on 'lzma-java', a LZMA Java compression
-and decompression library, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.lzma-java.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://github.com/jponge/lzma-java
-
-This product contains a modified portion of 'jfastlz', a Java port of FastLZ
compression
-and decompression library written by William Kinney. It can be obtained at:
-
- * LICENSE:
- * license/LICENSE.jfastlz.txt (MIT License)
- * HOMEPAGE:
- * https://code.google.com/p/jfastlz/
-
-This product contains a modified portion of and optionally depends on
'Protocol Buffers', Google's data
-interchange format, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.protobuf.txt (New BSD License)
- * HOMEPAGE:
- * https://github.com/google/protobuf
-
-This product optionally depends on 'Bouncy Castle Crypto APIs' to generate
-a temporary self-signed X.509 certificate when the JVM does not provide the
-equivalent functionality. It can be obtained at:
-
- * LICENSE:
- * license/LICENSE.bouncycastle.txt (MIT License)
- * HOMEPAGE:
- * https://www.bouncycastle.org/
-
-This product optionally depends on 'Snappy', a compression library produced
-by Google Inc, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.snappy.txt (New BSD License)
- * HOMEPAGE:
- * https://github.com/google/snappy
-
-This product optionally depends on 'JBoss Marshalling', an alternative Java
-serialization API, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.jboss-marshalling.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://github.com/jboss-remoting/jboss-marshalling
-
-This product optionally depends on 'Caliper', Google's micro-
-benchmarking framework, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.caliper.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://github.com/google/caliper
-
-This product optionally depends on 'Apache Commons Logging', a logging
-framework, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.commons-logging.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://commons.apache.org/logging/
-
-This product optionally depends on 'Apache Log4J', a logging framework, which
-can be obtained at:
-
- * LICENSE:
- * license/LICENSE.log4j.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://logging.apache.org/log4j/
-
-This product optionally depends on 'Aalto XML', an ultra-high performance
-non-blocking XML processor, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.aalto-xml.txt (Apache License 2.0)
- * HOMEPAGE:
- * http://wiki.fasterxml.com/AaltoHome
-
-This product contains a modified version of 'HPACK', a Java implementation of
-the HTTP/2 HPACK algorithm written by Twitter. It can be obtained at:
-
- * LICENSE:
- * license/LICENSE.hpack.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://github.com/twitter/hpack
-
-This product contains a modified version of 'HPACK', a Java implementation of
-the HTTP/2 HPACK algorithm written by Cory Benfield. It can be obtained at:
-
- * LICENSE:
- * license/LICENSE.hyper-hpack.txt (MIT License)
- * HOMEPAGE:
- * https://github.com/python-hyper/hpack/
-
-This product contains a modified version of 'HPACK', a Java implementation of
-the HTTP/2 HPACK algorithm written by Tatsuhiro Tsujikawa. It can be obtained
at:
-
- * LICENSE:
- * license/LICENSE.nghttp2-hpack.txt (MIT License)
- * HOMEPAGE:
- * https://github.com/nghttp2/nghttp2/
-
-This product contains a modified portion of 'Apache Commons Lang', a Java
library
-provides utilities for the java.lang API, which can be obtained at:
-
- * LICENSE:
- * license/LICENSE.commons-lang.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://commons.apache.org/proper/commons-lang/
-
-
-This product contains the Maven wrapper scripts from 'Maven Wrapper', that
provides an easy way to ensure a user has everything necessary to run the Maven
build.
-
- * LICENSE:
- * license/LICENSE.mvn-wrapper.txt (Apache License 2.0)
- * HOMEPAGE:
- * https://github.com/takari/maven-wrapper
-
-This product contains the dnsinfo.h header file, that provides a way to
retrieve the system DNS configuration on MacOS.
-This private header is also used by Apple's open source
- mDNSResponder (https://opensource.apple.com/tarballs/mDNSResponder/).
-
- * LICENSE:
- * license/LICENSE.dnsinfo.txt (Apple Public Source License 2.0)
- * HOMEPAGE:
- *
https://www.opensource.apple.com/source/configd/configd-453.19/dnsinfo/dnsinfo.h
\ No newline at end of file
diff --git a/solr/licenses/lz4-java-1.10.1.jar.sha1
b/solr/licenses/lz4-java-1.10.1.jar.sha1
deleted file mode 100644
index d15f142e6e5..00000000000
--- a/solr/licenses/lz4-java-1.10.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-f541d7f910fe3d76f38f799c507c48cc81b12ecb
diff --git a/solr/licenses/lz4-java-1.10.2.jar.sha1
b/solr/licenses/lz4-java-1.10.2.jar.sha1
new file mode 100644
index 00000000000..949284e72d3
--- /dev/null
+++ b/solr/licenses/lz4-java-1.10.2.jar.sha1
@@ -0,0 +1 @@
+1df182cf1b030e347c81ca8768c24dab414a04d8
diff --git a/solr/licenses/metrics-core-2.2.0.jar.sha1
b/solr/licenses/metrics-core-2.2.0.jar.sha1
deleted file mode 100644
index 1a5081cab8e..00000000000
--- a/solr/licenses/metrics-core-2.2.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-f82c035cfa786d3cbec362c38c22a5f5b1bc8724
diff --git a/solr/licenses/paranamer-2.8.3.jar.sha1
b/solr/licenses/paranamer-2.8.3.jar.sha1
deleted file mode 100644
index a004717c78a..00000000000
--- a/solr/licenses/paranamer-2.8.3.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-75ae4eb129574b7fc0df5fa8808d7ed625be815d
diff --git a/solr/licenses/pcollections-4.0.1.jar.sha1
b/solr/licenses/pcollections-4.0.1.jar.sha1
deleted file mode 100644
index c7ecd798eff..00000000000
--- a/solr/licenses/pcollections-4.0.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-059f3bf5fb28c5f5386804dcf129267416b75d7c
diff --git a/solr/licenses/rocksdbjni-7.9.2.jar.sha1
b/solr/licenses/rocksdbjni-7.9.2.jar.sha1
deleted file mode 100644
index 2d84500a7cb..00000000000
--- a/solr/licenses/rocksdbjni-7.9.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-6409b667493149191b09fe1fce94bada6096a3e9
diff --git a/solr/licenses/scala-collection-compat_2.13-2.10.0.jar.sha1
b/solr/licenses/scala-collection-compat_2.13-2.10.0.jar.sha1
deleted file mode 100644
index 59631aef4a3..00000000000
--- a/solr/licenses/scala-collection-compat_2.13-2.10.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-2464528d14329ff2b44bceff918d6c00300adcf4
diff --git a/solr/licenses/scala-java8-compat_2.13-1.0.2.jar.sha1
b/solr/licenses/scala-java8-compat_2.13-1.0.2.jar.sha1
deleted file mode 100644
index d8d441889cf..00000000000
--- a/solr/licenses/scala-java8-compat_2.13-1.0.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5b54f60ccf03e41e24c466462a72475ee918c304
diff --git a/solr/licenses/scala-library-2.13.18.jar.sha1
b/solr/licenses/scala-library-2.13.18.jar.sha1
deleted file mode 100644
index 41da4274c9e..00000000000
--- a/solr/licenses/scala-library-2.13.18.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-eb2086988c25b08705472cc750654570900362e5
diff --git a/solr/licenses/scala-logging_2.13-3.9.5.jar.sha1
b/solr/licenses/scala-logging_2.13-3.9.5.jar.sha1
deleted file mode 100644
index a1fb8640c96..00000000000
--- a/solr/licenses/scala-logging_2.13-3.9.5.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-d5a0f61168371d8cff1c510f55407aa46bea8366
diff --git a/solr/licenses/scala-reflect-2.13.15.jar.sha1
b/solr/licenses/scala-reflect-2.13.15.jar.sha1
deleted file mode 100644
index 5f8edfcb106..00000000000
--- a/solr/licenses/scala-reflect-2.13.15.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-355927b10366563a8f1b56c1f34ff376f2f7c8c5
diff --git a/solr/licenses/testcontainers-kafka-2.0.5.jar.sha1
b/solr/licenses/testcontainers-kafka-2.0.5.jar.sha1
new file mode 100644
index 00000000000..a6a44335731
--- /dev/null
+++ b/solr/licenses/testcontainers-kafka-2.0.5.jar.sha1
@@ -0,0 +1 @@
+e37b7217b5024145be864f1088b10b32f8c2fef7
diff --git a/solr/licenses/zstd-jni-1.5.6-10.jar.sha1
b/solr/licenses/zstd-jni-1.5.6-10.jar.sha1
new file mode 100644
index 00000000000..20413e1a983
--- /dev/null
+++ b/solr/licenses/zstd-jni-1.5.6-10.jar.sha1
@@ -0,0 +1 @@
+7e146ecb598af55d1f64d1c118af27569a848558
diff --git a/solr/licenses/zstd-jni-1.5.6-4.jar.sha1
b/solr/licenses/zstd-jni-1.5.6-4.jar.sha1
deleted file mode 100644
index 5e1398a1efa..00000000000
--- a/solr/licenses/zstd-jni-1.5.6-4.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ba9e303e0b5e94cdd0017390d7d8c06f47fd61f7
diff --git a/solr/modules/cross-dc/gradle.lockfile
b/solr/modules/cross-dc/gradle.lockfile
index 833e59e730b..b0d0f9f95fd 100644
--- a/solr/modules/cross-dc/gradle.lockfile
+++ b/solr/modules/cross-dc/gradle.lockfile
@@ -2,7 +2,7 @@
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
# To regenerate this file, run: ./gradlew :solr:modules:cross-dc:dependencies
--write-locks
-at.yawk.lz4:lz4-java:1.10.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
+at.yawk.lz4:lz4-java:1.10.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
com.carrotsearch.randomizedtesting:randomizedtesting-runner:2.9.1=jarValidation,testCompileClasspath,testRuntimeClasspath
com.carrotsearch:hppc:0.10.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.22=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
@@ -15,7 +15,7 @@
com.fasterxml.jackson:jackson-bom:2.22.0=compileClasspath,jarValidation,runtimeC
com.fasterxml.woodstox:woodstox-core:7.2.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.github.ben-manes.caffeine:caffeine:3.2.4=annotationProcessor,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testRuntimeClasspath
com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone,testAnnotationProcessor
-com.github.luben:zstd-jni:1.5.6-4=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
+com.github.luben:zstd-jni:1.5.6-10=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor
com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor
com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor
@@ -89,7 +89,7 @@
org.apache.commons:commons-math3:3.6.1=jarValidation,runtimeClasspath,runtimeLib
org.apache.curator:curator-client:5.9.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apache.curator:curator-framework:5.9.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apache.curator:curator-test:5.9.0=jarValidation,testRuntimeClasspath
-org.apache.kafka:kafka-clients:3.9.2=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
+org.apache.kafka:kafka-clients:4.3.1=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
org.apache.logging.log4j:log4j-1.2-api:2.26.0=solrPlatformLibs
org.apache.logging.log4j:log4j-api:2.26.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.apache.logging.log4j:log4j-core:2.26.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git
a/solr/solr-ref-guide/modules/deployment-guide/pages/cross-dc-replication.adoc
b/solr/solr-ref-guide/modules/deployment-guide/pages/cross-dc-replication.adoc
index 07e1b52ecc1..4a00d24fde7 100644
---
a/solr/solr-ref-guide/modules/deployment-guide/pages/cross-dc-replication.adoc
+++
b/solr/solr-ref-guide/modules/deployment-guide/pages/cross-dc-replication.adoc
@@ -35,6 +35,10 @@ Apache Kafka:: A distributed queue system that links the
Module and Manager.
Implementing the Solr CrossDC involves the following steps:
. **Apache Kafka Cluster**: Ensure the availability of an Apache Kafka
cluster. This acts as the distributed queue interconnecting data centers.
++
+The CrossDC Solr Module and CrossDC Manager bundle Kafka client library
version 4.3.1.
+Kafka 4.x clients are fully compatible with Kafka 3.x brokers, but only
partially compatible with brokers in the 2.1-2.8 range, and are not compatible
with brokers older than 2.1.
+A Kafka 3.x or newer broker cluster is recommended.
. **CrossDC Solr Module**: Install this
xref:configuration-guide:solr-modules.adoc[Solr Module] on each node in your
Solr cluster (in both primary and backup data centers).
* Configure
xref:configuration-guide:configuring-solrconfig-xml.adoc[solrconfig.xml] to
reference the new `MirroringUpdateProcessor` and set it up with the Kafka
cluster.
* Optionally configure the `solr.xml` to use `MirroringCollectionsHandler`
and `MirroringConfigSetsHandler` if necessary.