[GSoC 2026] Kafka Streams runner: put the runner behind an opt-in build flag - #39762
Conversation
|
Checks are failing. Will not request review until checks are succeeding. If you'd like to override that behavior, comment |
je-ik
left a comment
There was a problem hiding this comment.
LGTM, can we please rebase this on feat/18479-kafka-streams-runner-skeleton so that it can be merge independently on the previous PR #39761 (review)?
7afe7be to
475fb18
Compare
Rebased onto feat/18479-kafka-streams-runner-skeleton, so it is one commit and can merge independently of #39761. I checked the gate still holds after the rebase: ./gradlew projects shows no Kafka Streams projects, and with -Pwith-kafka-streams-runner it shows all three. One check on this PR fails and I do not think it is the change. beam_PreCommit_Yaml_Xlang_Direct dies in "Setup environment" with the action gradle/actions/setup-gradle is not allowed in apache/beam. It passes on master and fails only on my fork branch, and this PR triggers it because it touches the root build files. Looks like the actions allowlist for fork PRs, but you can see more than I can there. |
…ld flag The runner is worth somewhere people can build it, use it and work on it, but it is not ready to be released, and it has known bugs rather than only missing features. Building it by default would be hard to defend. -Pwith-kafka-streams-runner includes its subprojects; without the flag they are left out of the build entirely, so nothing reaches a user who did not ask for it and no release contains it. The flag can come off when the runner is stable enough, or the runner can be dropped, without affecting anyone. javaPreCommit and the Python portable suite assumed the projects were always present, and both Kafka Streams workflows now pass the flag.
475fb18 to
6feacd1
Compare
49d459a
into
apache:feat/18479-kafka-streams-runner-skeleton
Summary
Part of #18479. Puts the Kafka Streams runner behind an opt-in build flag, so that it can live in
masterwithout being built for, or released to, anyone who has not asked for it.Without the flag the runner's subprojects are not included in the build at all.
Why
The runner is worth having somewhere people can build it, use it, and work on it — the point being to give it somewhere to be developed and maintained rather than to ship it. It is not ready to be released, and it has known bugs rather than only missing features: bundles are not yet closed after a bounded time (#39633), and other cases are still being looked at. Merging that as part of the normal build would be hard to defend.
An opt-in flag separates the two questions. Nothing reaches a user who did not ask for it, and no release contains it, so if the runner becomes stable enough the flag comes off and it is built like any other; and if it does not, it can be dropped again without affecting anyone.
What changed
settings.gradle.ktsonly includes:runners:kafka-streamsand its subprojects when the property is set. Three places assumed they were always there:javaPreCommithad a harddependsOnon the runner's build.kafkaStreamsValidatesRunnerunconditionally, and its job server is only a project when the flag is set.Documentation says what the flag is and why it exists, and every command on the runner's page now carries it.
The options table on that page had also fallen behind and is corrected here:
maxBundleSizeno longer doubles as the source's per-poll limit, which #39748 separated, andreadMaxElementsPerPoll,readMaxPollTimeMsandsessionTimeoutMswere missing.Testing
Checked in both directions, since the point of the change is what happens when the flag is absent:
kafkaStreamsValidatesRunnerresolves with the flag and does not exist without it.