Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions kafka/boil-config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,17 @@ java-devel = "24"
[versions."4.1.1".build-arguments]
scala-version = "2.13"
jmx-exporter-version = "1.3.0"

[versions."4.2.1".local-images]
java-base = "25"
java-devel = "25"
"kafka/kcat" = "1.7.0"
"kafka/kafka-opa-plugin" = "1.5.1"
# TODO: this is not used in this version but it's added
# to avoid major changes to the Kafka image build on short notice.
# Building this image is quick and in CI should not even be noticed.
"shared/reload4j" = "1.2.25"

[versions."4.2.1".build-arguments]
scala-version = "2.13"
jmx-exporter-version = "1.3.0"
67 changes: 67 additions & 0 deletions kafka/stackable/patches/4.2.1/0001-Add-CycloneDX-plugin.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
From 5ef351ca945bcaa8346ef066ba00fd9288a4f443 Mon Sep 17 00:00:00 2001
From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
Date: Wed, 13 May 2026 16:30:33 +0300
Subject: Add CycloneDX plugin

---
build.gradle | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)

diff --git a/build.gradle b/build.gradle
index c07cd3b047..effbe0f65d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -41,8 +41,53 @@ plugins {
id 'org.scoverage' version '8.1' apply false
id 'com.gradleup.shadow' version '8.3.9' apply false
id 'com.diffplug.spotless' version "8.0.0"
+ id 'org.cyclonedx.bom' version '3.2.4'
}

