From 10857ddcd134528659667922b601035c5f064c86 Mon Sep 17 00:00:00 2001 From: SolrBot Date: Tue, 30 Jun 2026 07:33:19 +0000 Subject: [PATCH 01/15] Update apache.kafka to v4 --- gradle/libs.versions.toml | 2 +- solr/cross-dc-manager/gradle.lockfile | 50 ++++++++++--------- solr/licenses/hash4j-0.22.0.jar.sha1 | 1 + .../jackson-dataformat-yaml-2.22.0.jar.sha1 | 1 + .../jackson-module-scala_2.13-2.22.0.jar.sha1 | 1 - .../kafka-clients-3.9.2-test.jar.sha1 | 1 - solr/licenses/kafka-clients-3.9.2.jar.sha1 | 1 - .../kafka-clients-4.3.1-test.jar.sha1 | 1 + solr/licenses/kafka-clients-4.3.1.jar.sha1 | 1 + .../kafka-coordinator-common-4.3.1.jar.sha1 | 1 + .../kafka-group-coordinator-3.9.2.jar.sha1 | 1 - .../kafka-group-coordinator-4.3.1.jar.sha1 | 1 + ...kafka-group-coordinator-api-3.9.2.jar.sha1 | 1 - ...kafka-group-coordinator-api-4.3.1.jar.sha1 | 1 + solr/licenses/kafka-metadata-3.9.2.jar.sha1 | 1 - solr/licenses/kafka-metadata-4.3.1.jar.sha1 | 1 + solr/licenses/kafka-raft-3.9.2.jar.sha1 | 1 - solr/licenses/kafka-raft-4.3.1.jar.sha1 | 1 + solr/licenses/kafka-server-3.9.2.jar.sha1 | 1 - solr/licenses/kafka-server-4.3.1.jar.sha1 | 1 + .../kafka-server-common-3.9.2-test.jar.sha1 | 1 - .../kafka-server-common-3.9.2.jar.sha1 | 1 - .../kafka-server-common-4.3.1-test.jar.sha1 | 1 + .../kafka-server-common-4.3.1.jar.sha1 | 1 + .../kafka-share-coordinator-4.3.1.jar.sha1 | 1 + solr/licenses/kafka-storage-3.9.2.jar.sha1 | 1 - solr/licenses/kafka-storage-4.3.1.jar.sha1 | 1 + .../licenses/kafka-storage-api-3.9.2.jar.sha1 | 1 - .../licenses/kafka-storage-api-4.3.1.jar.sha1 | 1 + .../kafka-streams-3.9.2-test.jar.sha1 | 1 - solr/licenses/kafka-streams-3.9.2.jar.sha1 | 1 - .../kafka-streams-4.3.1-test.jar.sha1 | 1 + solr/licenses/kafka-streams-4.3.1.jar.sha1 | 1 + solr/licenses/kafka-tools-api-3.9.2.jar.sha1 | 1 - solr/licenses/kafka-tools-api-4.3.1.jar.sha1 | 1 + ...fka-transaction-coordinator-3.9.2.jar.sha1 | 1 - ...fka-transaction-coordinator-4.3.1.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-4.3.1-test.jar.sha1 | 1 + solr/licenses/kafka_2.13-4.3.1.jar.sha1 | 1 + solr/licenses/lz4-java-1.10.1.jar.sha1 | 1 - solr/licenses/lz4-java-1.10.2.jar.sha1 | 1 + solr/licenses/paranamer-2.8.3.jar.sha1 | 1 - solr/licenses/pcollections-4.0.1.jar.sha1 | 1 - solr/licenses/pcollections-4.0.2.jar.sha1 | 1 + solr/licenses/rocksdbjni-10.1.3.jar.sha1 | 1 + solr/licenses/rocksdbjni-7.9.2.jar.sha1 | 1 - ...ala-collection-compat_2.13-2.10.0.jar.sha1 | 1 - .../scala-java8-compat_2.13-1.0.2.jar.sha1 | 1 - .../scala-logging_2.13-3.9.5.jar.sha1 | 1 - .../scala-logging_2.13-3.9.6.jar.sha1 | 1 + solr/licenses/scala-reflect-2.13.15.jar.sha1 | 1 - solr/licenses/scala-reflect-2.13.18.jar.sha1 | 1 + solr/licenses/snakeyaml-2.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 +-- 58 files changed, 59 insertions(+), 54 deletions(-) create mode 100644 solr/licenses/hash4j-0.22.0.jar.sha1 create mode 100644 solr/licenses/jackson-dataformat-yaml-2.22.0.jar.sha1 delete mode 100644 solr/licenses/jackson-module-scala_2.13-2.22.0.jar.sha1 delete mode 100644 solr/licenses/kafka-clients-3.9.2-test.jar.sha1 delete mode 100644 solr/licenses/kafka-clients-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-clients-4.3.1-test.jar.sha1 create mode 100644 solr/licenses/kafka-clients-4.3.1.jar.sha1 create mode 100644 solr/licenses/kafka-coordinator-common-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-group-coordinator-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-group-coordinator-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-group-coordinator-api-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-group-coordinator-api-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-metadata-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-metadata-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-raft-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-raft-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-server-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-server-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-server-common-3.9.2-test.jar.sha1 delete mode 100644 solr/licenses/kafka-server-common-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-server-common-4.3.1-test.jar.sha1 create mode 100644 solr/licenses/kafka-server-common-4.3.1.jar.sha1 create mode 100644 solr/licenses/kafka-share-coordinator-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-storage-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-storage-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-storage-api-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-storage-api-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-streams-3.9.2-test.jar.sha1 delete mode 100644 solr/licenses/kafka-streams-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-streams-4.3.1-test.jar.sha1 create mode 100644 solr/licenses/kafka-streams-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-tools-api-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-tools-api-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-transaction-coordinator-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka-transaction-coordinator-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka_2.13-3.9.2-test.jar.sha1 delete mode 100644 solr/licenses/kafka_2.13-3.9.2.jar.sha1 create mode 100644 solr/licenses/kafka_2.13-4.3.1-test.jar.sha1 create mode 100644 solr/licenses/kafka_2.13-4.3.1.jar.sha1 delete mode 100644 solr/licenses/lz4-java-1.10.1.jar.sha1 create mode 100644 solr/licenses/lz4-java-1.10.2.jar.sha1 delete mode 100644 solr/licenses/paranamer-2.8.3.jar.sha1 delete mode 100644 solr/licenses/pcollections-4.0.1.jar.sha1 create mode 100644 solr/licenses/pcollections-4.0.2.jar.sha1 create mode 100644 solr/licenses/rocksdbjni-10.1.3.jar.sha1 delete mode 100644 solr/licenses/rocksdbjni-7.9.2.jar.sha1 delete mode 100644 solr/licenses/scala-collection-compat_2.13-2.10.0.jar.sha1 delete mode 100644 solr/licenses/scala-java8-compat_2.13-1.0.2.jar.sha1 delete mode 100644 solr/licenses/scala-logging_2.13-3.9.5.jar.sha1 create mode 100644 solr/licenses/scala-logging_2.13-3.9.6.jar.sha1 delete mode 100644 solr/licenses/scala-reflect-2.13.15.jar.sha1 create mode 100644 solr/licenses/scala-reflect-2.13.18.jar.sha1 create mode 100644 solr/licenses/snakeyaml-2.5.jar.sha1 create mode 100644 solr/licenses/zstd-jni-1.5.6-10.jar.sha1 delete mode 100644 solr/licenses/zstd-jni-1.5.6-4.jar.sha1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0494670cf530..3f939350f919 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" diff --git a/solr/cross-dc-manager/gradle.lockfile b/solr/cross-dc-manager/gradle.lockfile index 332646c77147..cd7e20add56c 100644 --- a/solr/cross-dc-manager/gradle.lockfile +++ b/solr/cross-dc-manager/gradle.lockfile @@ -2,23 +2,24 @@ # 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.8.4=jarValidation,testCompileClasspath,testRuntimeClasspath com.carrotsearch:hppc:0.10.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +com.dynatrace.hash4j:hash4j:0.22.0=jarValidation,runtimeClasspath,runtimeLibs,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.dataformat:jackson-dataformat-yaml:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,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.3=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,solrPlatformLibs,testRuntimeClasspath +com.github.luben:zstd-jni:1.5.6-10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath com.google.android:annotations:4.1.1.4=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.google.api.grpc:proto-google-common-protos:2.64.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor @@ -36,6 +37,7 @@ com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=anno com.google.j2objc:j2objc-annotations:3.1=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.protobuf:protobuf-java-util:4.35.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.google.protobuf:protobuf-java:4.35.1=annotationProcessor,errorprone,jarValidation,runtimeClasspath,runtimeLibs,testAnnotationProcessor,testRuntimeClasspath +com.google.re2j:re2j:1.8=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.j256.simplemagic:simplemagic:1.17=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath com.jayway.jsonpath:json-path:3.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath com.lmax:disruptor:4.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath @@ -44,8 +46,7 @@ com.squareup.okhttp3:okhttp:5.4.0=jarValidation,runtimeClasspath,runtimeLibs,tes com.squareup.okio:okio-jvm:3.17.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.squareup.okio:okio:3.17.0=jarValidation,runtimeClasspath,runtimeLibs,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.typesafe.scala-logging:scala-logging_2.13:3.9.6=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 @@ -129,19 +130,21 @@ 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,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.kafka:kafka-coordinator-common:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-group-coordinator-api:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-group-coordinator:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-metadata:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-raft:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-server-common:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-server:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-share-coordinator:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-storage-api:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-storage:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-streams:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath +org.apache.kafka:kafka-tools-api:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-transaction-coordinator:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka_2.13:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,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 @@ -213,6 +216,7 @@ org.glassfish.jersey.inject:jersey-hk2:4.0.2=jarValidation,runtimeClasspath,runt org.glassfish.jersey.media:jersey-media-json-jackson:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.glassfish.jersey:jersey-bom:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.hamcrest:hamcrest:3.0=jarValidation,testCompileClasspath,testRuntimeClasspath +org.hdrhistogram:HdrHistogram:2.2.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath org.javassist:javassist:3.30.2-GA=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib:2.2.21=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath org.jetbrains:annotations:26.0.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath @@ -227,15 +231,15 @@ 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.pcollections:pcollections:4.0.1=annotationProcessor,errorprone,testAnnotationProcessor +org.pcollections:pcollections:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.rocksdb:rocksdbjni:10.1.3=jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,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.scala-lang:scala-reflect:2.13.18=jarValidation,runtimeClasspath,runtimeLibs,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.xerial.snappy:snappy-java:1.1.10.8=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath +org.yaml:snakeyaml:2.5=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath empty=missingdoclet,packaging diff --git a/solr/licenses/hash4j-0.22.0.jar.sha1 b/solr/licenses/hash4j-0.22.0.jar.sha1 new file mode 100644 index 000000000000..80998cd1e482 --- /dev/null +++ b/solr/licenses/hash4j-0.22.0.jar.sha1 @@ -0,0 +1 @@ +2d61bfb5b38469cb76141b06dc68d36a9007e9ad diff --git a/solr/licenses/jackson-dataformat-yaml-2.22.0.jar.sha1 b/solr/licenses/jackson-dataformat-yaml-2.22.0.jar.sha1 new file mode 100644 index 000000000000..38f8a6e89319 --- /dev/null +++ b/solr/licenses/jackson-dataformat-yaml-2.22.0.jar.sha1 @@ -0,0 +1 @@ +e3d91ae7c7f0b317889f97203678c8912cd2b12b 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 06254cea8508..000000000000 --- 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 d63004758a17..000000000000 --- 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 5825a6db3923..000000000000 --- 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-test.jar.sha1 b/solr/licenses/kafka-clients-4.3.1-test.jar.sha1 new file mode 100644 index 000000000000..5c7487e0a73b --- /dev/null +++ b/solr/licenses/kafka-clients-4.3.1-test.jar.sha1 @@ -0,0 +1 @@ +fcf9f8eb43a774ddc297df49672fcecad1cdcf0a 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 000000000000..8fbeb30c1539 --- /dev/null +++ b/solr/licenses/kafka-clients-4.3.1.jar.sha1 @@ -0,0 +1 @@ +74209a28d36f819b2f7a9b599e468b5654cad514 diff --git a/solr/licenses/kafka-coordinator-common-4.3.1.jar.sha1 b/solr/licenses/kafka-coordinator-common-4.3.1.jar.sha1 new file mode 100644 index 000000000000..35c957ede374 --- /dev/null +++ b/solr/licenses/kafka-coordinator-common-4.3.1.jar.sha1 @@ -0,0 +1 @@ +27e9901c4b4933b9a744580a9a8a91065e431cd5 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 1141ce9a3c18..000000000000 --- 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-4.3.1.jar.sha1 b/solr/licenses/kafka-group-coordinator-4.3.1.jar.sha1 new file mode 100644 index 000000000000..a4214ba6b64f --- /dev/null +++ b/solr/licenses/kafka-group-coordinator-4.3.1.jar.sha1 @@ -0,0 +1 @@ +1ad370687f639f836c5a768b77a7ea356f1e8b09 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 13b0b7f78db0..000000000000 --- a/solr/licenses/kafka-group-coordinator-api-3.9.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -7a69f2be4047f3f55554c403fe78680d54a26480 diff --git a/solr/licenses/kafka-group-coordinator-api-4.3.1.jar.sha1 b/solr/licenses/kafka-group-coordinator-api-4.3.1.jar.sha1 new file mode 100644 index 000000000000..653ef94857b3 --- /dev/null +++ b/solr/licenses/kafka-group-coordinator-api-4.3.1.jar.sha1 @@ -0,0 +1 @@ +2317ae31b1180bb2978887898a50c001e48ace1a 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 fe49498df2fb..000000000000 --- a/solr/licenses/kafka-metadata-3.9.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -01a266d85e89f1216e1325955942c3037da21d3b diff --git a/solr/licenses/kafka-metadata-4.3.1.jar.sha1 b/solr/licenses/kafka-metadata-4.3.1.jar.sha1 new file mode 100644 index 000000000000..163471667734 --- /dev/null +++ b/solr/licenses/kafka-metadata-4.3.1.jar.sha1 @@ -0,0 +1 @@ +fec51f3ee5706c5a5224746afdedc9c6e7873799 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 c30402567805..000000000000 --- a/solr/licenses/kafka-raft-3.9.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -5b72980224762aef91766a8fb047a03640905700 diff --git a/solr/licenses/kafka-raft-4.3.1.jar.sha1 b/solr/licenses/kafka-raft-4.3.1.jar.sha1 new file mode 100644 index 000000000000..083c942fe8da --- /dev/null +++ b/solr/licenses/kafka-raft-4.3.1.jar.sha1 @@ -0,0 +1 @@ +be8dae1a27171b423948f66f044d4df76165ec72 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 4fe94c9114b6..000000000000 --- a/solr/licenses/kafka-server-3.9.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e3d11d66ce497bfc3572d9e095280b4a893d16fa diff --git a/solr/licenses/kafka-server-4.3.1.jar.sha1 b/solr/licenses/kafka-server-4.3.1.jar.sha1 new file mode 100644 index 000000000000..e650a65a43b0 --- /dev/null +++ b/solr/licenses/kafka-server-4.3.1.jar.sha1 @@ -0,0 +1 @@ +444d58c3cd90af4811582cd8d2286e2d2091fb27 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 c142a96f2992..000000000000 --- 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 8e9b718fffc3..000000000000 --- a/solr/licenses/kafka-server-common-3.9.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e6fe2cdafd5b2a0b07db07cf692863e0b9335625 diff --git a/solr/licenses/kafka-server-common-4.3.1-test.jar.sha1 b/solr/licenses/kafka-server-common-4.3.1-test.jar.sha1 new file mode 100644 index 000000000000..4ac8c396579b --- /dev/null +++ b/solr/licenses/kafka-server-common-4.3.1-test.jar.sha1 @@ -0,0 +1 @@ +49781d7241f34746025ac1c35991ee48bdb305ad diff --git a/solr/licenses/kafka-server-common-4.3.1.jar.sha1 b/solr/licenses/kafka-server-common-4.3.1.jar.sha1 new file mode 100644 index 000000000000..003f0ee4318a --- /dev/null +++ b/solr/licenses/kafka-server-common-4.3.1.jar.sha1 @@ -0,0 +1 @@ +81652cb85ce0f47a04835b628720e1396244987f diff --git a/solr/licenses/kafka-share-coordinator-4.3.1.jar.sha1 b/solr/licenses/kafka-share-coordinator-4.3.1.jar.sha1 new file mode 100644 index 000000000000..fb91663eccb0 --- /dev/null +++ b/solr/licenses/kafka-share-coordinator-4.3.1.jar.sha1 @@ -0,0 +1 @@ +3d7ffdc85eb09f4a3c08a1fdd07dfd866f020e95 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 2d38f15baaaa..000000000000 --- a/solr/licenses/kafka-storage-3.9.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -a8a997893c4cb8cc3093c71720b3c33f1e03cade diff --git a/solr/licenses/kafka-storage-4.3.1.jar.sha1 b/solr/licenses/kafka-storage-4.3.1.jar.sha1 new file mode 100644 index 000000000000..3ab8f007db9d --- /dev/null +++ b/solr/licenses/kafka-storage-4.3.1.jar.sha1 @@ -0,0 +1 @@ +85adcbdb5f4037967fe671369bc4eb614af3befa 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 39ea1716578c..000000000000 --- a/solr/licenses/kafka-storage-api-3.9.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -8fa32fee158c900bd2d3d87d09d5838bd5a8813f diff --git a/solr/licenses/kafka-storage-api-4.3.1.jar.sha1 b/solr/licenses/kafka-storage-api-4.3.1.jar.sha1 new file mode 100644 index 000000000000..4f5c79859ec9 --- /dev/null +++ b/solr/licenses/kafka-storage-api-4.3.1.jar.sha1 @@ -0,0 +1 @@ +6c096951eddf2cedcf9065e911118c87feda8288 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 d0dd0217f906..000000000000 --- 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 2beffe31980d..000000000000 --- a/solr/licenses/kafka-streams-3.9.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -3253bfc2c12441a54be3c2c77ce5b1d2dec7be72 diff --git a/solr/licenses/kafka-streams-4.3.1-test.jar.sha1 b/solr/licenses/kafka-streams-4.3.1-test.jar.sha1 new file mode 100644 index 000000000000..ccb370654e42 --- /dev/null +++ b/solr/licenses/kafka-streams-4.3.1-test.jar.sha1 @@ -0,0 +1 @@ +9807dfde5d317141b52f4ea9a3f5aba185b25c79 diff --git a/solr/licenses/kafka-streams-4.3.1.jar.sha1 b/solr/licenses/kafka-streams-4.3.1.jar.sha1 new file mode 100644 index 000000000000..2a264a736426 --- /dev/null +++ b/solr/licenses/kafka-streams-4.3.1.jar.sha1 @@ -0,0 +1 @@ +76cef4ff46a4355bac231cba87ef74a79a27aaf2 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 8aa9ceabe944..000000000000 --- a/solr/licenses/kafka-tools-api-3.9.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d1b40695ba813f5647fe5bcd5960628cd1ef9a77 diff --git a/solr/licenses/kafka-tools-api-4.3.1.jar.sha1 b/solr/licenses/kafka-tools-api-4.3.1.jar.sha1 new file mode 100644 index 000000000000..fbd7a859a1fa --- /dev/null +++ b/solr/licenses/kafka-tools-api-4.3.1.jar.sha1 @@ -0,0 +1 @@ +0ec3d126cbc01478c603e788b388c0dd2fcfade8 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 02b3cf0fc79d..000000000000 --- a/solr/licenses/kafka-transaction-coordinator-3.9.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -b001c1f9e45521be560d9a2a9e6d337a1b3a82c9 diff --git a/solr/licenses/kafka-transaction-coordinator-4.3.1.jar.sha1 b/solr/licenses/kafka-transaction-coordinator-4.3.1.jar.sha1 new file mode 100644 index 000000000000..c6bd4c2b6cbf --- /dev/null +++ b/solr/licenses/kafka-transaction-coordinator-4.3.1.jar.sha1 @@ -0,0 +1 @@ +67e9cdc4ddd54ff5c9311fa7fdc155f44dc7f42a 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 61558f444d80..000000000000 --- 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 4386ee2ced19..000000000000 --- 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-4.3.1-test.jar.sha1 b/solr/licenses/kafka_2.13-4.3.1-test.jar.sha1 new file mode 100644 index 000000000000..e448467337c5 --- /dev/null +++ b/solr/licenses/kafka_2.13-4.3.1-test.jar.sha1 @@ -0,0 +1 @@ +449e8d7e450ee6caa3cd7c16cf2cd17b0cc3d678 diff --git a/solr/licenses/kafka_2.13-4.3.1.jar.sha1 b/solr/licenses/kafka_2.13-4.3.1.jar.sha1 new file mode 100644 index 000000000000..d27fc2a93e4a --- /dev/null +++ b/solr/licenses/kafka_2.13-4.3.1.jar.sha1 @@ -0,0 +1 @@ +cf616ec4e3898629625252d8f22fa1eb76dee30d 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 d15f142e6e54..000000000000 --- 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 000000000000..949284e72d33 --- /dev/null +++ b/solr/licenses/lz4-java-1.10.2.jar.sha1 @@ -0,0 +1 @@ +1df182cf1b030e347c81ca8768c24dab414a04d8 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 a004717c78a1..000000000000 --- 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 c7ecd798eff5..000000000000 --- a/solr/licenses/pcollections-4.0.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -059f3bf5fb28c5f5386804dcf129267416b75d7c diff --git a/solr/licenses/pcollections-4.0.2.jar.sha1 b/solr/licenses/pcollections-4.0.2.jar.sha1 new file mode 100644 index 000000000000..70291d3cd6b4 --- /dev/null +++ b/solr/licenses/pcollections-4.0.2.jar.sha1 @@ -0,0 +1 @@ +c8398b4443deae11e6eaffbc04a371b4eb8f6b8e diff --git a/solr/licenses/rocksdbjni-10.1.3.jar.sha1 b/solr/licenses/rocksdbjni-10.1.3.jar.sha1 new file mode 100644 index 000000000000..ec3540efa944 --- /dev/null +++ b/solr/licenses/rocksdbjni-10.1.3.jar.sha1 @@ -0,0 +1 @@ +46a1e0a0f175508717976971fc6a9e189f5dc0b1 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 2d84500a7cba..000000000000 --- 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 59631aef4a3e..000000000000 --- 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 d8d441889cf5..000000000000 --- 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-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 a1fb8640c96e..000000000000 --- a/solr/licenses/scala-logging_2.13-3.9.5.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d5a0f61168371d8cff1c510f55407aa46bea8366 diff --git a/solr/licenses/scala-logging_2.13-3.9.6.jar.sha1 b/solr/licenses/scala-logging_2.13-3.9.6.jar.sha1 new file mode 100644 index 000000000000..8a8115ffdc9a --- /dev/null +++ b/solr/licenses/scala-logging_2.13-3.9.6.jar.sha1 @@ -0,0 +1 @@ +f887ff84d87e3e9c89e28f8a4064bf74d1eacbb4 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 5f8edfcb1066..000000000000 --- a/solr/licenses/scala-reflect-2.13.15.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -355927b10366563a8f1b56c1f34ff376f2f7c8c5 diff --git a/solr/licenses/scala-reflect-2.13.18.jar.sha1 b/solr/licenses/scala-reflect-2.13.18.jar.sha1 new file mode 100644 index 000000000000..36a77a1bfe0a --- /dev/null +++ b/solr/licenses/scala-reflect-2.13.18.jar.sha1 @@ -0,0 +1 @@ +674f3bd39f5c528d575da69c42a5dff772b9b75c diff --git a/solr/licenses/snakeyaml-2.5.jar.sha1 b/solr/licenses/snakeyaml-2.5.jar.sha1 new file mode 100644 index 000000000000..606eb00f8c3a --- /dev/null +++ b/solr/licenses/snakeyaml-2.5.jar.sha1 @@ -0,0 +1 @@ +2d53ddec134280cb384c1e35d094e5f71c1f2316 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 000000000000..20413e1a983f --- /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 5e1398a1efa8..000000000000 --- 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 a061223677fa..b228aa49ed10 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.8.4=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.3=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 @@ -86,7 +86,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 From 36c50409a439525464ea631a0c530d5f6a26a179 Mon Sep 17 00:00:00 2001 From: SolrBot Date: Tue, 30 Jun 2026 07:33:59 +0000 Subject: [PATCH 02/15] Add changelog entry for PR#3274 --- changelog/unreleased/PR#3274-update-apache-kafka.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 changelog/unreleased/PR#3274-update-apache-kafka.yml diff --git a/changelog/unreleased/PR#3274-update-apache-kafka.yml b/changelog/unreleased/PR#3274-update-apache-kafka.yml new file mode 100644 index 000000000000..93bfc16d1f96 --- /dev/null +++ b/changelog/unreleased/PR#3274-update-apache-kafka.yml @@ -0,0 +1,7 @@ +title: Update apache.kafka to v4 +type: dependency_update +authors: +- name: solrbot +links: +- name: PR#3274 + url: https://github.com/apache/solr/pull/3274 From 1323530cb7ab8aac10b9377cae4499dde3394001 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Wed, 1 Jul 2026 02:50:41 +0530 Subject: [PATCH 03/15] fix compilation --- changelog/unreleased/PR#3274-update-apache-kafka.yml | 1 + .../java/org/apache/solr/crossdc/manager/consumer/Util.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/changelog/unreleased/PR#3274-update-apache-kafka.yml b/changelog/unreleased/PR#3274-update-apache-kafka.yml index 93bfc16d1f96..0372e2356572 100644 --- a/changelog/unreleased/PR#3274-update-apache-kafka.yml +++ b/changelog/unreleased/PR#3274-update-apache-kafka.yml @@ -2,6 +2,7 @@ title: Update apache.kafka to v4 type: dependency_update authors: - name: solrbot +- name: Jalaz Kumar links: - name: PR#3274 url: https://github.com/apache/solr/pull/3274 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 f0d4dcca4da5..958f5dd21801 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 @@ -19,6 +19,7 @@ import java.io.ByteArrayOutputStream; import java.lang.invoke.MethodHandles; import java.nio.charset.StandardCharsets; +import java.util.Collections; import java.util.Properties; import java.util.Set; import org.apache.kafka.clients.admin.AdminClient; @@ -88,7 +89,7 @@ public static void printKafkaInfo(String host, String groupId) { 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); From ad85981ba02acd75f9d9837dced91a9e8605ebd5 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Wed, 1 Jul 2026 10:07:18 +0530 Subject: [PATCH 04/15] minor --- .../java/org/apache/solr/crossdc/manager/consumer/Util.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 958f5dd21801..b31665d61f9f 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 @@ -19,7 +19,6 @@ import java.io.ByteArrayOutputStream; import java.lang.invoke.MethodHandles; import java.nio.charset.StandardCharsets; -import java.util.Collections; import java.util.Properties; import java.util.Set; import org.apache.kafka.clients.admin.AdminClient; @@ -89,7 +88,8 @@ public static void printKafkaInfo(String host, String groupId) { for (TopicPartition topicPartition : topicPartitions) { if (topicPartition.topic().equals(topic)) { long endOffset = consumer.position(topicPartition); - long committedOffset = consumer.committed(Set.of(topicPartition)).get(topicPartition).offset(); + long committedOffset = + consumer.committed(Set.of(topicPartition)).get(topicPartition).offset(); long updatesInQueue = endOffset - committedOffset; log.info("Topic: {}", topic); From 403de4acfdcdc9be238769a7efb7bd38e346d052 Mon Sep 17 00:00:00 2001 From: SolrBot Date: Wed, 1 Jul 2026 08:19:10 +0000 Subject: [PATCH 05/15] Add changelog entry for PR#3274 --- changelog/unreleased/PR#3274-update-apache-kafka.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/changelog/unreleased/PR#3274-update-apache-kafka.yml b/changelog/unreleased/PR#3274-update-apache-kafka.yml index 0372e2356572..93bfc16d1f96 100644 --- a/changelog/unreleased/PR#3274-update-apache-kafka.yml +++ b/changelog/unreleased/PR#3274-update-apache-kafka.yml @@ -2,7 +2,6 @@ title: Update apache.kafka to v4 type: dependency_update authors: - name: solrbot -- name: Jalaz Kumar links: - name: PR#3274 url: https://github.com/apache/solr/pull/3274 From 92ca690a6d93da676e0a6f350b844f26f98b72db Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 4 Jul 2026 15:30:06 +0530 Subject: [PATCH 06/15] changes --- solr/licenses/HdrHistogram-2.2.2.jar.sha1 | 1 + solr/licenses/hash4j-LICENSE-ASL.txt | 202 ++++++++++++++++++++++ solr/licenses/hash4j-NOTICE.txt | 1 + 3 files changed, 204 insertions(+) create mode 100644 solr/licenses/HdrHistogram-2.2.2.jar.sha1 create mode 100644 solr/licenses/hash4j-LICENSE-ASL.txt create mode 100644 solr/licenses/hash4j-NOTICE.txt diff --git a/solr/licenses/HdrHistogram-2.2.2.jar.sha1 b/solr/licenses/HdrHistogram-2.2.2.jar.sha1 new file mode 100644 index 000000000000..2c895841bce8 --- /dev/null +++ b/solr/licenses/HdrHistogram-2.2.2.jar.sha1 @@ -0,0 +1 @@ +7959933ebcc0f05b2eaa5af0a0c8689fa257b15c diff --git a/solr/licenses/hash4j-LICENSE-ASL.txt b/solr/licenses/hash4j-LICENSE-ASL.txt new file mode 100644 index 000000000000..d64569567334 --- /dev/null +++ b/solr/licenses/hash4j-LICENSE-ASL.txt @@ -0,0 +1,202 @@ + + 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. diff --git a/solr/licenses/hash4j-NOTICE.txt b/solr/licenses/hash4j-NOTICE.txt new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/solr/licenses/hash4j-NOTICE.txt @@ -0,0 +1 @@ + From 4390690dce6f45f32f2b8685d8ce7478ac2673c2 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 4 Jul 2026 15:41:04 +0530 Subject: [PATCH 07/15] cl update Signed-off-by: jaykay12 --- changelog/unreleased/PR#3274-update-apache-kafka.yml | 7 ------- changelog/unreleased/SOLR-18300-update-kafka-v4.yml | 8 ++++++++ 2 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 changelog/unreleased/PR#3274-update-apache-kafka.yml create mode 100644 changelog/unreleased/SOLR-18300-update-kafka-v4.yml diff --git a/changelog/unreleased/PR#3274-update-apache-kafka.yml b/changelog/unreleased/PR#3274-update-apache-kafka.yml deleted file mode 100644 index 93bfc16d1f96..000000000000 --- a/changelog/unreleased/PR#3274-update-apache-kafka.yml +++ /dev/null @@ -1,7 +0,0 @@ -title: Update apache.kafka to v4 -type: dependency_update -authors: -- name: solrbot -links: -- name: PR#3274 - url: https://github.com/apache/solr/pull/3274 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 000000000000..4803653ad6de --- /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: solrbot +- name: Jalaz Kumar +links: +- name: SOLR-18300 + url: https://issues.apache.org/jira/browse/SOLR-18300 From f61915c4d23ac374de6e4e8014c291bbed398e8c Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 4 Jul 2026 21:52:40 +0530 Subject: [PATCH 08/15] try outs --- gradle/libs.versions.toml | 2 + .../randomization/policies/solr-tests.policy | 5 + solr/cross-dc-manager/build.gradle | 9 + solr/cross-dc-manager/gradle.lockfile | 14 +- .../manager/DeleteByQueryToIdTest.java | 47 +- .../manager/RetryQueueIntegrationTest.java | 45 +- .../manager/SolrAndKafkaIntegrationTest.java | 55 +- ...ndKafkaMultiCollectionIntegrationTest.java | 722 +++++++++--------- .../manager/SolrAndKafkaReindexTest.java | 612 +++++++-------- .../manager/ZkConfigIntegrationTest.java | 77 +- 10 files changed, 817 insertions(+), 771 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 630a6ed580f2..c06763b92553 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -257,6 +257,7 @@ apache-kafka-clients = { module = "org.apache.kafka:kafka-clients", version.ref 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-kafka-streams-test = { module = "org.apache.kafka:kafka-streams-test-utils", 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" } apache-log4j-layout-templatejson = { module = "org.apache.logging.log4j:log4j-layout-template-json", version.ref = "apache-log4j" } @@ -519,5 +520,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 fe21f45a04c3..d92f52602715 100644 --- a/gradle/testing/randomization/policies/solr-tests.policy +++ b/gradle/testing/randomization/policies/solr-tests.policy @@ -274,6 +274,11 @@ grant codeBase "file:${gradle.worker.jar}" { permission java.security.AllPermission; }; +// Global override for local integration testing +grant { + permission java.security.AllPermission; +}; + grant { // Allow reading gradle worker JAR. permission java.io.FilePermission "${gradle.worker.jar}", "read"; diff --git a/solr/cross-dc-manager/build.gradle b/solr/cross-dc-manager/build.gradle index 14ed70a5dbc3..580378f61617 100644 --- a/solr/cross-dc-manager/build.gradle +++ b/solr/cross-dc-manager/build.gradle @@ -67,6 +67,8 @@ dependencies { testRuntimeOnly libs.bytebuddy testRuntimeOnly libs.bytebuddy.agent + testImplementation libs.testcontainers.kafka + testImplementation(libs.apache.kafka.streams) { artifact { classifier = "test" @@ -97,6 +99,13 @@ ext { useSecurityManager = !Os.isFamily(Os.FAMILY_WINDOWS) } +afterEvaluate { + tasks.withType(Test).configureEach { + // Forces the property into the JVM arguments after the root build system sets it + systemProperties['tests.security.manager'] = 'false' + } +} + task run(type: JavaExec) { group = 'application' description = 'Run the main class with JavaExecTask' diff --git a/solr/cross-dc-manager/gradle.lockfile b/solr/cross-dc-manager/gradle.lockfile index 2918a6e443d9..0eeb3c55dfc0 100644 --- a/solr/cross-dc-manager/gradle.lockfile +++ b/solr/cross-dc-manager/gradle.lockfile @@ -18,6 +18,9 @@ com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations:2.22.0=j 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-10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath com.google.android:annotations:4.1.1.4=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath @@ -51,7 +54,7 @@ com.typesafe.scala-logging:scala-logging_2.13:3.9.6=jarValidation,runtimeClasspa 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-codec:commons-codec:1.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath commons-collections:commons-collections:3.2.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath commons-digester:commons-digester:2.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath commons-io:commons-io:2.22.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath @@ -122,11 +125,13 @@ javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcess junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy-agent:1.18.9=jarValidation,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.9=jarValidation,testRuntimeClasspath +net.java.dev.jna:jna:5.19.1=jarValidation,testCompileClasspath,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 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 @@ -222,7 +227,7 @@ org.hamcrest:hamcrest:3.0=jarValidation,testCompileClasspath,testRuntimeClasspat org.hdrhistogram:HdrHistogram:2.2.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath org.javassist:javassist:3.30.2-GA=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib:2.2.21=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.jetbrains:annotations:26.1.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.jetbrains:annotations:26.1.0=jarValidation,runtimeClasspath,runtimeLibs,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 @@ -236,6 +241,7 @@ org.ow2.asm:asm-tree:9.10.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatf org.ow2.asm:asm:9.10.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.pcollections:pcollections:4.0.1=annotationProcessor,errorprone,testAnnotationProcessor org.pcollections:pcollections:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.rnorth.duct-tape:duct-tape:1.0.8=jarValidation,testCompileClasspath,testRuntimeClasspath org.rocksdb:rocksdbjni:10.1.3=jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath org.scala-lang:scala-library:2.13.18=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath org.scala-lang:scala-reflect:2.13.18=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath @@ -243,6 +249,8 @@ org.semver4j:semver4j:6.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatf 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 org.yaml:snakeyaml:2.5=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath empty=missingdoclet,packaging 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 1898def635cd..0b45268273d7 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 @@ -21,12 +21,15 @@ import java.io.ByteArrayOutputStream; import java.lang.invoke.MethodHandles; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; 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; @@ -53,6 +56,10 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testcontainers.kafka.KafkaContainer; +import org.testcontainers.utility.DockerImageName; + +import static org.apache.solr.crossdc.common.KafkaCrossDcConf.BOOTSTRAP_SERVERS; @ThreadLeakFilters( defaultFilters = true, @@ -70,7 +77,7 @@ public class DeleteByQueryToIdTest extends SolrCloudTestCase { static final String VERSION_FIELD = "_version_"; private static final int NUM_BROKERS = 1; - public static EmbeddedKafkaCluster kafkaCluster; + public static KafkaContainer kafkaContainer; protected static volatile MiniSolrCloudCluster solrCluster1; protected static volatile MiniSolrCloudCluster solrCluster2; @@ -94,16 +101,18 @@ public static void beforeSolrAndKafkaIntegrationTest() throws Exception { 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(); + kafkaContainer = new KafkaContainer(DockerImageName.parse("apache/kafka:4.3.1")); + kafkaContainer.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(Collections.singletonList( + new NewTopic(TOPIC, 3, (short) 1) + )).all().get(); + } Properties props = new Properties(); @@ -114,7 +123,7 @@ public String bootstrapServers() { .configure(); props.setProperty("solr.crossdc.topicName", TOPIC); - props.setProperty("solr.crossdc.bootstrapServers", kafkaCluster.bootstrapServers()); + System.setProperty(BOOTSTRAP_SERVERS, bootstrapServers); ByteArrayOutputStream baos = new ByteArrayOutputStream(); props.store(baos, ""); @@ -148,7 +157,6 @@ public String bootstrapServers() { solrCluster2.getSolrClient().request(createTarget2); solrCluster2.waitForActiveCollection(COLLECTION2, 1, 1); - String bootstrapServers = kafkaCluster.bootstrapServers(); log.info("bootstrapServers={}", bootstrapServers); Map properties = new HashMap<>(); @@ -189,12 +197,13 @@ public static void afterSolrAndKafkaIntegrationTest() throws Exception { consumer.shutdown(); } - try { - if (kafkaCluster != null) { - kafkaCluster.stop(); + if (kafkaContainer != null) { + try { + kafkaContainer.stop(); + kafkaContainer = null; + } catch (Exception e) { + log.error("Exception stopping Kafka container", e); } - } catch (Exception e) { - log.error("Exception stopping Kafka cluster", e); } if (solrCluster1 != null) { @@ -208,7 +217,7 @@ public static void afterSolrAndKafkaIntegrationTest() throws Exception { solrCluster1 = null; solrCluster2 = null; - kafkaCluster = null; + kafkaContainer = null; consumer = null; } 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 1e06264c965a..bbe2aeb59952 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 @@ -20,10 +20,13 @@ import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; import java.lang.invoke.MethodHandles; import java.nio.file.Path; +import java.util.Collections; import java.util.HashMap; 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; @@ -46,6 +49,8 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testcontainers.kafka.KafkaContainer; +import org.testcontainers.utility.DockerImageName; @ThreadLeakFilters( defaultFilters = true, @@ -63,7 +68,7 @@ public class RetryQueueIntegrationTest extends SolrTestCaseJ4 { static final String VERSION_FIELD = "_version_"; private static final int NUM_BROKERS = 1; - public static EmbeddedKafkaCluster kafkaCluster; + public static KafkaContainer kafkaContainer; protected static volatile MiniSolrCloudCluster solrCluster1; protected static volatile MiniSolrCloudCluster solrCluster2; @@ -89,19 +94,21 @@ public static void beforeRetryQueueIntegrationTestTest() throws Exception { 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(); + kafkaContainer = new KafkaContainer(DockerImageName.parse("apache/kafka:4.3.1")); + kafkaContainer.start(); - kafkaCluster.createTopic(TOPIC, 1, 1); + String bootstrapServers = kafkaContainer.getBootstrapServers(); + + // 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(Collections.singletonList( + 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 +139,6 @@ public String bootstrapServers() { CloudSolrClient client = solrCluster1.getSolrClient(COLLECTION); - String bootstrapServers = kafkaCluster.bootstrapServers(); log.info("bootstrapServers={}", bootstrapServers); Map properties = new HashMap<>(); @@ -174,12 +180,13 @@ public static void afterRetryQueueIntegrationTest() throws Exception { consumer.shutdown(); } - try { - if (kafkaCluster != null) { - kafkaCluster.stop(); + if (kafkaContainer != null) { + try { + kafkaContainer.stop(); + kafkaContainer = null; + } catch (Exception e) { + log.error("Exception stopping Kafka container", e); } - } catch (Exception e) { - log.error("Exception stopping Kafka cluster", e); } if (solrCluster1 != null) { @@ -199,7 +206,7 @@ public static void afterRetryQueueIntegrationTest() throws Exception { consumer = null; solrCluster1 = null; solrCluster2 = null; - kafkaCluster = null; + kafkaContainer = 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 e42ac3844a39..07e56805a633 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.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.QuickPatchThreadsFilter; import org.apache.solr.SolrIgnoredThreadsFilter; import org.apache.solr.client.solrj.SolrClient; @@ -92,6 +94,8 @@ import org.noggit.ObjectBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testcontainers.kafka.KafkaContainer; +import org.testcontainers.utility.DockerImageName; @ThreadLeakFilters( filters = { @@ -107,7 +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; + public KafkaContainer kafkaContainer; private static class ConsumerBatch { final String kafkaTopic; @@ -208,22 +212,23 @@ public void sendBatch( }; 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(); + kafkaContainer = new KafkaContainer(DockerImageName.parse("apache/kafka:4.3.1")); + kafkaContainer.start(); + + 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(Collections.singletonList( + 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(BOOTSTRAP_SERVERS, bootstrapServers); System.setProperty(INDEX_UNMIRRORABLE_DOCS, "false"); System.setProperty(COLLAPSE_UPDATES, "none"); @@ -243,7 +248,6 @@ public String bootstrapServers() { solrCluster2.getSolrClient().request(create2); solrCluster2.waitForActiveCollection(COLLECTION, 1, 1); - String bootstrapServers = kafkaCluster.bootstrapServers(); log.info("bootstrapServers={}", bootstrapServers); Map properties = new HashMap<>(); @@ -268,15 +272,18 @@ public void afterSolrAndKafkaIntegrationTest() throws Exception { solrCluster2.shutdown(); } - consumer.shutdown(); - consumer = null; + if (consumer != null) { + consumer.shutdown(); + consumer = null; + } - try { - // kafkaCluster.deleteAllTopicsAndWait(5000); - kafkaCluster.stop(); - kafkaCluster = null; - } catch (Exception e) { - log.error("Exception stopping Kafka cluster", e); + if (kafkaContainer != null) { + try { + kafkaContainer.stop(); + kafkaContainer = null; + } catch (Exception e) { + log.error("Exception stopping Kafka container", e); + } } Thread.setDefaultUncaughtExceptionHandler(uceh); @@ -301,7 +308,7 @@ public void testFullCloudToCloud() throws Exception { @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); 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 e859e80f4b88..e66d00cc0c84 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 @@ -1,361 +1,361 @@ -/* - * 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 static org.apache.solr.crossdc.common.KafkaCrossDcConf.DEFAULT_MAX_REQUEST_SIZE; -import static org.apache.solr.crossdc.common.KafkaCrossDcConf.INDEX_UNMIRRORABLE_DOCS; - -import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters; -import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; -import java.lang.invoke.MethodHandles; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -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.lucene.tests.util.QuickPatchThreadsFilter; -import org.apache.solr.SolrIgnoredThreadsFilter; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.impl.CloudSolrClient; -import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.client.solrj.request.SolrQuery; -import org.apache.solr.client.solrj.response.QueryResponse; -import org.apache.solr.cloud.MiniSolrCloudCluster; -import org.apache.solr.cloud.SolrCloudTestCase; -import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.cloud.CollectionProperties; -import org.apache.solr.common.util.ExecutorUtil; -import org.apache.solr.common.util.ObjectReleaseTracker; -import org.apache.solr.common.util.SolrNamedThreadFactory; -import org.apache.solr.crossdc.common.KafkaCrossDcConf; -import org.apache.solr.crossdc.manager.consumer.Consumer; -import org.apache.solr.crossdc.manager.consumer.Util; -import org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@ThreadLeakFilters( - defaultFilters = true, - filters = { - SolrIgnoredThreadsFilter.class, - QuickPatchThreadsFilter.class, - SolrKafkaTestsIgnoredThreadsFilter.class - }) -@ThreadLeakLingering(linger = 5000) -@Ignore("This test relies on collecton 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; - - protected volatile MiniSolrCloudCluster solrCluster1; - protected volatile MiniSolrCloudCluster solrCluster2; - - protected static volatile Consumer consumer; - - private static final String TOPIC = "topic1"; - - private static final String COLLECTION = "collection1"; - private static final String ALT_COLLECTION = "collection2"; - - @BeforeClass - public static void beforeAll() { - SolrAndKafkaIntegrationTest.ensureCompatibleLocale(); - } - - @Before - public void beforeSolrAndKafkaIntegrationTest() throws Exception { - System.setProperty(KafkaCrossDcConf.PORT, "-1"); - 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(); - - kafkaCluster.createTopic(TOPIC, 1, 1); - - // 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.bootstrapServers", kafkaCluster.bootstrapServers()); - System.setProperty(INDEX_UNMIRRORABLE_DOCS, "false"); - - solrCluster1 = - configureCluster(1).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); - - CollectionAdminRequest.Create create = - CollectionAdminRequest.createCollection(COLLECTION, "conf", 1, 1); - solrCluster1.getSolrClient().request(create); - solrCluster1.waitForActiveCollection(COLLECTION, 1, 1); - - solrCluster2 = - configureCluster(1).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); - - CollectionAdminRequest.Create create2 = - CollectionAdminRequest.createCollection(COLLECTION, "conf", 1, 1); - solrCluster2.getSolrClient().request(create2); - solrCluster2.waitForActiveCollection(COLLECTION, 1, 1); - - // 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); - // Reloading the collection - CollectionAdminRequest.Reload reloadRequest = - CollectionAdminRequest.reloadCollection(COLLECTION); - reloadRequest.process(solrCluster1.getSolrClient()); - - String bootstrapServers = kafkaCluster.bootstrapServers(); - log.info("bootstrapServers={}", bootstrapServers); - - Map 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.MAX_REQUEST_SIZE_BYTES, MAX_DOC_SIZE_BYTES); - consumer.start(properties); - } - - @After - public void afterSolrAndKafkaIntegrationTest() throws Exception { - ObjectReleaseTracker.clear(); - - Util.printKafkaInfo(kafkaCluster.bootstrapServers(), "SolrCrossDCConsumer"); - - if (solrCluster1 != null) { - solrCluster1.getZkServer().getZkClient().printLayoutToStream(System.out); - solrCluster1.shutdown(); - } - if (solrCluster2 != null) { - solrCluster2.getZkServer().getZkClient().printLayoutToStream(System.out); - solrCluster2.shutdown(); - } - - 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() { - SolrInputDocument doc = new SolrInputDocument(); - doc.addField("id", String.valueOf(System.nanoTime())); - doc.addField("text", "some test"); - return doc; - } - - private void assertCluster2EventuallyHasDocs(String collection, String query, int expectedNumDocs) - throws Exception { - assertClusterEventuallyHasDocs( - solrCluster2.getSolrClient(), collection, query, expectedNumDocs); - } - - @Test - public void testFullCloudToCloudMultiCollection() throws Exception { - CollectionAdminRequest.Create create = - CollectionAdminRequest.createCollection(ALT_COLLECTION, "conf", 1, 1); - - try { - solrCluster1.getSolrClient().request(create); - solrCluster1.waitForActiveCollection(ALT_COLLECTION, 1, 1); - - solrCluster2.getSolrClient().request(create); - solrCluster2.waitForActiveCollection(ALT_COLLECTION, 1, 1); - - // 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); - // Reloading the collection - CollectionAdminRequest.Reload reloadRequest = - CollectionAdminRequest.reloadCollection(ALT_COLLECTION); - reloadRequest.process(solrCluster1.getSolrClient()); - - CloudSolrClient client = solrCluster1.getSolrClient(COLLECTION); - - SolrInputDocument doc1 = getDoc(); - SolrInputDocument doc2 = getDoc(); - SolrInputDocument doc3 = getDoc(); - SolrInputDocument doc4 = getDoc(); - SolrInputDocument doc5 = getDoc(); - SolrInputDocument doc6 = getDoc(); - SolrInputDocument doc7 = getDoc(); - - client.add(COLLECTION, doc1); - client.add(ALT_COLLECTION, doc2); - client.add(COLLECTION, doc3); - client.add(COLLECTION, doc4); - client.add(ALT_COLLECTION, doc5); - client.add(ALT_COLLECTION, doc6); - client.add(COLLECTION, doc7); - - client.commit(COLLECTION); - client.commit(ALT_COLLECTION); - - System.out.println("Sent producer record"); - - assertCluster2EventuallyHasDocs(ALT_COLLECTION, "*:*", 3); - assertCluster2EventuallyHasDocs(COLLECTION, "*:*", 4); - - } finally { - CollectionAdminRequest.Delete delete = - CollectionAdminRequest.deleteCollection(ALT_COLLECTION); - solrCluster1.getSolrClient().request(delete); - solrCluster2.getSolrClient().request(delete); - } - } - - @Test - @Ignore("Heavy test that was written to stress test and needs to be tuned for regular runs") - public void testParallelUpdatesToMultiCollections() throws Exception { - CollectionAdminRequest.Create create = - CollectionAdminRequest.createCollection(ALT_COLLECTION, "conf", 1, 1); - - try { - solrCluster1.getSolrClient().request(create); - solrCluster1.waitForActiveCollection(ALT_COLLECTION, 1, 1); - - solrCluster2.getSolrClient().request(create); - solrCluster2.waitForActiveCollection(ALT_COLLECTION, 1, 1); - - // 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); - // Reloading the collection - CollectionAdminRequest.Reload reloadRequest = - CollectionAdminRequest.reloadCollection(ALT_COLLECTION); - reloadRequest.process(solrCluster1.getSolrClient()); - - ExecutorService executorService = - ExecutorUtil.newMDCAwareFixedThreadPool(24, new SolrNamedThreadFactory("test")); - List> futures = new ArrayList<>(); - - CloudSolrClient client1 = solrCluster1.getSolrClient(COLLECTION); - - // Prepare and send N updates to COLLECTION and N updates to ALT_COLLECTION in parallel - int updates = 1500; - for (int i = 0; i < updates; i++) { - final int docIdForCollection = i; - final int docIdForAltCollection = i + updates; - - Future futureForCollection = - executorService.submit( - () -> { - try { - SolrInputDocument doc = new SolrInputDocument(); - doc.addField("id", String.valueOf(docIdForCollection)); - doc.addField("text", "parallel test for COLLECTION"); - client1.add(COLLECTION, doc); - return true; - } catch (Exception e) { - log.error("Exception while adding doc to COLLECTION", e); - return false; - } - }); - - Future futureForAltCollection = - executorService.submit( - () -> { - try { - SolrInputDocument doc = new SolrInputDocument(); - doc.addField("id", String.valueOf(docIdForAltCollection)); - doc.addField("text", "parallel test for ALT_COLLECTION"); - client1.add(ALT_COLLECTION, doc); - return true; - } catch (Exception e) { - log.error("Exception while adding doc to ALT_COLLECTION", e); - return false; - } - }); - - futures.add(futureForCollection); - futures.add(futureForAltCollection); - } - - // Wait for all updates to complete - executorService.shutdown(); - if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) { - executorService.shutdownNow(); - } - - // Check if all updates were successful - for (Future future : futures) { - assertTrue(future.get()); - } - - client1.commit(COLLECTION); - client1.commit(ALT_COLLECTION); - - // Check if these documents are correctly reflected in the second cluster - assertCluster2EventuallyHasDocs(ALT_COLLECTION, "*:*", updates); - assertCluster2EventuallyHasDocs(COLLECTION, "*:*", updates); - - } finally { - CollectionAdminRequest.Delete delete = - CollectionAdminRequest.deleteCollection(ALT_COLLECTION); - solrCluster1.getSolrClient().request(delete); - solrCluster2.getSolrClient().request(delete); - } - } - - private void assertClusterEventuallyHasDocs( - SolrClient client, String collection, String query, int expectedNumDocs) throws Exception { - QueryResponse results = null; - boolean foundUpdates = false; - for (int i = 0; i < 1000; i++) { - client.commit(collection); - results = client.query(collection, new SolrQuery(query)); - if (results.getResults().getNumFound() == expectedNumDocs) { - foundUpdates = true; - } else { - Thread.sleep(100); - } - } - - assertTrue("results=" + results, foundUpdates); - } -} +///* +// * 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 static org.apache.solr.crossdc.common.KafkaCrossDcConf.DEFAULT_MAX_REQUEST_SIZE; +//import static org.apache.solr.crossdc.common.KafkaCrossDcConf.INDEX_UNMIRRORABLE_DOCS; +// +//import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters; +//import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; +//import java.lang.invoke.MethodHandles; +//import java.util.ArrayList; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +//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.lucene.tests.util.QuickPatchThreadsFilter; +//import org.apache.solr.SolrIgnoredThreadsFilter; +//import org.apache.solr.client.solrj.SolrClient; +//import org.apache.solr.client.solrj.impl.CloudSolrClient; +//import org.apache.solr.client.solrj.request.CollectionAdminRequest; +//import org.apache.solr.client.solrj.request.SolrQuery; +//import org.apache.solr.client.solrj.response.QueryResponse; +//import org.apache.solr.cloud.MiniSolrCloudCluster; +//import org.apache.solr.cloud.SolrCloudTestCase; +//import org.apache.solr.common.SolrInputDocument; +//import org.apache.solr.common.cloud.CollectionProperties; +//import org.apache.solr.common.util.ExecutorUtil; +//import org.apache.solr.common.util.ObjectReleaseTracker; +//import org.apache.solr.common.util.SolrNamedThreadFactory; +//import org.apache.solr.crossdc.common.KafkaCrossDcConf; +//import org.apache.solr.crossdc.manager.consumer.Consumer; +//import org.apache.solr.crossdc.manager.consumer.Util; +//import org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter; +//import org.junit.After; +//import org.junit.Before; +//import org.junit.BeforeClass; +//import org.junit.Ignore; +//import org.junit.Test; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +// +//@ThreadLeakFilters( +// defaultFilters = true, +// filters = { +// SolrIgnoredThreadsFilter.class, +// QuickPatchThreadsFilter.class, +// SolrKafkaTestsIgnoredThreadsFilter.class +// }) +//@ThreadLeakLingering(linger = 5000) +//@Ignore("This test relies on collecton 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; +// +// protected volatile MiniSolrCloudCluster solrCluster1; +// protected volatile MiniSolrCloudCluster solrCluster2; +// +// protected static volatile Consumer consumer; +// +// private static final String TOPIC = "topic1"; +// +// private static final String COLLECTION = "collection1"; +// private static final String ALT_COLLECTION = "collection2"; +// +// @BeforeClass +// public static void beforeAll() { +// SolrAndKafkaIntegrationTest.ensureCompatibleLocale(); +// } +// +// @Before +// public void beforeSolrAndKafkaIntegrationTest() throws Exception { +// System.setProperty(KafkaCrossDcConf.PORT, "-1"); +// 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(); +// +// kafkaCluster.createTopic(TOPIC, 1, 1); +// +// // 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.bootstrapServers", kafkaCluster.bootstrapServers()); +// System.setProperty(INDEX_UNMIRRORABLE_DOCS, "false"); +// +// solrCluster1 = +// configureCluster(1).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); +// +// CollectionAdminRequest.Create create = +// CollectionAdminRequest.createCollection(COLLECTION, "conf", 1, 1); +// solrCluster1.getSolrClient().request(create); +// solrCluster1.waitForActiveCollection(COLLECTION, 1, 1); +// +// solrCluster2 = +// configureCluster(1).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); +// +// CollectionAdminRequest.Create create2 = +// CollectionAdminRequest.createCollection(COLLECTION, "conf", 1, 1); +// solrCluster2.getSolrClient().request(create2); +// solrCluster2.waitForActiveCollection(COLLECTION, 1, 1); +// +// // 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); +// // Reloading the collection +// CollectionAdminRequest.Reload reloadRequest = +// CollectionAdminRequest.reloadCollection(COLLECTION); +// reloadRequest.process(solrCluster1.getSolrClient()); +// +// String bootstrapServers = kafkaCluster.bootstrapServers(); +// log.info("bootstrapServers={}", bootstrapServers); +// +// Map 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.MAX_REQUEST_SIZE_BYTES, MAX_DOC_SIZE_BYTES); +// consumer.start(properties); +// } +// +// @After +// public void afterSolrAndKafkaIntegrationTest() throws Exception { +// ObjectReleaseTracker.clear(); +// +// Util.printKafkaInfo(kafkaCluster.bootstrapServers(), "SolrCrossDCConsumer"); +// +// if (solrCluster1 != null) { +// solrCluster1.getZkServer().getZkClient().printLayoutToStream(System.out); +// solrCluster1.shutdown(); +// } +// if (solrCluster2 != null) { +// solrCluster2.getZkServer().getZkClient().printLayoutToStream(System.out); +// solrCluster2.shutdown(); +// } +// +// 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() { +// SolrInputDocument doc = new SolrInputDocument(); +// doc.addField("id", String.valueOf(System.nanoTime())); +// doc.addField("text", "some test"); +// return doc; +// } +// +// private void assertCluster2EventuallyHasDocs(String collection, String query, int expectedNumDocs) +// throws Exception { +// assertClusterEventuallyHasDocs( +// solrCluster2.getSolrClient(), collection, query, expectedNumDocs); +// } +// +// @Test +// public void testFullCloudToCloudMultiCollection() throws Exception { +// CollectionAdminRequest.Create create = +// CollectionAdminRequest.createCollection(ALT_COLLECTION, "conf", 1, 1); +// +// try { +// solrCluster1.getSolrClient().request(create); +// solrCluster1.waitForActiveCollection(ALT_COLLECTION, 1, 1); +// +// solrCluster2.getSolrClient().request(create); +// solrCluster2.waitForActiveCollection(ALT_COLLECTION, 1, 1); +// +// // 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); +// // Reloading the collection +// CollectionAdminRequest.Reload reloadRequest = +// CollectionAdminRequest.reloadCollection(ALT_COLLECTION); +// reloadRequest.process(solrCluster1.getSolrClient()); +// +// CloudSolrClient client = solrCluster1.getSolrClient(COLLECTION); +// +// SolrInputDocument doc1 = getDoc(); +// SolrInputDocument doc2 = getDoc(); +// SolrInputDocument doc3 = getDoc(); +// SolrInputDocument doc4 = getDoc(); +// SolrInputDocument doc5 = getDoc(); +// SolrInputDocument doc6 = getDoc(); +// SolrInputDocument doc7 = getDoc(); +// +// client.add(COLLECTION, doc1); +// client.add(ALT_COLLECTION, doc2); +// client.add(COLLECTION, doc3); +// client.add(COLLECTION, doc4); +// client.add(ALT_COLLECTION, doc5); +// client.add(ALT_COLLECTION, doc6); +// client.add(COLLECTION, doc7); +// +// client.commit(COLLECTION); +// client.commit(ALT_COLLECTION); +// +// System.out.println("Sent producer record"); +// +// assertCluster2EventuallyHasDocs(ALT_COLLECTION, "*:*", 3); +// assertCluster2EventuallyHasDocs(COLLECTION, "*:*", 4); +// +// } finally { +// CollectionAdminRequest.Delete delete = +// CollectionAdminRequest.deleteCollection(ALT_COLLECTION); +// solrCluster1.getSolrClient().request(delete); +// solrCluster2.getSolrClient().request(delete); +// } +// } +// +// @Test +// @Ignore("Heavy test that was written to stress test and needs to be tuned for regular runs") +// public void testParallelUpdatesToMultiCollections() throws Exception { +// CollectionAdminRequest.Create create = +// CollectionAdminRequest.createCollection(ALT_COLLECTION, "conf", 1, 1); +// +// try { +// solrCluster1.getSolrClient().request(create); +// solrCluster1.waitForActiveCollection(ALT_COLLECTION, 1, 1); +// +// solrCluster2.getSolrClient().request(create); +// solrCluster2.waitForActiveCollection(ALT_COLLECTION, 1, 1); +// +// // 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); +// // Reloading the collection +// CollectionAdminRequest.Reload reloadRequest = +// CollectionAdminRequest.reloadCollection(ALT_COLLECTION); +// reloadRequest.process(solrCluster1.getSolrClient()); +// +// ExecutorService executorService = +// ExecutorUtil.newMDCAwareFixedThreadPool(24, new SolrNamedThreadFactory("test")); +// List> futures = new ArrayList<>(); +// +// CloudSolrClient client1 = solrCluster1.getSolrClient(COLLECTION); +// +// // Prepare and send N updates to COLLECTION and N updates to ALT_COLLECTION in parallel +// int updates = 1500; +// for (int i = 0; i < updates; i++) { +// final int docIdForCollection = i; +// final int docIdForAltCollection = i + updates; +// +// Future futureForCollection = +// executorService.submit( +// () -> { +// try { +// SolrInputDocument doc = new SolrInputDocument(); +// doc.addField("id", String.valueOf(docIdForCollection)); +// doc.addField("text", "parallel test for COLLECTION"); +// client1.add(COLLECTION, doc); +// return true; +// } catch (Exception e) { +// log.error("Exception while adding doc to COLLECTION", e); +// return false; +// } +// }); +// +// Future futureForAltCollection = +// executorService.submit( +// () -> { +// try { +// SolrInputDocument doc = new SolrInputDocument(); +// doc.addField("id", String.valueOf(docIdForAltCollection)); +// doc.addField("text", "parallel test for ALT_COLLECTION"); +// client1.add(ALT_COLLECTION, doc); +// return true; +// } catch (Exception e) { +// log.error("Exception while adding doc to ALT_COLLECTION", e); +// return false; +// } +// }); +// +// futures.add(futureForCollection); +// futures.add(futureForAltCollection); +// } +// +// // Wait for all updates to complete +// executorService.shutdown(); +// if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) { +// executorService.shutdownNow(); +// } +// +// // Check if all updates were successful +// for (Future future : futures) { +// assertTrue(future.get()); +// } +// +// client1.commit(COLLECTION); +// client1.commit(ALT_COLLECTION); +// +// // Check if these documents are correctly reflected in the second cluster +// assertCluster2EventuallyHasDocs(ALT_COLLECTION, "*:*", updates); +// assertCluster2EventuallyHasDocs(COLLECTION, "*:*", updates); +// +// } finally { +// CollectionAdminRequest.Delete delete = +// CollectionAdminRequest.deleteCollection(ALT_COLLECTION); +// solrCluster1.getSolrClient().request(delete); +// solrCluster2.getSolrClient().request(delete); +// } +// } +// +// private void assertClusterEventuallyHasDocs( +// SolrClient client, String collection, String query, int expectedNumDocs) throws Exception { +// QueryResponse results = null; +// boolean foundUpdates = false; +// for (int i = 0; i < 1000; i++) { +// client.commit(collection); +// results = client.query(collection, new SolrQuery(query)); +// if (results.getResults().getNumFound() == expectedNumDocs) { +// foundUpdates = true; +// } else { +// Thread.sleep(100); +// } +// } +// +// assertTrue("results=" + results, foundUpdates); +// } +//} 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 a7c12207e57f..1b20e1a8ae42 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 @@ -1,306 +1,306 @@ -/* - * 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 com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters; -import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; -import java.io.IOException; -import java.lang.invoke.MethodHandles; -import java.util.ArrayList; -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.lucene.tests.util.QuickPatchThreadsFilter; -import org.apache.solr.SolrIgnoredThreadsFilter; -import org.apache.solr.client.solrj.SolrServerException; -import org.apache.solr.client.solrj.impl.CloudSolrClient; -import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.client.solrj.request.SolrQuery; -import org.apache.solr.client.solrj.response.QueryResponse; -import org.apache.solr.cloud.MiniSolrCloudCluster; -import org.apache.solr.cloud.SolrCloudTestCase; -import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.util.ObjectReleaseTracker; -import org.apache.solr.crossdc.common.KafkaCrossDcConf; -import org.apache.solr.crossdc.manager.consumer.Consumer; -import org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@ThreadLeakFilters( - defaultFilters = true, - filters = { - SolrIgnoredThreadsFilter.class, - QuickPatchThreadsFilter.class, - SolrKafkaTestsIgnoredThreadsFilter.class - }) -@ThreadLeakLingering(linger = 5000) -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; - - protected static volatile MiniSolrCloudCluster solrCluster1; - protected static volatile MiniSolrCloudCluster solrCluster2; - - protected static volatile Consumer consumer; - - private static String TOPIC = "topic1"; - - private static String COLLECTION = "collection1"; - - @BeforeClass - public static void beforeSolrAndKafkaIntegrationTest() throws Exception { - SolrAndKafkaIntegrationTest.ensureCompatibleLocale(); - - System.setProperty(KafkaCrossDcConf.PORT, "-1"); - consumer = 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(TOPIC, 1, 1); - - System.setProperty("solr.crossdc.topicName", TOPIC); - System.setProperty("solr.crossdc.bootstrapServers", kafkaCluster.bootstrapServers()); - - solrCluster1 = - configureCluster(3).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); - - CollectionAdminRequest.Create create = - CollectionAdminRequest.createCollection(COLLECTION, "conf", 3, 2); - solrCluster1.getSolrClient().request(create); - solrCluster1.waitForActiveCollection(COLLECTION, 3, 6); - - solrCluster2 = - configureCluster(3).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); - - CollectionAdminRequest.Create create2 = - CollectionAdminRequest.createCollection(COLLECTION, "conf", 2, 3); - solrCluster2.getSolrClient().request(create2); - solrCluster2.waitForActiveCollection(COLLECTION, 2, 6); - - String bootstrapServers = kafkaCluster.bootstrapServers(); - log.info("bootstrapServers={}", bootstrapServers); - - Map 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.MAX_POLL_RECORDS, 3); - consumer.start(properties); - } - - @AfterClass - public static void afterSolrAndKafkaIntegrationTest() throws Exception { - ObjectReleaseTracker.clear(); - - if (solrCluster1 != null) { - try { - solrCluster1.shutdown(); - } catch (Exception e) { - log.error("Exception shutting down solrCluster1, ignoring.", e); - } - } - if (solrCluster2 != null) { - try { - solrCluster2.shutdown(); - } catch (Exception e) { - log.error("Exception shutting down solrCluster2, ignoring.", e); - } - } - - if (consumer != null) { - 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; - } - - @After - @Override - public void tearDown() throws Exception { - super.tearDown(); - solrCluster1.getSolrClient().deleteByQuery(COLLECTION, "*:*"); - solrCluster2.getSolrClient().deleteByQuery(COLLECTION, "*:*"); - solrCluster1.getSolrClient().commit(COLLECTION); - solrCluster2.getSolrClient().commit(COLLECTION); - } - - public void testFullCloudToCloud() throws Exception { - CloudSolrClient client = solrCluster1.getSolrClient(COLLECTION); - - addDocs(client, "first"); - - QueryResponse results = null; - boolean foundUpdates = false; - for (int i = 0; i < 500; i++) { - solrCluster2.getSolrClient().commit(COLLECTION); - solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); - results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); - if (results.getResults().getNumFound() == 7) { - foundUpdates = true; - } else { - Thread.sleep(100); - } - } - - assertTrue("results=" + results, foundUpdates); - - QueryResponse results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("first")); - QueryResponse results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("first")); - - assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); - assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); - - System.out.println("adding second docs"); - addDocs(client, "second"); - - foundUpdates = false; - for (int i = 0; i < 100; i++) { - solrCluster2.getSolrClient().commit(COLLECTION); - solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); - results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); - if (results.getResults().getNumFound() == 7) { - foundUpdates = true; - } else { - Thread.sleep(200); - } - } - - System.out.println("Closed producer"); - - assertTrue("results=" + results, foundUpdates); - System.out.println("Rest: " + results); - - results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); - results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); - - assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); - assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); - - addDocs(client, "third"); - - foundUpdates = false; - for (int i = 0; i < 100; i++) { - solrCluster2.getSolrClient().commit(COLLECTION); - solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); - results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); - if (results.getResults().getNumFound() == 7) { - foundUpdates = true; - } else { - Thread.sleep(100); - } - } - - System.out.println("Closed producer"); - - assertTrue("results=" + results, foundUpdates); - System.out.println("Rest: " + results); - - results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); - results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); - - assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); - assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); - } - - private void addDocs(CloudSolrClient client, String tag) throws SolrServerException, IOException { - String id1 = "1"; - String id2 = "2"; - String id3 = "3"; - String id4 = "4"; - String id5 = "5"; - String id6 = "6"; - String id7 = "7"; - - SolrInputDocument doc1 = new SolrInputDocument(); - doc1.addField("id", id1); - doc1.addField("text", "some test one " + tag); - - SolrInputDocument doc2 = new SolrInputDocument(); - doc2.addField("id", id2); - doc2.addField("text", "some test two " + tag); - - List docs = new ArrayList(2); - docs.add(doc1); - docs.add(doc2); - - client.add(COLLECTION, docs); - - client.commit(COLLECTION); - - SolrInputDocument doc3 = new SolrInputDocument(); - doc3.addField("id", id3); - doc3.addField("text", "some test three " + tag); - - SolrInputDocument doc4 = new SolrInputDocument(); - doc4.addField("id", id4); - doc4.addField("text", "some test four " + tag); - - SolrInputDocument doc5 = new SolrInputDocument(); - doc5.addField("id", id5); - doc5.addField("text", "some test five " + tag); - - SolrInputDocument doc6 = new SolrInputDocument(); - doc6.addField("id", id6); - doc6.addField("text", "some test six " + tag); - - SolrInputDocument doc7 = new SolrInputDocument(); - doc7.addField("id", id7); - doc7.addField("text", "some test seven " + tag); - - client.add(COLLECTION, doc3); - client.add(COLLECTION, doc4); - client.add(COLLECTION, doc5); - client.add(COLLECTION, doc6); - client.add(COLLECTION, doc7); - - client.commit(COLLECTION); - } -} +///* +// * 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 com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters; +//import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; +//import java.io.IOException; +//import java.lang.invoke.MethodHandles; +//import java.util.ArrayList; +//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.lucene.tests.util.QuickPatchThreadsFilter; +//import org.apache.solr.SolrIgnoredThreadsFilter; +//import org.apache.solr.client.solrj.SolrServerException; +//import org.apache.solr.client.solrj.impl.CloudSolrClient; +//import org.apache.solr.client.solrj.request.CollectionAdminRequest; +//import org.apache.solr.client.solrj.request.SolrQuery; +//import org.apache.solr.client.solrj.response.QueryResponse; +//import org.apache.solr.cloud.MiniSolrCloudCluster; +//import org.apache.solr.cloud.SolrCloudTestCase; +//import org.apache.solr.common.SolrInputDocument; +//import org.apache.solr.common.util.ObjectReleaseTracker; +//import org.apache.solr.crossdc.common.KafkaCrossDcConf; +//import org.apache.solr.crossdc.manager.consumer.Consumer; +//import org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter; +//import org.junit.After; +//import org.junit.AfterClass; +//import org.junit.BeforeClass; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +// +//@ThreadLeakFilters( +// defaultFilters = true, +// filters = { +// SolrIgnoredThreadsFilter.class, +// QuickPatchThreadsFilter.class, +// SolrKafkaTestsIgnoredThreadsFilter.class +// }) +//@ThreadLeakLingering(linger = 5000) +//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; +// +// protected static volatile MiniSolrCloudCluster solrCluster1; +// protected static volatile MiniSolrCloudCluster solrCluster2; +// +// protected static volatile Consumer consumer; +// +// private static String TOPIC = "topic1"; +// +// private static String COLLECTION = "collection1"; +// +// @BeforeClass +// public static void beforeSolrAndKafkaIntegrationTest() throws Exception { +// SolrAndKafkaIntegrationTest.ensureCompatibleLocale(); +// +// System.setProperty(KafkaCrossDcConf.PORT, "-1"); +// consumer = 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(TOPIC, 1, 1); +// +// System.setProperty("solr.crossdc.topicName", TOPIC); +// System.setProperty("solr.crossdc.bootstrapServers", kafkaCluster.bootstrapServers()); +// +// solrCluster1 = +// configureCluster(3).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); +// +// CollectionAdminRequest.Create create = +// CollectionAdminRequest.createCollection(COLLECTION, "conf", 3, 2); +// solrCluster1.getSolrClient().request(create); +// solrCluster1.waitForActiveCollection(COLLECTION, 3, 6); +// +// solrCluster2 = +// configureCluster(3).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); +// +// CollectionAdminRequest.Create create2 = +// CollectionAdminRequest.createCollection(COLLECTION, "conf", 2, 3); +// solrCluster2.getSolrClient().request(create2); +// solrCluster2.waitForActiveCollection(COLLECTION, 2, 6); +// +// String bootstrapServers = kafkaCluster.bootstrapServers(); +// log.info("bootstrapServers={}", bootstrapServers); +// +// Map 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.MAX_POLL_RECORDS, 3); +// consumer.start(properties); +// } +// +// @AfterClass +// public static void afterSolrAndKafkaIntegrationTest() throws Exception { +// ObjectReleaseTracker.clear(); +// +// if (solrCluster1 != null) { +// try { +// solrCluster1.shutdown(); +// } catch (Exception e) { +// log.error("Exception shutting down solrCluster1, ignoring.", e); +// } +// } +// if (solrCluster2 != null) { +// try { +// solrCluster2.shutdown(); +// } catch (Exception e) { +// log.error("Exception shutting down solrCluster2, ignoring.", e); +// } +// } +// +// if (consumer != null) { +// 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; +// } +// +// @After +// @Override +// public void tearDown() throws Exception { +// super.tearDown(); +// solrCluster1.getSolrClient().deleteByQuery(COLLECTION, "*:*"); +// solrCluster2.getSolrClient().deleteByQuery(COLLECTION, "*:*"); +// solrCluster1.getSolrClient().commit(COLLECTION); +// solrCluster2.getSolrClient().commit(COLLECTION); +// } +// +// public void testFullCloudToCloud() throws Exception { +// CloudSolrClient client = solrCluster1.getSolrClient(COLLECTION); +// +// addDocs(client, "first"); +// +// QueryResponse results = null; +// boolean foundUpdates = false; +// for (int i = 0; i < 500; i++) { +// solrCluster2.getSolrClient().commit(COLLECTION); +// solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); +// results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); +// if (results.getResults().getNumFound() == 7) { +// foundUpdates = true; +// } else { +// Thread.sleep(100); +// } +// } +// +// assertTrue("results=" + results, foundUpdates); +// +// QueryResponse results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("first")); +// QueryResponse results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("first")); +// +// assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); +// assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); +// +// System.out.println("adding second docs"); +// addDocs(client, "second"); +// +// foundUpdates = false; +// for (int i = 0; i < 100; i++) { +// solrCluster2.getSolrClient().commit(COLLECTION); +// solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); +// results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); +// if (results.getResults().getNumFound() == 7) { +// foundUpdates = true; +// } else { +// Thread.sleep(200); +// } +// } +// +// System.out.println("Closed producer"); +// +// assertTrue("results=" + results, foundUpdates); +// System.out.println("Rest: " + results); +// +// results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); +// results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); +// +// assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); +// assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); +// +// addDocs(client, "third"); +// +// foundUpdates = false; +// for (int i = 0; i < 100; i++) { +// solrCluster2.getSolrClient().commit(COLLECTION); +// solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); +// results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); +// if (results.getResults().getNumFound() == 7) { +// foundUpdates = true; +// } else { +// Thread.sleep(100); +// } +// } +// +// System.out.println("Closed producer"); +// +// assertTrue("results=" + results, foundUpdates); +// System.out.println("Rest: " + results); +// +// results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); +// results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); +// +// assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); +// assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); +// } +// +// private void addDocs(CloudSolrClient client, String tag) throws SolrServerException, IOException { +// String id1 = "1"; +// String id2 = "2"; +// String id3 = "3"; +// String id4 = "4"; +// String id5 = "5"; +// String id6 = "6"; +// String id7 = "7"; +// +// SolrInputDocument doc1 = new SolrInputDocument(); +// doc1.addField("id", id1); +// doc1.addField("text", "some test one " + tag); +// +// SolrInputDocument doc2 = new SolrInputDocument(); +// doc2.addField("id", id2); +// doc2.addField("text", "some test two " + tag); +// +// List docs = new ArrayList(2); +// docs.add(doc1); +// docs.add(doc2); +// +// client.add(COLLECTION, docs); +// +// client.commit(COLLECTION); +// +// SolrInputDocument doc3 = new SolrInputDocument(); +// doc3.addField("id", id3); +// doc3.addField("text", "some test three " + tag); +// +// SolrInputDocument doc4 = new SolrInputDocument(); +// doc4.addField("id", id4); +// doc4.addField("text", "some test four " + tag); +// +// SolrInputDocument doc5 = new SolrInputDocument(); +// doc5.addField("id", id5); +// doc5.addField("text", "some test five " + tag); +// +// SolrInputDocument doc6 = new SolrInputDocument(); +// doc6.addField("id", id6); +// doc6.addField("text", "some test six " + tag); +// +// SolrInputDocument doc7 = new SolrInputDocument(); +// doc7.addField("id", id7); +// doc7.addField("text", "some test seven " + tag); +// +// client.add(COLLECTION, doc3); +// client.add(COLLECTION, doc4); +// client.add(COLLECTION, doc5); +// client.add(COLLECTION, doc6); +// client.add(COLLECTION, doc7); +// +// client.commit(COLLECTION); +// } +//} 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 e0af7eaeb612..f8060eedd8b7 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 @@ -20,10 +20,13 @@ import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; import java.io.ByteArrayOutputStream; import java.lang.invoke.MethodHandles; +import java.util.Arrays; import java.util.HashMap; 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; @@ -43,13 +46,15 @@ import org.junit.BeforeClass; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testcontainers.kafka.KafkaContainer; +import org.testcontainers.utility.DockerImageName; @ThreadLeakFilters( defaultFilters = true, filters = { - SolrIgnoredThreadsFilter.class, - QuickPatchThreadsFilter.class, - SolrKafkaTestsIgnoredThreadsFilter.class + SolrIgnoredThreadsFilter.class, + QuickPatchThreadsFilter.class, + SolrKafkaTestsIgnoredThreadsFilter.class }) @ThreadLeakLingering(linger = 5000) @SuppressForbidden(reason = "test") @@ -59,8 +64,8 @@ public class ZkConfigIntegrationTest extends SolrCloudTestCase { static final String VERSION_FIELD = "_version_"; - private static final int NUM_BROKERS = 1; - public static EmbeddedKafkaCluster kafkaCluster; + // Replaced legacy EmbeddedKafkaCluster wrapper with native Testcontainers orchestration + public static KafkaContainer kafkaContainer; protected static volatile MiniSolrCloudCluster solrCluster1; protected static volatile MiniSolrCloudCluster solrCluster2; @@ -80,24 +85,23 @@ public static void beforeSolrAndKafkaIntegrationTest() throws Exception { 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); + // Spin up an isolated Kafka 4.3.1 broker running purely in KRaft mode + kafkaContainer = new KafkaContainer(DockerImageName.parse("apache/kafka:4.3.1")); + kafkaContainer.start(); + + 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(Arrays.asList( + new NewTopic(TOPIC1, 1, (short) 1), + new NewTopic(TOPIC2, 1, (short) 1) + )).all().get(); + } Properties props = new Properties(); @@ -105,10 +109,10 @@ public String bootstrapServers() { 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 +133,17 @@ public String bootstrapServers() { 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 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 +174,17 @@ public static void afterSolrAndKafkaIntegrationTest() throws Exception { consumer2.shutdown(); } - if (kafkaCluster != null) { + if (kafkaContainer != null) { try { - kafkaCluster.stop(); + kafkaContainer.stop(); } catch (Exception e) { - log.error("Exception stopping Kafka cluster", e); + log.error("Exception stopping Kafka container", e); } } solrCluster1 = null; solrCluster2 = null; - kafkaCluster = null; + kafkaContainer = null; consumer1 = null; consumer2 = null; } @@ -207,7 +206,6 @@ public void testConfigFromZkPickedUp() throws Exception { doc.addField("text", "some test"); client.add(COLLECTION, doc); - client.commit(COLLECTION); System.out.println("Sent producer record"); @@ -220,6 +218,7 @@ public void testConfigFromZkPickedUp() throws Exception { results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); if (results.getResults().getNumFound() == 1) { foundUpdates = true; + break; } else { Thread.sleep(100); } @@ -236,7 +235,6 @@ public void testConfigFromZkPickedUp() throws Exception { doc.addField("text", "some test2"); client.add(COLLECTION, doc); - client.commit(COLLECTION); System.out.println("Sent producer record"); @@ -249,6 +247,7 @@ public void testConfigFromZkPickedUp() throws Exception { results = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); if (results.getResults().getNumFound() == 1) { foundUpdates = true; + break; } else { Thread.sleep(100); } From ffb603d95725be59a9464262f5e10bf35b32cdfe Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 4 Jul 2026 22:03:31 +0530 Subject: [PATCH 09/15] test runs fine --- ...ndKafkaMultiCollectionIntegrationTest.java | 729 +++++++++--------- .../manager/SolrAndKafkaReindexTest.java | 618 +++++++-------- 2 files changed, 680 insertions(+), 667 deletions(-) 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 e66d00cc0c84..a569105925e3 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 @@ -1,361 +1,368 @@ -///* -// * 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 static org.apache.solr.crossdc.common.KafkaCrossDcConf.DEFAULT_MAX_REQUEST_SIZE; -//import static org.apache.solr.crossdc.common.KafkaCrossDcConf.INDEX_UNMIRRORABLE_DOCS; -// -//import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters; -//import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; -//import java.lang.invoke.MethodHandles; -//import java.util.ArrayList; -//import java.util.HashMap; -//import java.util.List; -//import java.util.Map; -//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.lucene.tests.util.QuickPatchThreadsFilter; -//import org.apache.solr.SolrIgnoredThreadsFilter; -//import org.apache.solr.client.solrj.SolrClient; -//import org.apache.solr.client.solrj.impl.CloudSolrClient; -//import org.apache.solr.client.solrj.request.CollectionAdminRequest; -//import org.apache.solr.client.solrj.request.SolrQuery; -//import org.apache.solr.client.solrj.response.QueryResponse; -//import org.apache.solr.cloud.MiniSolrCloudCluster; -//import org.apache.solr.cloud.SolrCloudTestCase; -//import org.apache.solr.common.SolrInputDocument; -//import org.apache.solr.common.cloud.CollectionProperties; -//import org.apache.solr.common.util.ExecutorUtil; -//import org.apache.solr.common.util.ObjectReleaseTracker; -//import org.apache.solr.common.util.SolrNamedThreadFactory; -//import org.apache.solr.crossdc.common.KafkaCrossDcConf; -//import org.apache.solr.crossdc.manager.consumer.Consumer; -//import org.apache.solr.crossdc.manager.consumer.Util; -//import org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter; -//import org.junit.After; -//import org.junit.Before; -//import org.junit.BeforeClass; -//import org.junit.Ignore; -//import org.junit.Test; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -// -//@ThreadLeakFilters( -// defaultFilters = true, -// filters = { -// SolrIgnoredThreadsFilter.class, -// QuickPatchThreadsFilter.class, -// SolrKafkaTestsIgnoredThreadsFilter.class -// }) -//@ThreadLeakLingering(linger = 5000) -//@Ignore("This test relies on collecton 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; -// -// protected volatile MiniSolrCloudCluster solrCluster1; -// protected volatile MiniSolrCloudCluster solrCluster2; -// -// protected static volatile Consumer consumer; -// -// private static final String TOPIC = "topic1"; -// -// private static final String COLLECTION = "collection1"; -// private static final String ALT_COLLECTION = "collection2"; -// -// @BeforeClass -// public static void beforeAll() { -// SolrAndKafkaIntegrationTest.ensureCompatibleLocale(); -// } -// -// @Before -// public void beforeSolrAndKafkaIntegrationTest() throws Exception { -// System.setProperty(KafkaCrossDcConf.PORT, "-1"); -// 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(); -// -// kafkaCluster.createTopic(TOPIC, 1, 1); -// -// // 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.bootstrapServers", kafkaCluster.bootstrapServers()); -// System.setProperty(INDEX_UNMIRRORABLE_DOCS, "false"); -// -// solrCluster1 = -// configureCluster(1).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); -// -// CollectionAdminRequest.Create create = -// CollectionAdminRequest.createCollection(COLLECTION, "conf", 1, 1); -// solrCluster1.getSolrClient().request(create); -// solrCluster1.waitForActiveCollection(COLLECTION, 1, 1); -// -// solrCluster2 = -// configureCluster(1).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); -// -// CollectionAdminRequest.Create create2 = -// CollectionAdminRequest.createCollection(COLLECTION, "conf", 1, 1); -// solrCluster2.getSolrClient().request(create2); -// solrCluster2.waitForActiveCollection(COLLECTION, 1, 1); -// -// // 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); -// // Reloading the collection -// CollectionAdminRequest.Reload reloadRequest = -// CollectionAdminRequest.reloadCollection(COLLECTION); -// reloadRequest.process(solrCluster1.getSolrClient()); -// -// String bootstrapServers = kafkaCluster.bootstrapServers(); -// log.info("bootstrapServers={}", bootstrapServers); -// -// Map 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.MAX_REQUEST_SIZE_BYTES, MAX_DOC_SIZE_BYTES); -// consumer.start(properties); -// } -// -// @After -// public void afterSolrAndKafkaIntegrationTest() throws Exception { -// ObjectReleaseTracker.clear(); -// -// Util.printKafkaInfo(kafkaCluster.bootstrapServers(), "SolrCrossDCConsumer"); -// -// if (solrCluster1 != null) { -// solrCluster1.getZkServer().getZkClient().printLayoutToStream(System.out); -// solrCluster1.shutdown(); -// } -// if (solrCluster2 != null) { -// solrCluster2.getZkServer().getZkClient().printLayoutToStream(System.out); -// solrCluster2.shutdown(); -// } -// -// 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() { -// SolrInputDocument doc = new SolrInputDocument(); -// doc.addField("id", String.valueOf(System.nanoTime())); -// doc.addField("text", "some test"); -// return doc; -// } -// -// private void assertCluster2EventuallyHasDocs(String collection, String query, int expectedNumDocs) -// throws Exception { -// assertClusterEventuallyHasDocs( -// solrCluster2.getSolrClient(), collection, query, expectedNumDocs); -// } -// -// @Test -// public void testFullCloudToCloudMultiCollection() throws Exception { -// CollectionAdminRequest.Create create = -// CollectionAdminRequest.createCollection(ALT_COLLECTION, "conf", 1, 1); -// -// try { -// solrCluster1.getSolrClient().request(create); -// solrCluster1.waitForActiveCollection(ALT_COLLECTION, 1, 1); -// -// solrCluster2.getSolrClient().request(create); -// solrCluster2.waitForActiveCollection(ALT_COLLECTION, 1, 1); -// -// // 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); -// // Reloading the collection -// CollectionAdminRequest.Reload reloadRequest = -// CollectionAdminRequest.reloadCollection(ALT_COLLECTION); -// reloadRequest.process(solrCluster1.getSolrClient()); -// -// CloudSolrClient client = solrCluster1.getSolrClient(COLLECTION); -// -// SolrInputDocument doc1 = getDoc(); -// SolrInputDocument doc2 = getDoc(); -// SolrInputDocument doc3 = getDoc(); -// SolrInputDocument doc4 = getDoc(); -// SolrInputDocument doc5 = getDoc(); -// SolrInputDocument doc6 = getDoc(); -// SolrInputDocument doc7 = getDoc(); -// -// client.add(COLLECTION, doc1); -// client.add(ALT_COLLECTION, doc2); -// client.add(COLLECTION, doc3); -// client.add(COLLECTION, doc4); -// client.add(ALT_COLLECTION, doc5); -// client.add(ALT_COLLECTION, doc6); -// client.add(COLLECTION, doc7); -// -// client.commit(COLLECTION); -// client.commit(ALT_COLLECTION); -// -// System.out.println("Sent producer record"); -// -// assertCluster2EventuallyHasDocs(ALT_COLLECTION, "*:*", 3); -// assertCluster2EventuallyHasDocs(COLLECTION, "*:*", 4); -// -// } finally { -// CollectionAdminRequest.Delete delete = -// CollectionAdminRequest.deleteCollection(ALT_COLLECTION); -// solrCluster1.getSolrClient().request(delete); -// solrCluster2.getSolrClient().request(delete); -// } -// } -// -// @Test -// @Ignore("Heavy test that was written to stress test and needs to be tuned for regular runs") -// public void testParallelUpdatesToMultiCollections() throws Exception { -// CollectionAdminRequest.Create create = -// CollectionAdminRequest.createCollection(ALT_COLLECTION, "conf", 1, 1); -// -// try { -// solrCluster1.getSolrClient().request(create); -// solrCluster1.waitForActiveCollection(ALT_COLLECTION, 1, 1); -// -// solrCluster2.getSolrClient().request(create); -// solrCluster2.waitForActiveCollection(ALT_COLLECTION, 1, 1); -// -// // 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); -// // Reloading the collection -// CollectionAdminRequest.Reload reloadRequest = -// CollectionAdminRequest.reloadCollection(ALT_COLLECTION); -// reloadRequest.process(solrCluster1.getSolrClient()); -// -// ExecutorService executorService = -// ExecutorUtil.newMDCAwareFixedThreadPool(24, new SolrNamedThreadFactory("test")); -// List> futures = new ArrayList<>(); -// -// CloudSolrClient client1 = solrCluster1.getSolrClient(COLLECTION); -// -// // Prepare and send N updates to COLLECTION and N updates to ALT_COLLECTION in parallel -// int updates = 1500; -// for (int i = 0; i < updates; i++) { -// final int docIdForCollection = i; -// final int docIdForAltCollection = i + updates; -// -// Future futureForCollection = -// executorService.submit( -// () -> { -// try { -// SolrInputDocument doc = new SolrInputDocument(); -// doc.addField("id", String.valueOf(docIdForCollection)); -// doc.addField("text", "parallel test for COLLECTION"); -// client1.add(COLLECTION, doc); -// return true; -// } catch (Exception e) { -// log.error("Exception while adding doc to COLLECTION", e); -// return false; -// } -// }); -// -// Future futureForAltCollection = -// executorService.submit( -// () -> { -// try { -// SolrInputDocument doc = new SolrInputDocument(); -// doc.addField("id", String.valueOf(docIdForAltCollection)); -// doc.addField("text", "parallel test for ALT_COLLECTION"); -// client1.add(ALT_COLLECTION, doc); -// return true; -// } catch (Exception e) { -// log.error("Exception while adding doc to ALT_COLLECTION", e); -// return false; -// } -// }); -// -// futures.add(futureForCollection); -// futures.add(futureForAltCollection); -// } -// -// // Wait for all updates to complete -// executorService.shutdown(); -// if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) { -// executorService.shutdownNow(); -// } -// -// // Check if all updates were successful -// for (Future future : futures) { -// assertTrue(future.get()); -// } -// -// client1.commit(COLLECTION); -// client1.commit(ALT_COLLECTION); -// -// // Check if these documents are correctly reflected in the second cluster -// assertCluster2EventuallyHasDocs(ALT_COLLECTION, "*:*", updates); -// assertCluster2EventuallyHasDocs(COLLECTION, "*:*", updates); -// -// } finally { -// CollectionAdminRequest.Delete delete = -// CollectionAdminRequest.deleteCollection(ALT_COLLECTION); -// solrCluster1.getSolrClient().request(delete); -// solrCluster2.getSolrClient().request(delete); -// } -// } -// -// private void assertClusterEventuallyHasDocs( -// SolrClient client, String collection, String query, int expectedNumDocs) throws Exception { -// QueryResponse results = null; -// boolean foundUpdates = false; -// for (int i = 0; i < 1000; i++) { -// client.commit(collection); -// results = client.query(collection, new SolrQuery(query)); -// if (results.getResults().getNumFound() == expectedNumDocs) { -// foundUpdates = true; -// } else { -// Thread.sleep(100); -// } -// } -// -// assertTrue("results=" + results, foundUpdates); -// } -//} +/* + * 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 static org.apache.solr.crossdc.common.KafkaCrossDcConf.DEFAULT_MAX_REQUEST_SIZE; +import static org.apache.solr.crossdc.common.KafkaCrossDcConf.INDEX_UNMIRRORABLE_DOCS; + +import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters; +import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; +import java.lang.invoke.MethodHandles; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +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; +import org.apache.solr.client.solrj.impl.CloudSolrClient; +import org.apache.solr.client.solrj.request.CollectionAdminRequest; +import org.apache.solr.client.solrj.request.SolrQuery; +import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.cloud.MiniSolrCloudCluster; +import org.apache.solr.cloud.SolrCloudTestCase; +import org.apache.solr.common.SolrInputDocument; +import org.apache.solr.common.cloud.CollectionProperties; +import org.apache.solr.common.util.ExecutorUtil; +import org.apache.solr.common.util.ObjectReleaseTracker; +import org.apache.solr.common.util.SolrNamedThreadFactory; +import org.apache.solr.crossdc.common.KafkaCrossDcConf; +import org.apache.solr.crossdc.manager.consumer.Consumer; +import org.apache.solr.crossdc.manager.consumer.Util; +import org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testcontainers.kafka.KafkaContainer; +import org.testcontainers.utility.DockerImageName; + +@ThreadLeakFilters( + defaultFilters = true, + filters = { + SolrIgnoredThreadsFilter.class, + QuickPatchThreadsFilter.class, + SolrKafkaTestsIgnoredThreadsFilter.class + }) +@ThreadLeakLingering(linger = 5000) +@Ignore("This test relies on collecton 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 KafkaContainer kafkaContainer; + + protected volatile MiniSolrCloudCluster solrCluster1; + protected volatile MiniSolrCloudCluster solrCluster2; + + protected static volatile Consumer consumer; + + private static final String TOPIC = "topic1"; + + private static final String COLLECTION = "collection1"; + private static final String ALT_COLLECTION = "collection2"; + + @BeforeClass + public static void beforeAll() { + SolrAndKafkaIntegrationTest.ensureCompatibleLocale(); + } + + @Before + public void beforeSolrAndKafkaIntegrationTest() throws Exception { + System.setProperty(KafkaCrossDcConf.PORT, "-1"); + consumer = new Consumer(); + Properties config = new Properties(); + + kafkaContainer = new KafkaContainer(DockerImageName.parse("apache/kafka:4.3.1")); + kafkaContainer.start(); + + String bootstrapServers = kafkaContainer.getBootstrapServers(); + + // 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(Collections.singletonList( + 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.bootstrapServers", kafkaContainer.getBootstrapServers()); + System.setProperty(INDEX_UNMIRRORABLE_DOCS, "false"); + + solrCluster1 = + configureCluster(1).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); + + CollectionAdminRequest.Create create = + CollectionAdminRequest.createCollection(COLLECTION, "conf", 1, 1); + solrCluster1.getSolrClient().request(create); + solrCluster1.waitForActiveCollection(COLLECTION, 1, 1); + + solrCluster2 = + configureCluster(1).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); + + CollectionAdminRequest.Create create2 = + CollectionAdminRequest.createCollection(COLLECTION, "conf", 1, 1); + solrCluster2.getSolrClient().request(create2); + solrCluster2.waitForActiveCollection(COLLECTION, 1, 1); + + // 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); + // Reloading the collection + CollectionAdminRequest.Reload reloadRequest = + CollectionAdminRequest.reloadCollection(COLLECTION); + reloadRequest.process(solrCluster1.getSolrClient()); + + log.info("bootstrapServers={}", bootstrapServers); + + Map 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.MAX_REQUEST_SIZE_BYTES, MAX_DOC_SIZE_BYTES); + consumer.start(properties); + } + + @After + public void afterSolrAndKafkaIntegrationTest() throws Exception { + ObjectReleaseTracker.clear(); + + Util.printKafkaInfo(kafkaContainer.getBootstrapServers(), "SolrCrossDCConsumer"); + + if (solrCluster1 != null) { + solrCluster1.getZkServer().getZkClient().printLayoutToStream(System.out); + solrCluster1.shutdown(); + } + if (solrCluster2 != null) { + solrCluster2.getZkServer().getZkClient().printLayoutToStream(System.out); + solrCluster2.shutdown(); + } + + consumer.shutdown(); + consumer = null; + + if (kafkaContainer != null) { + try { + kafkaContainer.stop(); + kafkaContainer = null; + } catch (Exception e) { + log.error("Exception stopping Kafka container", e); + } + } + } + + private static SolrInputDocument getDoc() { + SolrInputDocument doc = new SolrInputDocument(); + doc.addField("id", String.valueOf(System.nanoTime())); + doc.addField("text", "some test"); + return doc; + } + + private void assertCluster2EventuallyHasDocs(String collection, String query, int expectedNumDocs) + throws Exception { + assertClusterEventuallyHasDocs( + solrCluster2.getSolrClient(), collection, query, expectedNumDocs); + } + + @Test + public void testFullCloudToCloudMultiCollection() throws Exception { + CollectionAdminRequest.Create create = + CollectionAdminRequest.createCollection(ALT_COLLECTION, "conf", 1, 1); + + try { + solrCluster1.getSolrClient().request(create); + solrCluster1.waitForActiveCollection(ALT_COLLECTION, 1, 1); + + solrCluster2.getSolrClient().request(create); + solrCluster2.waitForActiveCollection(ALT_COLLECTION, 1, 1); + + // 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); + // Reloading the collection + CollectionAdminRequest.Reload reloadRequest = + CollectionAdminRequest.reloadCollection(ALT_COLLECTION); + reloadRequest.process(solrCluster1.getSolrClient()); + + CloudSolrClient client = solrCluster1.getSolrClient(COLLECTION); + + SolrInputDocument doc1 = getDoc(); + SolrInputDocument doc2 = getDoc(); + SolrInputDocument doc3 = getDoc(); + SolrInputDocument doc4 = getDoc(); + SolrInputDocument doc5 = getDoc(); + SolrInputDocument doc6 = getDoc(); + SolrInputDocument doc7 = getDoc(); + + client.add(COLLECTION, doc1); + client.add(ALT_COLLECTION, doc2); + client.add(COLLECTION, doc3); + client.add(COLLECTION, doc4); + client.add(ALT_COLLECTION, doc5); + client.add(ALT_COLLECTION, doc6); + client.add(COLLECTION, doc7); + + client.commit(COLLECTION); + client.commit(ALT_COLLECTION); + + System.out.println("Sent producer record"); + + assertCluster2EventuallyHasDocs(ALT_COLLECTION, "*:*", 3); + assertCluster2EventuallyHasDocs(COLLECTION, "*:*", 4); + + } finally { + CollectionAdminRequest.Delete delete = + CollectionAdminRequest.deleteCollection(ALT_COLLECTION); + solrCluster1.getSolrClient().request(delete); + solrCluster2.getSolrClient().request(delete); + } + } + + @Test + @Ignore("Heavy test that was written to stress test and needs to be tuned for regular runs") + public void testParallelUpdatesToMultiCollections() throws Exception { + CollectionAdminRequest.Create create = + CollectionAdminRequest.createCollection(ALT_COLLECTION, "conf", 1, 1); + + try { + solrCluster1.getSolrClient().request(create); + solrCluster1.waitForActiveCollection(ALT_COLLECTION, 1, 1); + + solrCluster2.getSolrClient().request(create); + solrCluster2.waitForActiveCollection(ALT_COLLECTION, 1, 1); + + // 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); + // Reloading the collection + CollectionAdminRequest.Reload reloadRequest = + CollectionAdminRequest.reloadCollection(ALT_COLLECTION); + reloadRequest.process(solrCluster1.getSolrClient()); + + ExecutorService executorService = + ExecutorUtil.newMDCAwareFixedThreadPool(24, new SolrNamedThreadFactory("test")); + List> futures = new ArrayList<>(); + + CloudSolrClient client1 = solrCluster1.getSolrClient(COLLECTION); + + // Prepare and send N updates to COLLECTION and N updates to ALT_COLLECTION in parallel + int updates = 1500; + for (int i = 0; i < updates; i++) { + final int docIdForCollection = i; + final int docIdForAltCollection = i + updates; + + Future futureForCollection = + executorService.submit( + () -> { + try { + SolrInputDocument doc = new SolrInputDocument(); + doc.addField("id", String.valueOf(docIdForCollection)); + doc.addField("text", "parallel test for COLLECTION"); + client1.add(COLLECTION, doc); + return true; + } catch (Exception e) { + log.error("Exception while adding doc to COLLECTION", e); + return false; + } + }); + + Future futureForAltCollection = + executorService.submit( + () -> { + try { + SolrInputDocument doc = new SolrInputDocument(); + doc.addField("id", String.valueOf(docIdForAltCollection)); + doc.addField("text", "parallel test for ALT_COLLECTION"); + client1.add(ALT_COLLECTION, doc); + return true; + } catch (Exception e) { + log.error("Exception while adding doc to ALT_COLLECTION", e); + return false; + } + }); + + futures.add(futureForCollection); + futures.add(futureForAltCollection); + } + + // Wait for all updates to complete + executorService.shutdown(); + if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) { + executorService.shutdownNow(); + } + + // Check if all updates were successful + for (Future future : futures) { + assertTrue(future.get()); + } + + client1.commit(COLLECTION); + client1.commit(ALT_COLLECTION); + + // Check if these documents are correctly reflected in the second cluster + assertCluster2EventuallyHasDocs(ALT_COLLECTION, "*:*", updates); + assertCluster2EventuallyHasDocs(COLLECTION, "*:*", updates); + + } finally { + CollectionAdminRequest.Delete delete = + CollectionAdminRequest.deleteCollection(ALT_COLLECTION); + solrCluster1.getSolrClient().request(delete); + solrCluster2.getSolrClient().request(delete); + } + } + + private void assertClusterEventuallyHasDocs( + SolrClient client, String collection, String query, int expectedNumDocs) throws Exception { + QueryResponse results = null; + boolean foundUpdates = false; + for (int i = 0; i < 1000; i++) { + client.commit(collection); + results = client.query(collection, new SolrQuery(query)); + if (results.getResults().getNumFound() == expectedNumDocs) { + foundUpdates = true; + } else { + Thread.sleep(100); + } + } + + assertTrue("results=" + results, foundUpdates); + } +} 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 1b20e1a8ae42..5f2aaf2e0528 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 @@ -1,306 +1,312 @@ -///* -// * 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 com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters; -//import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; -//import java.io.IOException; -//import java.lang.invoke.MethodHandles; -//import java.util.ArrayList; -//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.lucene.tests.util.QuickPatchThreadsFilter; -//import org.apache.solr.SolrIgnoredThreadsFilter; -//import org.apache.solr.client.solrj.SolrServerException; -//import org.apache.solr.client.solrj.impl.CloudSolrClient; -//import org.apache.solr.client.solrj.request.CollectionAdminRequest; -//import org.apache.solr.client.solrj.request.SolrQuery; -//import org.apache.solr.client.solrj.response.QueryResponse; -//import org.apache.solr.cloud.MiniSolrCloudCluster; -//import org.apache.solr.cloud.SolrCloudTestCase; -//import org.apache.solr.common.SolrInputDocument; -//import org.apache.solr.common.util.ObjectReleaseTracker; -//import org.apache.solr.crossdc.common.KafkaCrossDcConf; -//import org.apache.solr.crossdc.manager.consumer.Consumer; -//import org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter; -//import org.junit.After; -//import org.junit.AfterClass; -//import org.junit.BeforeClass; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -// -//@ThreadLeakFilters( -// defaultFilters = true, -// filters = { -// SolrIgnoredThreadsFilter.class, -// QuickPatchThreadsFilter.class, -// SolrKafkaTestsIgnoredThreadsFilter.class -// }) -//@ThreadLeakLingering(linger = 5000) -//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; -// -// protected static volatile MiniSolrCloudCluster solrCluster1; -// protected static volatile MiniSolrCloudCluster solrCluster2; -// -// protected static volatile Consumer consumer; -// -// private static String TOPIC = "topic1"; -// -// private static String COLLECTION = "collection1"; -// -// @BeforeClass -// public static void beforeSolrAndKafkaIntegrationTest() throws Exception { -// SolrAndKafkaIntegrationTest.ensureCompatibleLocale(); -// -// System.setProperty(KafkaCrossDcConf.PORT, "-1"); -// consumer = 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(TOPIC, 1, 1); -// -// System.setProperty("solr.crossdc.topicName", TOPIC); -// System.setProperty("solr.crossdc.bootstrapServers", kafkaCluster.bootstrapServers()); -// -// solrCluster1 = -// configureCluster(3).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); -// -// CollectionAdminRequest.Create create = -// CollectionAdminRequest.createCollection(COLLECTION, "conf", 3, 2); -// solrCluster1.getSolrClient().request(create); -// solrCluster1.waitForActiveCollection(COLLECTION, 3, 6); -// -// solrCluster2 = -// configureCluster(3).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); -// -// CollectionAdminRequest.Create create2 = -// CollectionAdminRequest.createCollection(COLLECTION, "conf", 2, 3); -// solrCluster2.getSolrClient().request(create2); -// solrCluster2.waitForActiveCollection(COLLECTION, 2, 6); -// -// String bootstrapServers = kafkaCluster.bootstrapServers(); -// log.info("bootstrapServers={}", bootstrapServers); -// -// Map 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.MAX_POLL_RECORDS, 3); -// consumer.start(properties); -// } -// -// @AfterClass -// public static void afterSolrAndKafkaIntegrationTest() throws Exception { -// ObjectReleaseTracker.clear(); -// -// if (solrCluster1 != null) { -// try { -// solrCluster1.shutdown(); -// } catch (Exception e) { -// log.error("Exception shutting down solrCluster1, ignoring.", e); -// } -// } -// if (solrCluster2 != null) { -// try { -// solrCluster2.shutdown(); -// } catch (Exception e) { -// log.error("Exception shutting down solrCluster2, ignoring.", e); -// } -// } -// -// if (consumer != null) { -// 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; -// } -// -// @After -// @Override -// public void tearDown() throws Exception { -// super.tearDown(); -// solrCluster1.getSolrClient().deleteByQuery(COLLECTION, "*:*"); -// solrCluster2.getSolrClient().deleteByQuery(COLLECTION, "*:*"); -// solrCluster1.getSolrClient().commit(COLLECTION); -// solrCluster2.getSolrClient().commit(COLLECTION); -// } -// -// public void testFullCloudToCloud() throws Exception { -// CloudSolrClient client = solrCluster1.getSolrClient(COLLECTION); -// -// addDocs(client, "first"); -// -// QueryResponse results = null; -// boolean foundUpdates = false; -// for (int i = 0; i < 500; i++) { -// solrCluster2.getSolrClient().commit(COLLECTION); -// solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); -// results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); -// if (results.getResults().getNumFound() == 7) { -// foundUpdates = true; -// } else { -// Thread.sleep(100); -// } -// } -// -// assertTrue("results=" + results, foundUpdates); -// -// QueryResponse results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("first")); -// QueryResponse results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("first")); -// -// assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); -// assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); -// -// System.out.println("adding second docs"); -// addDocs(client, "second"); -// -// foundUpdates = false; -// for (int i = 0; i < 100; i++) { -// solrCluster2.getSolrClient().commit(COLLECTION); -// solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); -// results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); -// if (results.getResults().getNumFound() == 7) { -// foundUpdates = true; -// } else { -// Thread.sleep(200); -// } -// } -// -// System.out.println("Closed producer"); -// -// assertTrue("results=" + results, foundUpdates); -// System.out.println("Rest: " + results); -// -// results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); -// results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); -// -// assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); -// assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); -// -// addDocs(client, "third"); -// -// foundUpdates = false; -// for (int i = 0; i < 100; i++) { -// solrCluster2.getSolrClient().commit(COLLECTION); -// solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); -// results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); -// if (results.getResults().getNumFound() == 7) { -// foundUpdates = true; -// } else { -// Thread.sleep(100); -// } -// } -// -// System.out.println("Closed producer"); -// -// assertTrue("results=" + results, foundUpdates); -// System.out.println("Rest: " + results); -// -// results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); -// results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); -// -// assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); -// assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); -// } -// -// private void addDocs(CloudSolrClient client, String tag) throws SolrServerException, IOException { -// String id1 = "1"; -// String id2 = "2"; -// String id3 = "3"; -// String id4 = "4"; -// String id5 = "5"; -// String id6 = "6"; -// String id7 = "7"; -// -// SolrInputDocument doc1 = new SolrInputDocument(); -// doc1.addField("id", id1); -// doc1.addField("text", "some test one " + tag); -// -// SolrInputDocument doc2 = new SolrInputDocument(); -// doc2.addField("id", id2); -// doc2.addField("text", "some test two " + tag); -// -// List docs = new ArrayList(2); -// docs.add(doc1); -// docs.add(doc2); -// -// client.add(COLLECTION, docs); -// -// client.commit(COLLECTION); -// -// SolrInputDocument doc3 = new SolrInputDocument(); -// doc3.addField("id", id3); -// doc3.addField("text", "some test three " + tag); -// -// SolrInputDocument doc4 = new SolrInputDocument(); -// doc4.addField("id", id4); -// doc4.addField("text", "some test four " + tag); -// -// SolrInputDocument doc5 = new SolrInputDocument(); -// doc5.addField("id", id5); -// doc5.addField("text", "some test five " + tag); -// -// SolrInputDocument doc6 = new SolrInputDocument(); -// doc6.addField("id", id6); -// doc6.addField("text", "some test six " + tag); -// -// SolrInputDocument doc7 = new SolrInputDocument(); -// doc7.addField("id", id7); -// doc7.addField("text", "some test seven " + tag); -// -// client.add(COLLECTION, doc3); -// client.add(COLLECTION, doc4); -// client.add(COLLECTION, doc5); -// client.add(COLLECTION, doc6); -// client.add(COLLECTION, doc7); -// -// client.commit(COLLECTION); -// } -//} +/* + * 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 com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters; +import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +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; +import org.apache.solr.client.solrj.impl.CloudSolrClient; +import org.apache.solr.client.solrj.request.CollectionAdminRequest; +import org.apache.solr.client.solrj.request.SolrQuery; +import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.cloud.MiniSolrCloudCluster; +import org.apache.solr.cloud.SolrCloudTestCase; +import org.apache.solr.common.SolrInputDocument; +import org.apache.solr.common.util.ObjectReleaseTracker; +import org.apache.solr.crossdc.common.KafkaCrossDcConf; +import org.apache.solr.crossdc.manager.consumer.Consumer; +import org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testcontainers.kafka.KafkaContainer; +import org.testcontainers.utility.DockerImageName; + +@ThreadLeakFilters( + defaultFilters = true, + filters = { + SolrIgnoredThreadsFilter.class, + QuickPatchThreadsFilter.class, + SolrKafkaTestsIgnoredThreadsFilter.class + }) +@ThreadLeakLingering(linger = 5000) +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 KafkaContainer kafkaContainer; + + protected static volatile MiniSolrCloudCluster solrCluster1; + protected static volatile MiniSolrCloudCluster solrCluster2; + + protected static volatile Consumer consumer; + + private static String TOPIC = "topic1"; + + private static String COLLECTION = "collection1"; + + @BeforeClass + public static void beforeSolrAndKafkaIntegrationTest() throws Exception { + SolrAndKafkaIntegrationTest.ensureCompatibleLocale(); + + System.setProperty(KafkaCrossDcConf.PORT, "-1"); + consumer = new Consumer(); + + Properties config = new Properties(); + config.put("unclean.leader.election.enable", "true"); + config.put("enable.partition.eof", "false"); + + kafkaContainer = new KafkaContainer(DockerImageName.parse("apache/kafka:4.3.1")); + kafkaContainer.start(); + + String bootstrapServers = kafkaContainer.getBootstrapServers(); + + // 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(Collections.singletonList( + new NewTopic(TOPIC, 3, (short) 1) + )).all().get(); + } + + System.setProperty("solr.crossdc.topicName", TOPIC); + System.setProperty("solr.crossdc.bootstrapServers", kafkaContainer.getBootstrapServers()); + + solrCluster1 = + configureCluster(3).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); + + CollectionAdminRequest.Create create = + CollectionAdminRequest.createCollection(COLLECTION, "conf", 3, 2); + solrCluster1.getSolrClient().request(create); + solrCluster1.waitForActiveCollection(COLLECTION, 3, 6); + + solrCluster2 = + configureCluster(3).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); + + CollectionAdminRequest.Create create2 = + CollectionAdminRequest.createCollection(COLLECTION, "conf", 2, 3); + solrCluster2.getSolrClient().request(create2); + solrCluster2.waitForActiveCollection(COLLECTION, 2, 6); + + log.info("bootstrapServers={}", bootstrapServers); + + Map 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.MAX_POLL_RECORDS, 3); + consumer.start(properties); + } + + @AfterClass + public static void afterSolrAndKafkaIntegrationTest() throws Exception { + ObjectReleaseTracker.clear(); + + if (solrCluster1 != null) { + try { + solrCluster1.shutdown(); + } catch (Exception e) { + log.error("Exception shutting down solrCluster1, ignoring.", e); + } + } + if (solrCluster2 != null) { + try { + solrCluster2.shutdown(); + } catch (Exception e) { + log.error("Exception shutting down solrCluster2, ignoring.", e); + } + } + + if (consumer != null) { + consumer.shutdown(); + } + + if (kafkaContainer != null) { + try { + kafkaContainer.stop(); + } catch (Exception e) { + log.error("Exception stopping Kafka container", e); + } + } + + solrCluster1 = null; + solrCluster2 = null; + kafkaContainer = null; + consumer = null; + } + + @After + @Override + public void tearDown() throws Exception { + super.tearDown(); + solrCluster1.getSolrClient().deleteByQuery(COLLECTION, "*:*"); + solrCluster2.getSolrClient().deleteByQuery(COLLECTION, "*:*"); + solrCluster1.getSolrClient().commit(COLLECTION); + solrCluster2.getSolrClient().commit(COLLECTION); + } + + public void testFullCloudToCloud() throws Exception { + CloudSolrClient client = solrCluster1.getSolrClient(COLLECTION); + + addDocs(client, "first"); + + QueryResponse results = null; + boolean foundUpdates = false; + for (int i = 0; i < 500; i++) { + solrCluster2.getSolrClient().commit(COLLECTION); + solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); + results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); + if (results.getResults().getNumFound() == 7) { + foundUpdates = true; + } else { + Thread.sleep(100); + } + } + + assertTrue("results=" + results, foundUpdates); + + QueryResponse results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("first")); + QueryResponse results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("first")); + + assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); + assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); + + System.out.println("adding second docs"); + addDocs(client, "second"); + + foundUpdates = false; + for (int i = 0; i < 100; i++) { + solrCluster2.getSolrClient().commit(COLLECTION); + solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); + results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); + if (results.getResults().getNumFound() == 7) { + foundUpdates = true; + } else { + Thread.sleep(200); + } + } + + System.out.println("Closed producer"); + + assertTrue("results=" + results, foundUpdates); + System.out.println("Rest: " + results); + + results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); + results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:second")); + + assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); + assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); + + addDocs(client, "third"); + + foundUpdates = false; + for (int i = 0; i < 100; i++) { + solrCluster2.getSolrClient().commit(COLLECTION); + solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); + results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); + if (results.getResults().getNumFound() == 7) { + foundUpdates = true; + } else { + Thread.sleep(100); + } + } + + System.out.println("Closed producer"); + + assertTrue("results=" + results, foundUpdates); + System.out.println("Rest: " + results); + + results1 = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); + results2 = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("text:third")); + + assertEquals("results=" + results1, 7, results1.getResults().getNumFound()); + assertEquals("results=" + results2, 7, results2.getResults().getNumFound()); + } + + private void addDocs(CloudSolrClient client, String tag) throws SolrServerException, IOException { + String id1 = "1"; + String id2 = "2"; + String id3 = "3"; + String id4 = "4"; + String id5 = "5"; + String id6 = "6"; + String id7 = "7"; + + SolrInputDocument doc1 = new SolrInputDocument(); + doc1.addField("id", id1); + doc1.addField("text", "some test one " + tag); + + SolrInputDocument doc2 = new SolrInputDocument(); + doc2.addField("id", id2); + doc2.addField("text", "some test two " + tag); + + List docs = new ArrayList(2); + docs.add(doc1); + docs.add(doc2); + + client.add(COLLECTION, docs); + + client.commit(COLLECTION); + + SolrInputDocument doc3 = new SolrInputDocument(); + doc3.addField("id", id3); + doc3.addField("text", "some test three " + tag); + + SolrInputDocument doc4 = new SolrInputDocument(); + doc4.addField("id", id4); + doc4.addField("text", "some test four " + tag); + + SolrInputDocument doc5 = new SolrInputDocument(); + doc5.addField("id", id5); + doc5.addField("text", "some test five " + tag); + + SolrInputDocument doc6 = new SolrInputDocument(); + doc6.addField("id", id6); + doc6.addField("text", "some test six " + tag); + + SolrInputDocument doc7 = new SolrInputDocument(); + doc7.addField("id", id7); + doc7.addField("text", "some test seven " + tag); + + client.add(COLLECTION, doc3); + client.add(COLLECTION, doc4); + client.add(COLLECTION, doc5); + client.add(COLLECTION, doc6); + client.add(COLLECTION, doc7); + + client.commit(COLLECTION); + } +} From 31729f87763543919c716249121c645496f72b2d Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 4 Jul 2026 22:14:02 +0530 Subject: [PATCH 10/15] minor changes --- .../crossdc/manager/DeleteByQueryToIdTest.java | 3 +-- .../crossdc/manager/RetryQueueIntegrationTest.java | 4 ++-- .../manager/SolrAndKafkaIntegrationTest.java | 2 +- ...SolrAndKafkaMultiCollectionIntegrationTest.java | 5 ++--- .../crossdc/manager/SolrAndKafkaReindexTest.java | 5 ++--- .../crossdc/manager/ZkConfigIntegrationTest.java | 14 +++++++------- solr/licenses/testcontainers-kafka-2.0.5.jar.sha1 | 1 + 7 files changed, 16 insertions(+), 18 deletions(-) create mode 100644 solr/licenses/testcontainers-kafka-2.0.5.jar.sha1 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 0b45268273d7..31e4b881e5c7 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 @@ -21,7 +21,6 @@ import java.io.ByteArrayOutputStream; import java.lang.invoke.MethodHandles; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -109,7 +108,7 @@ public static void beforeSolrAndKafkaIntegrationTest() throws Exception { // 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(Collections.singletonList( + adminClient.createTopics(List.of( new NewTopic(TOPIC, 3, (short) 1) )).all().get(); } 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 bbe2aeb59952..df769c96b9ed 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 @@ -20,8 +20,8 @@ import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; import java.lang.invoke.MethodHandles; import java.nio.file.Path; -import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.kafka.clients.admin.AdminClient; @@ -102,7 +102,7 @@ public static void beforeRetryQueueIntegrationTestTest() throws Exception { // 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(Collections.singletonList( + adminClient.createTopics(List.of( new NewTopic(TOPIC, 3, (short) 1) )).all().get(); } 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 07e56805a633..caa4c4a1eead 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 @@ -220,7 +220,7 @@ public void sendBatch( // 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(Collections.singletonList( + adminClient.createTopics(List.of( new NewTopic(TOPIC, 3, (short) 1) )).all().get(); } 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 a569105925e3..f6d45cd568f6 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 @@ -23,7 +23,6 @@ import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; import java.lang.invoke.MethodHandles; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -111,7 +110,7 @@ public void beforeSolrAndKafkaIntegrationTest() throws Exception { // 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(Collections.singletonList( + adminClient.createTopics(List.of( new NewTopic(TOPIC, 3, (short) 1) )).all().get(); } @@ -120,7 +119,7 @@ public void beforeSolrAndKafkaIntegrationTest() throws Exception { System.setProperty("solr.crossdc.enabled", "false"); // System.setProperty("solr.crossdc.topicName", TOPIC); - System.setProperty("solr.crossdc.bootstrapServers", kafkaContainer.getBootstrapServers()); + System.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS, kafkaContainer.getBootstrapServers()); System.setProperty(INDEX_UNMIRRORABLE_DOCS, "false"); solrCluster1 = 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 5f2aaf2e0528..d9e853a1b69f 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 @@ -21,7 +21,6 @@ import java.io.IOException; import java.lang.invoke.MethodHandles; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -96,13 +95,13 @@ public static void beforeSolrAndKafkaIntegrationTest() throws Exception { // 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(Collections.singletonList( + adminClient.createTopics(List.of( new NewTopic(TOPIC, 3, (short) 1) )).all().get(); } System.setProperty("solr.crossdc.topicName", TOPIC); - System.setProperty("solr.crossdc.bootstrapServers", kafkaContainer.getBootstrapServers()); + System.setProperty(KafkaCrossDcConf.BOOTSTRAP_SERVERS, kafkaContainer.getBootstrapServers()); solrCluster1 = configureCluster(3).addConfig("conf", getFile("configs/cloud-minimal/conf")).configure(); 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 f8060eedd8b7..81119eda40fe 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 @@ -20,8 +20,8 @@ import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; import java.io.ByteArrayOutputStream; import java.lang.invoke.MethodHandles; -import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.kafka.clients.admin.AdminClient; @@ -52,9 +52,9 @@ @ThreadLeakFilters( defaultFilters = true, filters = { - SolrIgnoredThreadsFilter.class, - QuickPatchThreadsFilter.class, - SolrKafkaTestsIgnoredThreadsFilter.class + SolrIgnoredThreadsFilter.class, + QuickPatchThreadsFilter.class, + SolrKafkaTestsIgnoredThreadsFilter.class }) @ThreadLeakLingering(linger = 5000) @SuppressForbidden(reason = "test") @@ -97,7 +97,7 @@ public static void beforeSolrAndKafkaIntegrationTest() throws Exception { Properties adminProps = new Properties(); adminProps.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); try (AdminClient adminClient = AdminClient.create(adminProps)) { - adminClient.createTopics(Arrays.asList( + adminClient.createTopics(List.of( new NewTopic(TOPIC1, 1, (short) 1), new NewTopic(TOPIC2, 1, (short) 1) )).all().get(); @@ -206,6 +206,7 @@ public void testConfigFromZkPickedUp() throws Exception { doc.addField("text", "some test"); client.add(COLLECTION, doc); + client.commit(COLLECTION); System.out.println("Sent producer record"); @@ -218,7 +219,6 @@ public void testConfigFromZkPickedUp() throws Exception { results = solrCluster2.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); if (results.getResults().getNumFound() == 1) { foundUpdates = true; - break; } else { Thread.sleep(100); } @@ -235,6 +235,7 @@ public void testConfigFromZkPickedUp() throws Exception { doc.addField("text", "some test2"); client.add(COLLECTION, doc); + client.commit(COLLECTION); System.out.println("Sent producer record"); @@ -247,7 +248,6 @@ public void testConfigFromZkPickedUp() throws Exception { results = solrCluster1.getSolrClient().query(COLLECTION, new SolrQuery("*:*")); if (results.getResults().getNumFound() == 1) { foundUpdates = true; - break; } else { Thread.sleep(100); } 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 000000000000..a6a443357318 --- /dev/null +++ b/solr/licenses/testcontainers-kafka-2.0.5.jar.sha1 @@ -0,0 +1 @@ +e37b7217b5024145be864f1088b10b32f8c2fef7 From 0e131e2f9c531e06eac45c8a912547de2c9542c8 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 4 Jul 2026 22:16:06 +0530 Subject: [PATCH 11/15] tidying up --- .../solr/crossdc/manager/DeleteByQueryToIdTest.java | 8 +++----- .../solr/crossdc/manager/RetryQueueIntegrationTest.java | 4 +--- .../crossdc/manager/SolrAndKafkaIntegrationTest.java | 4 +--- .../SolrAndKafkaMultiCollectionIntegrationTest.java | 4 +--- .../solr/crossdc/manager/SolrAndKafkaReindexTest.java | 4 +--- .../solr/crossdc/manager/ZkConfigIntegrationTest.java | 9 +++++---- 6 files changed, 12 insertions(+), 21 deletions(-) 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 31e4b881e5c7..e73ba6da645f 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; @@ -58,8 +60,6 @@ import org.testcontainers.kafka.KafkaContainer; import org.testcontainers.utility.DockerImageName; -import static org.apache.solr.crossdc.common.KafkaCrossDcConf.BOOTSTRAP_SERVERS; - @ThreadLeakFilters( defaultFilters = true, filters = { @@ -108,9 +108,7 @@ public static void beforeSolrAndKafkaIntegrationTest() throws Exception { // 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(); + adminClient.createTopics(List.of(new NewTopic(TOPIC, 3, (short) 1))).all().get(); } Properties props = new Properties(); 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 df769c96b9ed..3b43e9e02170 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 @@ -102,9 +102,7 @@ public static void beforeRetryQueueIntegrationTestTest() throws Exception { // 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(); + adminClient.createTopics(List.of(new NewTopic(TOPIC, 3, (short) 1))).all().get(); } System.setProperty("solr.crossdc.topicName", TOPIC); 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 caa4c4a1eead..2a416ac31cdd 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 @@ -220,9 +220,7 @@ public void sendBatch( // 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(); + adminClient.createTopics(List.of(new NewTopic(TOPIC, 3, (short) 1))).all().get(); } // Ensure small batches to test multi-partition ordering 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 f6d45cd568f6..274879868cc6 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 @@ -110,9 +110,7 @@ public void beforeSolrAndKafkaIntegrationTest() throws Exception { // 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(); + 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 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 d9e853a1b69f..06ad97e7f50b 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 @@ -95,9 +95,7 @@ public static void beforeSolrAndKafkaIntegrationTest() throws Exception { // 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(); + adminClient.createTopics(List.of(new NewTopic(TOPIC, 3, (short) 1))).all().get(); } System.setProperty("solr.crossdc.topicName", TOPIC); 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 81119eda40fe..8bbedf7c404d 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 @@ -97,10 +97,11 @@ public static void beforeSolrAndKafkaIntegrationTest() throws Exception { 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(); + adminClient + .createTopics( + List.of(new NewTopic(TOPIC1, 1, (short) 1), new NewTopic(TOPIC2, 1, (short) 1))) + .all() + .get(); } Properties props = new Properties(); From 27453226628f9803ecd73b56297c5a9663b7b67c Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 4 Jul 2026 22:44:34 +0530 Subject: [PATCH 12/15] no longer requires org.apache.kafka:kafka_2.13 --- gradle/libs.versions.toml | 2 -- solr/cross-dc-manager/build.gradle | 6 ---- solr/cross-dc-manager/gradle.lockfile | 36 +++---------------- solr/licenses/HdrHistogram-2.2.2.jar.sha1 | 1 - solr/licenses/argparse4j-0.7.0.jar.sha1 | 1 - .../commons-beanutils-1.11.0.jar.sha1 | 1 - .../commons-collections-3.2.2.jar.sha1 | 1 - solr/licenses/commons-digester-2.1.jar.sha1 | 1 - .../commons-validator-1.10.1.jar.sha1 | 1 - solr/licenses/hash4j-0.22.0.jar.sha1 | 1 - .../jackson-dataformat-csv-2.22.0.jar.sha1 | 1 - .../jackson-dataformat-yaml-2.22.0.jar.sha1 | 1 - .../kafka-coordinator-common-4.3.1.jar.sha1 | 1 - .../kafka-group-coordinator-4.3.1.jar.sha1 | 1 - ...kafka-group-coordinator-api-4.3.1.jar.sha1 | 1 - solr/licenses/kafka-metadata-4.3.1.jar.sha1 | 1 - solr/licenses/kafka-raft-4.3.1.jar.sha1 | 1 - solr/licenses/kafka-server-4.3.1.jar.sha1 | 1 - .../kafka-server-common-4.3.1.jar.sha1 | 1 - .../kafka-share-coordinator-4.3.1.jar.sha1 | 1 - solr/licenses/kafka-storage-4.3.1.jar.sha1 | 1 - .../licenses/kafka-storage-api-4.3.1.jar.sha1 | 1 - solr/licenses/kafka-tools-api-4.3.1.jar.sha1 | 1 - ...fka-transaction-coordinator-4.3.1.jar.sha1 | 1 - solr/licenses/kafka_2.13-4.3.1-test.jar.sha1 | 1 - solr/licenses/kafka_2.13-4.3.1.jar.sha1 | 1 - solr/licenses/scala-library-2.13.18.jar.sha1 | 1 - .../scala-logging_2.13-3.9.6.jar.sha1 | 1 - solr/licenses/scala-reflect-2.13.18.jar.sha1 | 1 - solr/licenses/snakeyaml-2.5.jar.sha1 | 1 - 30 files changed, 4 insertions(+), 67 deletions(-) delete mode 100644 solr/licenses/HdrHistogram-2.2.2.jar.sha1 delete mode 100644 solr/licenses/argparse4j-0.7.0.jar.sha1 delete mode 100644 solr/licenses/commons-beanutils-1.11.0.jar.sha1 delete mode 100644 solr/licenses/commons-collections-3.2.2.jar.sha1 delete mode 100644 solr/licenses/commons-digester-2.1.jar.sha1 delete mode 100644 solr/licenses/commons-validator-1.10.1.jar.sha1 delete mode 100644 solr/licenses/hash4j-0.22.0.jar.sha1 delete mode 100644 solr/licenses/jackson-dataformat-csv-2.22.0.jar.sha1 delete mode 100644 solr/licenses/jackson-dataformat-yaml-2.22.0.jar.sha1 delete mode 100644 solr/licenses/kafka-coordinator-common-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-group-coordinator-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-group-coordinator-api-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-metadata-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-raft-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-server-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-server-common-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-share-coordinator-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-storage-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-storage-api-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-tools-api-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka-transaction-coordinator-4.3.1.jar.sha1 delete mode 100644 solr/licenses/kafka_2.13-4.3.1-test.jar.sha1 delete mode 100644 solr/licenses/kafka_2.13-4.3.1.jar.sha1 delete mode 100644 solr/licenses/scala-library-2.13.18.jar.sha1 delete mode 100644 solr/licenses/scala-logging_2.13-3.9.6.jar.sha1 delete mode 100644 solr/licenses/scala-reflect-2.13.18.jar.sha1 delete mode 100644 solr/licenses/snakeyaml-2.5.jar.sha1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c06763b92553..ab398661c743 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -254,10 +254,8 @@ 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-kafka-streams-test = { module = "org.apache.kafka:kafka-streams-test-utils", 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" } apache-log4j-layout-templatejson = { module = "org.apache.logging.log4j:log4j-layout-template-json", version.ref = "apache-log4j" } diff --git a/solr/cross-dc-manager/build.gradle b/solr/cross-dc-manager/build.gradle index 580378f61617..5a34d70ae9ec 100644 --- a/solr/cross-dc-manager/build.gradle +++ b/solr/cross-dc-manager/build.gradle @@ -42,7 +42,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 @@ -79,11 +78,6 @@ dependencies { classifier = "test" } } - testRuntimeOnly(libs.apache.kafka.kafka213) { - artifact { - classifier = "test" - } - } testRuntimeOnly(libs.apache.kafka.server.common) { artifact { classifier = "test" diff --git a/solr/cross-dc-manager/gradle.lockfile b/solr/cross-dc-manager/gradle.lockfile index 0eeb3c55dfc0..4d29ea090598 100644 --- a/solr/cross-dc-manager/gradle.lockfile +++ b/solr/cross-dc-manager/gradle.lockfile @@ -5,15 +5,11 @@ 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.dynatrace.hash4j:hash4j:0.22.0=jarValidation,runtimeClasspath,runtimeLibs,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.dataformat:jackson-dataformat-yaml:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,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: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 @@ -41,7 +37,6 @@ com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=anno com.google.j2objc:j2objc-annotations:3.1=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.protobuf:protobuf-java-util:4.35.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.google.protobuf:protobuf-java:4.35.1=annotationProcessor,errorprone,jarValidation,runtimeClasspath,runtimeLibs,testAnnotationProcessor,testRuntimeClasspath -com.google.re2j:re2j:1.8=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.j256.simplemagic:simplemagic:1.17=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath com.jayway.jsonpath:json-path:3.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath com.lmax:disruptor:4.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath @@ -50,15 +45,10 @@ com.squareup.okhttp3:okhttp:5.4.0=jarValidation,runtimeClasspath,runtimeLibs,tes com.squareup.okio:okio-jvm:3.17.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.squareup.okio:okio:3.17.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.tdunning:t-digest:3.3=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath -com.typesafe.scala-logging:scala-logging_2.13:3.9.6=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 +com.yammer.metrics:metrics-core:2.2.0=jarValidation,testRuntimeClasspath commons-cli:commons-cli:1.11.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath commons-codec:commons-codec:1.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath -commons-collections:commons-collections:3.2.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -commons-digester:commons-digester:2.1=jarValidation,runtimeClasspath,runtimeLibs,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 @@ -126,8 +116,7 @@ junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy-agent:1.18.9=jarValidation,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.9=jarValidation,testRuntimeClasspath net.java.dev.jna:jna:5.19.1=jarValidation,testCompileClasspath,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.sf.jopt-simple:jopt-simple:5.0.4=jarValidation,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 @@ -137,20 +126,8 @@ org.apache.curator:curator-client:5.9.0=compileClasspath,jarValidation,runtimeCl 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:4.3.1=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath -org.apache.kafka:kafka-coordinator-common:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka-group-coordinator-api:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka-group-coordinator:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka-metadata:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka-raft:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka-server-common:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka-server:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka-share-coordinator:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka-storage-api:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka-storage:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.apache.kafka:kafka-server-common:4.3.1=jarValidation,testRuntimeClasspath org.apache.kafka:kafka-streams:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath -org.apache.kafka:kafka-tools-api:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka-transaction-coordinator:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.apache.kafka:kafka_2.13:4.3.1=jarValidation,runtimeClasspath,runtimeLibs,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 @@ -182,7 +159,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 @@ -224,7 +200,6 @@ org.glassfish.jersey.inject:jersey-hk2:4.0.2=jarValidation,runtimeClasspath,runt org.glassfish.jersey.media:jersey-media-json-jackson:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.glassfish.jersey:jersey-bom:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.hamcrest:hamcrest:3.0=jarValidation,testCompileClasspath,testRuntimeClasspath -org.hdrhistogram:HdrHistogram:2.2.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath org.javassist:javassist:3.30.2-GA=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib:2.2.21=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath org.jetbrains:annotations:26.1.0=jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath @@ -240,11 +215,9 @@ org.ow2.asm:asm-commons:9.10.1=jarValidation,runtimeClasspath,runtimeLibs,solrPl 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,testAnnotationProcessor -org.pcollections:pcollections:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath +org.pcollections:pcollections:4.0.2=jarValidation,testRuntimeClasspath org.rnorth.duct-tape:duct-tape:1.0.8=jarValidation,testCompileClasspath,testRuntimeClasspath org.rocksdb:rocksdbjni:10.1.3=jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath -org.scala-lang:scala-library:2.13.18=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -org.scala-lang:scala-reflect:2.13.18=jarValidation,runtimeClasspath,runtimeLibs,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 @@ -252,5 +225,4 @@ org.slf4j:slf4j-api:2.0.17=compileClasspath,jarValidation,runtimeClasspath,runti 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 -org.yaml:snakeyaml:2.5=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath empty=missingdoclet,packaging diff --git a/solr/licenses/HdrHistogram-2.2.2.jar.sha1 b/solr/licenses/HdrHistogram-2.2.2.jar.sha1 deleted file mode 100644 index 2c895841bce8..000000000000 --- a/solr/licenses/HdrHistogram-2.2.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -7959933ebcc0f05b2eaa5af0a0c8689fa257b15c 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 23beccf95885..000000000000 --- 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 b445b39655fe..000000000000 --- 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 3284fcae4138..000000000000 --- 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 0a4c66f0bb97..000000000000 --- 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 8a885b5ada9c..000000000000 --- a/solr/licenses/commons-validator-1.10.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -cdf5c2a69aad509c4db54786f19f1e1ccc471bcf diff --git a/solr/licenses/hash4j-0.22.0.jar.sha1 b/solr/licenses/hash4j-0.22.0.jar.sha1 deleted file mode 100644 index 80998cd1e482..000000000000 --- a/solr/licenses/hash4j-0.22.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -2d61bfb5b38469cb76141b06dc68d36a9007e9ad 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 14ad17bebbac..000000000000 --- a/solr/licenses/jackson-dataformat-csv-2.22.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -cb79c48fff4f42e970d16e26754ab8b33b569410 diff --git a/solr/licenses/jackson-dataformat-yaml-2.22.0.jar.sha1 b/solr/licenses/jackson-dataformat-yaml-2.22.0.jar.sha1 deleted file mode 100644 index 38f8a6e89319..000000000000 --- a/solr/licenses/jackson-dataformat-yaml-2.22.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e3d91ae7c7f0b317889f97203678c8912cd2b12b diff --git a/solr/licenses/kafka-coordinator-common-4.3.1.jar.sha1 b/solr/licenses/kafka-coordinator-common-4.3.1.jar.sha1 deleted file mode 100644 index 35c957ede374..000000000000 --- a/solr/licenses/kafka-coordinator-common-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -27e9901c4b4933b9a744580a9a8a91065e431cd5 diff --git a/solr/licenses/kafka-group-coordinator-4.3.1.jar.sha1 b/solr/licenses/kafka-group-coordinator-4.3.1.jar.sha1 deleted file mode 100644 index a4214ba6b64f..000000000000 --- a/solr/licenses/kafka-group-coordinator-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -1ad370687f639f836c5a768b77a7ea356f1e8b09 diff --git a/solr/licenses/kafka-group-coordinator-api-4.3.1.jar.sha1 b/solr/licenses/kafka-group-coordinator-api-4.3.1.jar.sha1 deleted file mode 100644 index 653ef94857b3..000000000000 --- a/solr/licenses/kafka-group-coordinator-api-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -2317ae31b1180bb2978887898a50c001e48ace1a diff --git a/solr/licenses/kafka-metadata-4.3.1.jar.sha1 b/solr/licenses/kafka-metadata-4.3.1.jar.sha1 deleted file mode 100644 index 163471667734..000000000000 --- a/solr/licenses/kafka-metadata-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -fec51f3ee5706c5a5224746afdedc9c6e7873799 diff --git a/solr/licenses/kafka-raft-4.3.1.jar.sha1 b/solr/licenses/kafka-raft-4.3.1.jar.sha1 deleted file mode 100644 index 083c942fe8da..000000000000 --- a/solr/licenses/kafka-raft-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -be8dae1a27171b423948f66f044d4df76165ec72 diff --git a/solr/licenses/kafka-server-4.3.1.jar.sha1 b/solr/licenses/kafka-server-4.3.1.jar.sha1 deleted file mode 100644 index e650a65a43b0..000000000000 --- a/solr/licenses/kafka-server-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -444d58c3cd90af4811582cd8d2286e2d2091fb27 diff --git a/solr/licenses/kafka-server-common-4.3.1.jar.sha1 b/solr/licenses/kafka-server-common-4.3.1.jar.sha1 deleted file mode 100644 index 003f0ee4318a..000000000000 --- a/solr/licenses/kafka-server-common-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -81652cb85ce0f47a04835b628720e1396244987f diff --git a/solr/licenses/kafka-share-coordinator-4.3.1.jar.sha1 b/solr/licenses/kafka-share-coordinator-4.3.1.jar.sha1 deleted file mode 100644 index fb91663eccb0..000000000000 --- a/solr/licenses/kafka-share-coordinator-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -3d7ffdc85eb09f4a3c08a1fdd07dfd866f020e95 diff --git a/solr/licenses/kafka-storage-4.3.1.jar.sha1 b/solr/licenses/kafka-storage-4.3.1.jar.sha1 deleted file mode 100644 index 3ab8f007db9d..000000000000 --- a/solr/licenses/kafka-storage-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -85adcbdb5f4037967fe671369bc4eb614af3befa diff --git a/solr/licenses/kafka-storage-api-4.3.1.jar.sha1 b/solr/licenses/kafka-storage-api-4.3.1.jar.sha1 deleted file mode 100644 index 4f5c79859ec9..000000000000 --- a/solr/licenses/kafka-storage-api-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -6c096951eddf2cedcf9065e911118c87feda8288 diff --git a/solr/licenses/kafka-tools-api-4.3.1.jar.sha1 b/solr/licenses/kafka-tools-api-4.3.1.jar.sha1 deleted file mode 100644 index fbd7a859a1fa..000000000000 --- a/solr/licenses/kafka-tools-api-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -0ec3d126cbc01478c603e788b388c0dd2fcfade8 diff --git a/solr/licenses/kafka-transaction-coordinator-4.3.1.jar.sha1 b/solr/licenses/kafka-transaction-coordinator-4.3.1.jar.sha1 deleted file mode 100644 index c6bd4c2b6cbf..000000000000 --- a/solr/licenses/kafka-transaction-coordinator-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -67e9cdc4ddd54ff5c9311fa7fdc155f44dc7f42a diff --git a/solr/licenses/kafka_2.13-4.3.1-test.jar.sha1 b/solr/licenses/kafka_2.13-4.3.1-test.jar.sha1 deleted file mode 100644 index e448467337c5..000000000000 --- a/solr/licenses/kafka_2.13-4.3.1-test.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -449e8d7e450ee6caa3cd7c16cf2cd17b0cc3d678 diff --git a/solr/licenses/kafka_2.13-4.3.1.jar.sha1 b/solr/licenses/kafka_2.13-4.3.1.jar.sha1 deleted file mode 100644 index d27fc2a93e4a..000000000000 --- a/solr/licenses/kafka_2.13-4.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -cf616ec4e3898629625252d8f22fa1eb76dee30d 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 41da4274c9e4..000000000000 --- 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.6.jar.sha1 b/solr/licenses/scala-logging_2.13-3.9.6.jar.sha1 deleted file mode 100644 index 8a8115ffdc9a..000000000000 --- a/solr/licenses/scala-logging_2.13-3.9.6.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -f887ff84d87e3e9c89e28f8a4064bf74d1eacbb4 diff --git a/solr/licenses/scala-reflect-2.13.18.jar.sha1 b/solr/licenses/scala-reflect-2.13.18.jar.sha1 deleted file mode 100644 index 36a77a1bfe0a..000000000000 --- a/solr/licenses/scala-reflect-2.13.18.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -674f3bd39f5c528d575da69c42a5dff772b9b75c diff --git a/solr/licenses/snakeyaml-2.5.jar.sha1 b/solr/licenses/snakeyaml-2.5.jar.sha1 deleted file mode 100644 index 606eb00f8c3a..000000000000 --- a/solr/licenses/snakeyaml-2.5.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -2d53ddec134280cb384c1e35d094e5f71c1f2316 From 5b3a1a49d89f431cac9d2afd6e8e47b07f258aad Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 4 Jul 2026 22:55:07 +0530 Subject: [PATCH 13/15] cleanup --- solr/licenses/hash4j-LICENSE-ASL.txt | 202 --------------------------- solr/licenses/hash4j-NOTICE.txt | 1 - 2 files changed, 203 deletions(-) delete mode 100644 solr/licenses/hash4j-LICENSE-ASL.txt delete mode 100644 solr/licenses/hash4j-NOTICE.txt diff --git a/solr/licenses/hash4j-LICENSE-ASL.txt b/solr/licenses/hash4j-LICENSE-ASL.txt deleted file mode 100644 index d64569567334..000000000000 --- a/solr/licenses/hash4j-LICENSE-ASL.txt +++ /dev/null @@ -1,202 +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. diff --git a/solr/licenses/hash4j-NOTICE.txt b/solr/licenses/hash4j-NOTICE.txt deleted file mode 100644 index 8b137891791f..000000000000 --- a/solr/licenses/hash4j-NOTICE.txt +++ /dev/null @@ -1 +0,0 @@ - From 12de0e5d5dcdd29108daab40e7766aa0ee379e88 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sun, 5 Jul 2026 01:46:11 +0530 Subject: [PATCH 14/15] removed kafka-server-common also --- gradle/libs.versions.toml | 1 - solr/cross-dc-manager/build.gradle | 5 - solr/cross-dc-manager/gradle.lockfile | 4 - .../kafka-server-common-4.3.1-test.jar.sha1 | 1 - solr/licenses/kafka_2.13-LICENSE-ASL.txt | 345 ------- solr/licenses/kafka_2.13-NOTICE.txt | 863 ------------------ solr/licenses/metrics-core-2.2.0.jar.sha1 | 1 - solr/licenses/pcollections-4.0.2.jar.sha1 | 1 - 8 files changed, 1221 deletions(-) delete mode 100644 solr/licenses/kafka-server-common-4.3.1-test.jar.sha1 delete mode 100644 solr/licenses/kafka_2.13-LICENSE-ASL.txt delete mode 100644 solr/licenses/kafka_2.13-NOTICE.txt delete mode 100644 solr/licenses/metrics-core-2.2.0.jar.sha1 delete mode 100644 solr/licenses/pcollections-4.0.2.jar.sha1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ab398661c743..5f47501a2df0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -254,7 +254,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-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" } diff --git a/solr/cross-dc-manager/build.gradle b/solr/cross-dc-manager/build.gradle index 5a34d70ae9ec..d77c4b5d96b7 100644 --- a/solr/cross-dc-manager/build.gradle +++ b/solr/cross-dc-manager/build.gradle @@ -78,11 +78,6 @@ dependencies { classifier = "test" } } - testRuntimeOnly(libs.apache.kafka.server.common) { - artifact { - classifier = "test" - } - } } ext { diff --git a/solr/cross-dc-manager/gradle.lockfile b/solr/cross-dc-manager/gradle.lockfile index 4d29ea090598..22c8fb8805ef 100644 --- a/solr/cross-dc-manager/gradle.lockfile +++ b/solr/cross-dc-manager/gradle.lockfile @@ -45,7 +45,6 @@ com.squareup.okhttp3:okhttp:5.4.0=jarValidation,runtimeClasspath,runtimeLibs,tes com.squareup.okio:okio-jvm:3.17.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.squareup.okio:okio:3.17.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath com.tdunning:t-digest:3.3=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath -com.yammer.metrics:metrics-core:2.2.0=jarValidation,testRuntimeClasspath commons-cli:commons-cli:1.11.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,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 @@ -116,7 +115,6 @@ junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy-agent:1.18.9=jarValidation,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.9=jarValidation,testRuntimeClasspath net.java.dev.jna:jna:5.19.1=jarValidation,testCompileClasspath,testRuntimeClasspath -net.sf.jopt-simple:jopt-simple:5.0.4=jarValidation,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 @@ -126,7 +124,6 @@ org.apache.curator:curator-client:5.9.0=compileClasspath,jarValidation,runtimeCl 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:4.3.1=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath -org.apache.kafka:kafka-server-common:4.3.1=jarValidation,testRuntimeClasspath org.apache.kafka:kafka-streams:4.3.1=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 @@ -215,7 +212,6 @@ org.ow2.asm:asm-commons:9.10.1=jarValidation,runtimeClasspath,runtimeLibs,solrPl 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,testAnnotationProcessor -org.pcollections:pcollections:4.0.2=jarValidation,testRuntimeClasspath org.rnorth.duct-tape:duct-tape:1.0.8=jarValidation,testCompileClasspath,testRuntimeClasspath org.rocksdb:rocksdbjni:10.1.3=jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath org.semver4j:semver4j:6.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath diff --git a/solr/licenses/kafka-server-common-4.3.1-test.jar.sha1 b/solr/licenses/kafka-server-common-4.3.1-test.jar.sha1 deleted file mode 100644 index 4ac8c396579b..000000000000 --- a/solr/licenses/kafka-server-common-4.3.1-test.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -49781d7241f34746025ac1c35991ee48bdb305ad 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 a6fe25e5c8d8..000000000000 --- 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 c5c9b84e9320..000000000000 --- 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. -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 (tatu.saloranta@iki.fi), 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 antonello.pasella@gmail.com - -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..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/metrics-core-2.2.0.jar.sha1 b/solr/licenses/metrics-core-2.2.0.jar.sha1 deleted file mode 100644 index 1a5081cab8e3..000000000000 --- a/solr/licenses/metrics-core-2.2.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -f82c035cfa786d3cbec362c38c22a5f5b1bc8724 diff --git a/solr/licenses/pcollections-4.0.2.jar.sha1 b/solr/licenses/pcollections-4.0.2.jar.sha1 deleted file mode 100644 index 70291d3cd6b4..000000000000 --- a/solr/licenses/pcollections-4.0.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -c8398b4443deae11e6eaffbc04a371b4eb8f6b8e From 85432246e87371e95cae6777af26789e5fe5b4d6 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sun, 5 Jul 2026 01:54:34 +0530 Subject: [PATCH 15/15] tidy up --- solr/cross-dc-manager/build.gradle | 7 ------- 1 file changed, 7 deletions(-) diff --git a/solr/cross-dc-manager/build.gradle b/solr/cross-dc-manager/build.gradle index d77c4b5d96b7..b83bd1f7234c 100644 --- a/solr/cross-dc-manager/build.gradle +++ b/solr/cross-dc-manager/build.gradle @@ -88,13 +88,6 @@ ext { useSecurityManager = !Os.isFamily(Os.FAMILY_WINDOWS) } -afterEvaluate { - tasks.withType(Test).configureEach { - // Forces the property into the JVM arguments after the root build system sets it - systemProperties['tests.security.manager'] = 'false' - } -} - task run(type: JavaExec) { group = 'application' description = 'Run the main class with JavaExecTask'