Skip to content

Add Kafka topic config reconciler for hermes-management and console - #2053

Merged
szczygiel-m merged 5 commits into
masterfrom
kafka-topic-reconciler
Aug 7, 2026
Merged

Add Kafka topic config reconciler for hermes-management and console#2053
szczygiel-m merged 5 commits into
masterfrom
kafka-topic-reconciler

Conversation

@szczygiel-m

Copy link
Copy Markdown
Contributor

Adds forward reconciliation of Kafka broker topic configuration against Hermes metadata, analogous to the existing ZooKeeper consistency tooling.

Detects and fixes drift of the Hermes-owned configs only (retention.ms, unclean.leader.election.enable, max.message.bytes) and can bootstrap topics missing on a cluster.

  • Extracts owned-config into a shared OwnedTopicConfig so what we write equals what we check.
  • Switches config writes to incrementalAlterConfigs (SET), so partitions, replication factor, and non-owned configs are never touched.
  • New admin-only endpoints under /consistency/kafka/..., all mutations default to dry-run (does not collide with existing orphan endpoints).
  • hermes-console: new "Kafka topic configuration" section on the Consistency page — cluster selector, per-key diffs, dry run review/apply, batch sync, and per-cluster bootstrap.

Tests: JUnit/Spock unit tests, integration test (real Kafka), and co-located console specs. Docs updated in kafka-and-zookeeper.md.

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

✅ Benchmark comparison: PASSED

Metric Status Change
consumer.HermesConsumerBenchmark.benchmarkConsumingThroughput (thrpt) ✅ PASS ↑ 0.13%
consumer.HermesConsumerBenchmark.benchmarkConsumingThroughput (thrpt) - gc.alloc.rate.norm ✅ PASS ↓ 0.70%
consumer.HermesConsumerFilteringBenchmark.benchmarkConsumingThroughput (thrpt) ✅ PASS ↑ 0.04%
consumer.HermesConsumerFilteringBenchmark.benchmarkConsumingThroughput (thrpt) - gc.alloc.rate.norm ✅ PASS ↓ 0.05%
frontend.HermesServerBenchmark.benchmarkPublishingLatency (sample) ✅ PASS ↑ 4.25%
frontend.HermesServerBenchmark.benchmarkPublishingLatency (sample) - gc.alloc.rate.norm ✅ PASS ↓ 0.84%
frontend.HermesServerBenchmark.benchmarkPublishingThroughput (thrpt) ✅ PASS ↓ 3.47%
frontend.HermesServerBenchmark.benchmarkPublishingThroughput (thrpt) - gc.alloc.rate.norm ✅ PASS ↓ 0.09%

Comment thread hermes-console/src/components/confirmation-dialog/ConfirmationDialog.vue Outdated
config[TopicConfig.RETENTION_MS_CONFIG] = String.valueOf(topic.retentionTime.durationInMillis)
config[TopicConfig.UNCLEAN_LEADER_ELECTION_ENABLE_CONFIG] = "false"
config[TopicConfig.MAX_MESSAGE_BYTES_CONFIG] = "1048576"
config

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.

nit: return

@szczygiel-m
szczygiel-m merged commit e63d396 into master Aug 7, 2026
13 checks passed
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.

3 participants