+cyclonedxBom {
+ // Specified the type of project being built. Defaults to 'library'
+ projectType = org.cyclonedx.model.Component.Type.APPLICATION
+ // Specified the version of the CycloneDX specification to use. Defaults to VERSION_16.
+ schemaVersion = org.cyclonedx.Version.VERSION_15
+ jsonOutput = file("build/reports/bom.json")
+ xmlOutput.unsetConvention()
+}
+
+// Exclude test components. This list needs to be checked and, if it changed, updated for every new Kafka version.
+// The list can be obtained by running `gradle projects | grep upgrade-system-tests`
+def skipCyclonedxProjects = [
+ ':streams:upgrade-system-tests-0110',
+ ':streams:upgrade-system-tests-10',
+ ':streams:upgrade-system-tests-11',
+ ':streams:upgrade-system-tests-20',
+ ':streams:upgrade-system-tests-21',
+ ':streams:upgrade-system-tests-22',
+ ':streams:upgrade-system-tests-23',
+ ':streams:upgrade-system-tests-24',
+ ':streams:upgrade-system-tests-25',
+ ':streams:upgrade-system-tests-26',
+ ':streams:upgrade-system-tests-27',
+ ':streams:upgrade-system-tests-28',
+ ':streams:upgrade-system-tests-30',
+ ':streams:upgrade-system-tests-31',
+ ':streams:upgrade-system-tests-32',
+ ':streams:upgrade-system-tests-33',
+ ':streams:upgrade-system-tests-34',
+ ':streams:upgrade-system-tests-35',
+ ':streams:upgrade-system-tests-36',
+ ':streams:upgrade-system-tests-37',
+ ':streams:upgrade-system-tests-38',
+ ':streams:upgrade-system-tests-39',
+ ':streams:upgrade-system-tests-40',
+ ':streams:upgrade-system-tests-41',
+]
+
+configure(subprojects.findAll { skipCyclonedxProjects.contains(it.path) }) {
+ tasks.named('cyclonedxDirectBom') {
+ enabled = false
+ }
+}
+
ext {
minClientJavaVersion = 11
minNonClientJavaVersion = 17
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
From e4e184668e99d71e2cbdebfd55ef4ba3322a6508 Mon Sep 17 00:00:00 2001
From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
Date: Wed, 13 May 2026 16:31:44 +0300
Subject: Change Gradle to use the Nexus Build Repo

---
build.gradle | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/build.gradle b/build.gradle
index effbe0f65d..bd840210bd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -18,7 +18,9 @@ import java.nio.charset.StandardCharsets

buildscript {
repositories {
- mavenCentral()
+ maven {
+ url 'https://build-repo.stackable.tech/repository/maven-public/'
+ }
}
apply from: "$rootDir/gradle/dependencies.gradle"

@@ -212,7 +214,9 @@ ext {
allprojects {

repositories {
- mavenCentral()
+ maven {
+ url 'https://build-repo.stackable.tech/repository/maven-public/'
+ }
}

dependencyUpdates {
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
From 915f1d9eb9c1fd7bf9c15a52a353c33475efa6a3 Mon Sep 17 00:00:00 2001
From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
Date: Fri, 29 May 2026 17:33:00 +0200
Subject: Build custom Stackable version

How it was done:

Replace in files in root dir (do not garble .git):

for d in $(ls -p|grep -v /); do find $d -type f -exec sed -i
's/4\.2\.1/4.2.1-stackable0.0.0-dev/g' {} +; done

Replace in all subdirs:

for d in $(ls -d */); do find $d -type f -exec sed -i
's/4\.2\.1/4.2.1-stackable0.0.0-dev/g' {} +; done
---
committer-tools/kafka-merge-pr.py | 2 +-
gradle.properties | 2 +-
streams/quickstart/java/pom.xml | 2 +-
.../java/src/main/resources/archetype-resources/pom.xml | 2 +-
streams/quickstart/pom.xml | 2 +-
tests/kafkatest/__init__.py | 2 +-
tests/kafkatest/version.py | 2 +-
7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/committer-tools/kafka-merge-pr.py b/committer-tools/kafka-merge-pr.py
index 92dabc607c..5611a8beeb 100755
--- a/committer-tools/kafka-merge-pr.py
+++ b/committer-tools/kafka-merge-pr.py
@@ -70,7 +70,7 @@ TEMP_BRANCH_PREFIX = "PR_TOOL"

DEV_BRANCH_NAME = "trunk"

-DEFAULT_FIX_VERSION = os.environ.get("DEFAULT_FIX_VERSION", "4.2.1")
+DEFAULT_FIX_VERSION = os.environ.get("DEFAULT_FIX_VERSION", "4.2.1-stackable0.0.0-dev")

ORIGINAL_HEAD = ""

diff --git a/gradle.properties b/gradle.properties
index 8dad15054c..27c124ca21 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -14,7 +14,7 @@
# limitations under the License.

group=org.apache.kafka
-version=4.2.1
+version=4.2.1-stackable0.0.0-dev
scalaVersion=2.13.17
# Adding swaggerVersion in gradle.properties to have a single version in place for swagger
swaggerVersion=2.2.39
diff --git a/streams/quickstart/java/pom.xml b/streams/quickstart/java/pom.xml
index 4930378053..41b602f98e 100644
--- a/streams/quickstart/java/pom.xml
+++ b/streams/quickstart/java/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.kafka</groupId>
<artifactId>streams-quickstart</artifactId>
- <version>4.2.1</version>
+ <version>4.2.1-stackable0.0.0-dev</version>
<relativePath>..</relativePath>
</parent>

diff --git a/streams/quickstart/java/src/main/resources/archetype-resources/pom.xml b/streams/quickstart/java/src/main/resources/archetype-resources/pom.xml
index e78fa54f59..bd440c365d 100644
--- a/streams/quickstart/java/src/main/resources/archetype-resources/pom.xml
+++ b/streams/quickstart/java/src/main/resources/archetype-resources/pom.xml
@@ -29,7 +29,7 @@

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <kafka.version>4.2.1</kafka.version>
+ <kafka.version>4.2.1-stackable0.0.0-dev</kafka.version>
<slf4j.version>2.0.16</slf4j.version>
</properties>

diff --git a/streams/quickstart/pom.xml b/streams/quickstart/pom.xml
index de77049571..3964d486e1 100644
--- a/streams/quickstart/pom.xml
+++ b/streams/quickstart/pom.xml
@@ -22,7 +22,7 @@
<groupId>org.apache.kafka</groupId>
<artifactId>streams-quickstart</artifactId>
<packaging>pom</packaging>
- <version>4.2.1</version>
+ <version>4.2.1-stackable0.0.0-dev</version>

<name>Kafka Streams :: Quickstart</name>

diff --git a/tests/kafkatest/__init__.py b/tests/kafkatest/__init__.py
index 49861a2ef2..2f50efe072 100644
--- a/tests/kafkatest/__init__.py
+++ b/tests/kafkatest/__init__.py
@@ -22,4 +22,4 @@
# Instead, in development branches, the version should have a suffix of the form ".devN"
#
# For example, when Kafka is at version 1.0.0-SNAPSHOT, this should be something like "1.0.0.dev0"
-__version__ = '4.2.1'
+__version__ = '4.2.1-stackable0.0.0-dev'
diff --git a/tests/kafkatest/version.py b/tests/kafkatest/version.py
index d0297f10f9..10474bdf43 100644
--- a/tests/kafkatest/version.py
+++ b/tests/kafkatest/version.py
@@ -128,7 +128,7 @@ def get_version(node=None):
return DEV_BRANCH

DEV_BRANCH = KafkaVersion("dev")
-DEV_VERSION = KafkaVersion("4.2.1")
+DEV_VERSION = KafkaVersion("4.2.1-stackable0.0.0-dev")

LATEST_STABLE_TRANSACTION_VERSION = 2
# This should match the LATEST_PRODUCTION version defined in MetadataVersion.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
From 23b979c8cc68a8097e21858909f157ca8cdb9cd6 Mon Sep 17 00:00:00 2001
From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
Date: Fri, 29 May 2026 17:43:58 +0200
Subject: Include jackson dataformat xml dependency

Add jacksonDatabindXml everywhere near jacjsonDatabindYaml in
build.gradle
---
build.gradle | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/build.gradle b/build.gradle
index bd840210bd..487c2d06dd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -188,13 +188,15 @@ ext {
libs.slf4jLog4j2,
libs.junitPlatformLanucher,
libs.jacksonDatabindYaml,
+ libs.jacksonDatabindXml,
project(":test-common:test-common-util")
]

log4jReleaseLibs = [
libs.slf4jLog4j2,
libs.log4j1Bridge2Api,
- libs.jacksonDatabindYaml
+ libs.jacksonDatabindYaml,
+ libs.jacksonDatabindXml,
]

log4j2Libs = [
@@ -1122,6 +1124,7 @@ project(':core') {
implementation libs.jacksonDataformatCsv
implementation libs.jacksonJDK8Datatypes
implementation libs.jacksonDatabindYaml
+ implementation libs.jacksonDatabindXml
implementation libs.joptSimple
implementation libs.jose4j
implementation libs.metrics
@@ -1537,6 +1540,7 @@ project(':group-coordinator') {
testImplementation project(':server-common').sourceSets.test.output
testImplementation project(':coordinator-common').sourceSets.test.output
testImplementation libs.jacksonDatabindYaml
+ testImplementation libs.jacksonDatabindXml
testImplementation libs.junitJupiter
testImplementation libs.mockitoCore
testImplementation testLog4j2Libs
@@ -1659,6 +1663,7 @@ project(':test-common:test-common-runtime') {
implementation libs.junitPlatformLanucher
implementation libs.junitJupiter
implementation libs.jacksonDatabindYaml
+ implementation libs.jacksonDatabindXml
implementation libs.slf4jApi

testImplementation libs.junitJupiter
@@ -2133,6 +2138,7 @@ project(':raft') {
testImplementation project(':clients')
testImplementation project(':clients').sourceSets.test.output
testImplementation libs.jacksonDatabindYaml
+ testImplementation libs.jacksonDatabindXml
testImplementation libs.junitJupiter
testImplementation libs.mockitoCore
testImplementation libs.jqwik
@@ -2230,6 +2236,7 @@ project(':server-common') {
testImplementation project(':clients')
testImplementation project(':clients').sourceSets.test.output
testImplementation libs.jacksonDatabindYaml
+ testImplementation libs.jacksonDatabindXml
testImplementation libs.junitJupiter
testImplementation libs.mockitoCore
testImplementation testLog4j2Libs
@@ -2371,6 +2378,7 @@ project(':storage') {
testImplementation project(':transaction-coordinator')
testImplementation libs.hamcrest
testImplementation libs.jacksonDatabindYaml
+ testImplementation libs.jacksonDatabindXml
testImplementation libs.junitJupiter
testImplementation libs.mockitoCore
testImplementation libs.bcpkix
@@ -2689,6 +2697,7 @@ project(':shell') {
testImplementation project(':server-common')
testImplementation project(':server-common').sourceSets.test.output
testImplementation libs.jacksonDatabindYaml
+ testImplementation libs.jacksonDatabindXml
testImplementation libs.junitJupiter
testImplementation testLog4j2Libs

@@ -2738,6 +2747,7 @@ project(':streams') {

testImplementation project(':clients').sourceSets.test.output
testImplementation libs.jacksonDatabindYaml
+ testImplementation libs.jacksonDatabindXml
testImplementation libs.junitJupiter
testImplementation libs.bcpkix
testImplementation libs.hamcrest
@@ -2883,6 +2893,7 @@ project(':streams:streams-scala') {
testImplementation project(':streams:test-utils')

testImplementation libs.jacksonDatabindYaml
+ testImplementation libs.jacksonDatabindXml
testImplementation libs.junitJupiter
testImplementation libs.mockitoJunitJupiter // supports MockitoExtension
testImplementation testLog4j2Libs
@@ -2987,6 +2998,7 @@ project(':streams:test-utils') {

testImplementation project(':clients').sourceSets.test.output
testImplementation libs.jacksonDatabindYaml
+ testImplementation libs.jacksonDatabindXml
testImplementation libs.junitJupiter
testImplementation libs.mockitoCore
testImplementation libs.hamcrest
@@ -3682,6 +3694,7 @@ project(':connect:runtime') {
testImplementation project(':server-common').sourceSets.test.output

testImplementation libs.jacksonDatabindYaml
+ testImplementation libs.jacksonDatabindXml
testImplementation libs.junitJupiter
testImplementation libs.mockitoCore
testImplementation libs.mockitoJunitJupiter
1 change: 1 addition & 0 deletions kafka/stackable/patches/4.2.1/patchable.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
base = "18d5ecd939c8d510fdd72d0abb1f7099659dcd58"
Loading