Skip to content

fix(kraft): generate canonical padding-free cluster ID - #305

Merged
amuraru merged 1 commit into
adobe:masterfrom
amuraru:kraft/canonical-cluster-id
Aug 19, 2026
Merged

fix(kraft): generate canonical padding-free cluster ID#305
amuraru merged 1 commit into
adobe:masterfrom
amuraru:kraft/canonical-cluster-id

Conversation

@amuraru

@amuraru amuraru commented Aug 12, 2026

Copy link
Copy Markdown

Split out of #300 (1/6).

generateRandomClusterID used base64.URLEncoding, producing a 24-character
padded id (e.g. "...=="). Kafka 3.9's Uuid.fromString happens to accept it
(length <= 24 and its URL decoder tolerates padding), but that is a
non-canonical form: Kafka itself emits the 22-character padding-free
encoding via Base64.getUrlEncoder().withoutPadding(), and newer Kafka
versions reject longer strings. Switch to base64.RawURLEncoding so freshly
generated cluster IDs match Kafka's canonical form.

Existing clusters are unaffected: their id is already persisted in
KafkaCluster.Status.ClusterID and reused verbatim.

Strengthens TestGenerateClusterID to assert the id decodes to exactly 16
bytes and is 22 characters long.

@dobrerazvan

Copy link
Copy Markdown

@amuraru there seem to be 2 features in this PR. Could you split them? Thanks!

@amuraru
amuraru force-pushed the kraft/canonical-cluster-id branch from 646982b to bd05295 Compare August 19, 2026 09:29
@amuraru

amuraru commented Aug 19, 2026

Copy link
Copy Markdown
Author

Thanks @dobrerazvan - updated the PR

generateRandomClusterID used base64.URLEncoding, producing a 24-character
padded id (e.g. "…=="). Kafka 3.9's Uuid.fromString happens to accept it
(length <= 24 and its URL decoder tolerates padding), but that is a
non-canonical form: Kafka itself emits the 22-character padding-free
encoding via Base64.getUrlEncoder().withoutPadding(), and newer Kafka
versions reject longer strings. Switch to base64.RawURLEncoding so freshly
generated cluster IDs match Kafka's canonical form.

Existing clusters are unaffected: their id is already persisted in
KafkaCluster.Status.ClusterID and reused verbatim.

Strengthen TestGenerateClusterID to assert the id decodes to exactly 16
bytes and is 22 characters long.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit ed420fc)
@amuraru
amuraru force-pushed the kraft/canonical-cluster-id branch from bd05295 to a6f71eb Compare August 19, 2026 11:42
@amuraru
amuraru merged commit 11ede7e into adobe:master Aug 19, 2026
7 checks passed
@amuraru
amuraru deleted the kraft/canonical-cluster-id branch August 19, 2026 17:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants