Skip to content

Kafka Connect: Track Hive distribution runtime dependencies - #18660

Merged
kevinjqliu merged 2 commits into
apache:mainfrom
kevinjqliu:kevinjqliu-kafka-connect-hive-runtime-deps
Nov 13, 2026
Merged

kevinjqliu merged 2 commits into
apache:mainfrom
kevinjqliu:kevinjqliu-kafka-connect-hive-runtime-deps

Conversation

@kevinjqliu

@kevinjqliu kevinjqliu commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Adds runtime-deps.txt to Kafka Connect runtime's hive distribution. Follow up to #18019 which added the same to the main distribution.

Move existing main distribution's runtime-deps.txt from kafka-connect-runtime/runtime-deps.txt -> kafka-connect-runtime/main/runtime-deps.txt

runtime-deps.gradle now has trackRuntimeDeps(configuration, path), which kafka-connect calls once per distribution. Modules that don't call it still track runtimeClasspath in runtime-deps.txt, so other modules are unaffected. The hive check runs as part of checkRuntimeDeps, so CI's checkAllRuntimeDeps covers both.

main vs hive

Hive is main plus 95 deps (Hive Metastore, Hadoop client, and transitives like Jetty, Netty, DataNucleus, ZooKeeper, Kerby), and resolves commons-logging 1.3 instead of 1.2 and no stax-api. It also ships both logback-classic and slf4j-reload4j as SLF4J bindings. That's pre-existing, just visible now. Dependency and LICENSE/NOTICE changes are in #18663; this PR only tracks both distributions.

