Skip to content

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

Open
amuraru wants to merge 1 commit into
adobe:masterfrom
amuraru:kraft/canonical-cluster-id
Open

fix(kraft): generate canonical padding-free cluster ID#305
amuraru wants to merge 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.

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)
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.

1 participant