diff main/runtime-deps.txt hive/runtime-deps.txt
+aopalliance:aopalliance:1.0
+ch.qos.logback:logback-classic:1.2
+ch.qos.logback:logback-core:1.2
+ch.qos.reload4j:reload4j:1.2
+com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.22
+com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.22
+com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.22
+com.google.inject:guice:4.2
+com.jolbox:bonecp:0.8
+com.nimbusds:nimbus-jose-jwt:10.4
+commons-dbcp:commons-dbcp:1.4
-commons-logging:commons-logging:1.2
+commons-lang:commons-lang:2.6
+commons-logging:commons-logging:1.3
+io.dropwizard.metrics:metrics-json:3.1
+io.dropwizard.metrics:metrics-jvm:3.1
+io.netty:netty-all:4.2
+io.netty:netty-codec-classes-quic:4.2
+io.netty:netty-codec-haproxy:4.2
+io.netty:netty-codec-http3:4.2
+io.netty:netty-codec-memcache:4.2
+io.netty:netty-codec-mqtt:4.2
+io.netty:netty-codec-native-quic:4.2
+io.netty:netty-codec-redis:4.2
+io.netty:netty-codec-smtp:4.2
+io.netty:netty-codec-stomp:4.2
+io.netty:netty-codec-xml:4.2
+io.netty:netty-handler-ssl-ocsp:4.2
+io.netty:netty-transport-classes-io_uring:4.2
+io.netty:netty-transport-native-io_uring:4.2
+io.netty:netty-transport-rxtx:4.2
+io.netty:netty-transport-sctp:4.2
+io.netty:netty-transport-udt:4.2
+javax.inject:javax.inject:1
+javax.jdo:jdo-api:3.0
+javax.transaction:jta:1.1
-javax.xml.stream:stax-api:1.0-2
+javolution:javolution:5.5
+jline:jline:2.12
+joda-time:joda-time:2.8
+net.sf.opencsv:opencsv:2.3
+org.antlr:antlr-runtime:3.5
+org.apache.ant:ant-launcher:1.9
+org.apache.ant:ant:1.9
+org.apache.commons:commons-configuration2:2.10
+org.apache.curator:curator-client:5.2
+org.apache.curator:curator-framework:5.2
+org.apache.curator:curator-recipes:5.2
+org.apache.derby:derby:10.14
+org.apache.hadoop:hadoop-auth:3.4
+org.apache.hadoop:hadoop-client:3.4
+org.apache.hadoop:hadoop-hdfs-client:3.4
+org.apache.hadoop:hadoop-mapreduce-client-common:3.4
+org.apache.hadoop:hadoop-mapreduce-client-core:3.4
+org.apache.hadoop:hadoop-mapreduce-client-jobclient:3.4
+org.apache.hadoop:hadoop-yarn-api:3.4
+org.apache.hadoop:hadoop-yarn-client:3.4
+org.apache.hadoop:hadoop-yarn-common:3.4
+org.apache.hive.shims:hive-shims-0.23:2.3
+org.apache.hive.shims:hive-shims-common:2.3
+org.apache.hive.shims:hive-shims-scheduler:2.3
+org.apache.hive:hive-common:2.3
+org.apache.hive:hive-metastore:2.3
+org.apache.hive:hive-serde:2.3
+org.apache.hive:hive-shims:2.3
+org.apache.hive:hive-storage-api:2.4
+org.apache.kerby:kerb-core:2.0
+org.apache.kerby:kerb-crypto:2.0
+org.apache.kerby:kerb-util:2.0
+org.apache.kerby:kerby-asn1:2.0
+org.apache.kerby:kerby-config:2.0
+org.apache.kerby:kerby-pkix:2.0
+org.apache.kerby:kerby-util:2.0
+org.apache.thrift:libfb303:0.9
+org.apache.thrift:libthrift:0.14
+org.apache.tomcat.embed:tomcat-embed-core:8.5
+org.apache.tomcat:tomcat-annotations-api:8.5
+org.apache.yetus:audience-annotations:0.12
+org.apache.zookeeper:zookeeper-jute:3.8
+org.apache.zookeeper:zookeeper:3.8
+org.datanucleus:datanucleus-api-jdo:4.2
+org.datanucleus:datanucleus-core:4.1
+org.datanucleus:datanucleus-rdbms:4.1
+org.datanucleus:javax.jdo:3.2
+org.eclipse.jetty.websocket:websocket-api:9.4
+org.eclipse.jetty.websocket:websocket-client:9.4
+org.eclipse.jetty.websocket:websocket-common:9.4
+org.eclipse.jetty:jetty-client:9.4
+org.eclipse.jetty:jetty-http:9.4
+org.eclipse.jetty:jetty-io:9.4
+org.eclipse.jetty:jetty-security:9.4
+org.eclipse.jetty:jetty-servlet:9.4
+org.eclipse.jetty:jetty-util-ajax:9.4
+org.eclipse.jetty:jetty-util:9.4
+org.eclipse.jetty:jetty-webapp:9.4
+org.eclipse.jetty:jetty-xml:9.4
+org.jline:jline:3.9
+org.slf4j:slf4j-reload4j:1.7

Testing

./gradlew checkAllRuntimeDeps -DallModules=true passes, and ./gradlew generateRuntimeDeps -DallModules=true leaves every baseline unchanged. Removing a line from either baseline fails that baseline's check. ./gradlew :iceberg-kafka-connect:iceberg-kafka-connect-runtime:check passes, including the 14 integration tests against the installed main distribution.


AI Disclosure

  • Model: Claude Opus 5.5
  • Platform/Tool: GitHub Copilot
  • Human Oversight: [unknown - human to fill in]
  • Prompt Summary: Track the Kafka Connect main and hive distributions' runtime dependencies in separate baselines with a minimal diff, then replace the ext-based options with trackRuntimeDeps(configuration, path) per review

@kevinjqliu
kevinjqliu force-pushed the kevinjqliu-kafka-connect-hive-runtime-deps branch 2 times, most recently from 9d038d7 to 85dd7fe Compare October 26, 2026 21:41
Comment thread kafka-connect/build.gradle Resolved
Comment thread runtime-deps.gradle Resolved
@kevinjqliu
kevinjqliu marked this pull request as ready for review October 26, 2026 21:49
@kevinjqliu

Copy link
Copy Markdown
Contributor Author

@danielcweeks applying the same change in #18019 to the other kakfa connect distribution. See "main vs hive" to see the diff in dependencies bundled.

Please take a look when you get a chance!

I don't want to update LICENSE and NOTICE just yet, can do that in a follow up PR

Comment thread kafka-connect/build.gradle Outdated
Comment on lines +77 to +80
runtimeClasspath {
// keep the hive distribution a superset of main by resolving shared jars to the same versions
shouldResolveConsistentlyWith(hive)
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this + the kafka-connect/kafka-connect-runtime/main/LICENSE and kafka-connect/kafka-connect-runtime/main/runtime-deps.txt change is to make

hive = main + more deps

see 401b6f0

Comment thread runtime-deps.gradle Resolved
Comment thread runtime-deps.gradle Resolved
Comment thread runtime-deps.gradle Resolved
Comment thread kafka-connect/build.gradle Resolved
Comment thread kafka-connect/build.gradle Resolved
The Kafka Connect runtime ships main and hive distributions with separate
LICENSE and NOTICE files, but only the main distribution's runtime
dependencies were tracked. Keep a baseline next to each distribution's
LICENSE and NOTICE.

Generated-by: GitHub Copilot (Claude Opus 5.5)

Co-authored-by: Copilot App <[email protected]>
@kevinjqliu
kevinjqliu force-pushed the kevinjqliu-kafka-connect-hive-runtime-deps branch from d8bb7f4 to fff2c91 Compare November 12, 2026 20:44
@kevinjqliu
kevinjqliu marked this pull request as draft November 12, 2026 20:46
@kevinjqliu
kevinjqliu force-pushed the kevinjqliu-kafka-connect-hive-runtime-deps branch from fff2c91 to 4d933aa Compare November 12, 2026 21:23
@kevinjqliu kevinjqliu changed the title Kafka Connect: Track Hive distribution runtime dependencies separately Kafka Connect: Track Hive distribution runtime dependencies Nov 12, 2026
Replace passing options through ext before each apply with a
trackRuntimeDeps(configuration, path) function, so the call site is
explicit and order-independent. When trackRuntimeDeps is not called,
runtimeClasspath is still tracked in runtime-deps.txt.

Generated-by: GitHub Copilot (Claude Opus 5.5)

Co-authored-by: Copilot App <[email protected]>
@kevinjqliu
kevinjqliu force-pushed the kevinjqliu-kafka-connect-hive-runtime-deps branch from 4d933aa to 81c7047 Compare November 12, 2026 21:39
Comment on lines 256 to +258
apply from: "${rootDir}/runtime-deps.gradle"
trackRuntimeDeps(configurations.runtimeClasspath, 'main/runtime-deps.txt')
trackRuntimeDeps(configurations.hive, 'hive/runtime-deps.txt')

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i like this, this is the new way to run runtime-deps.gradle more than once and configurable

@kevinjqliu
kevinjqliu marked this pull request as ready for review November 12, 2026 22:08
@kevinjqliu

Copy link
Copy Markdown
Contributor Author

keeping this pr scoped to just the infra changes to create the 2 runtime-deps.txt files, for main and hive distributions.

Will modify the dependencies and content in #18663 and with the related LICENSE/NOTICE changes

@Fokko Fokko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for scoping it down, LGTM

@kevinjqliu

Copy link
Copy Markdown
Contributor Author

thanks for the review @Fokko, moving this forward so we can start working on the follow up PR to fix the LICENSE and NOTICE file.

@danielcweeks lmk if you have any concerns, I'm happy to make follow up changes

@kevinjqliu
kevinjqliu merged commit d1a4229 into apache:main Nov 13, 2026
42 of 43 checks passed
@kevinjqliu
kevinjqliu deleted the kevinjqliu-kafka-connect-hive-runtime-deps branch November 13, 2026 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants