Generate a reassignment JSON file that maps each partition to its new replica list: kafka-reassign-partitions.sh --generate --topics-to-move-json-file topics.json --broker-list '1,2,3' > reassignment.json
Execute the reassignment with a bandwidth throttle in bytes per second: kafka-reassign-partitions.sh --bootstrap-server localhost:9092 --execute --reassignment-json-file reassignment.json --throttle 52428800
Monitor progress: kafka-reassign-partitions.sh --verify --reassignment-json-file reassignment.json; re-run periodically until all partitions report 'completed'
Adjust the throttle mid-flight if lag builds up: re-run --execute with the same JSON and a new --throttle value without stopping the reassignment
After --verify reports completion it automatically removes throttle configs; if you cancel early, manually clear them with kafka-configs.sh --alter --delete-config 'leader.replication.throttled.replicas' on each affected topic
Confirm inter-broker replica lag has returned to zero by checking the under-replicated partitions JMX metric
Known gotchas
If the throttle is set too low relative to the produce rate, newly assigned replicas can never catch up; the reassignment stalls indefinitely — set the throttle to at least the peak produce rate for affected partitions
Throttle configurations persist on the topic and broker even if the reassignment completes unexpectedly; always run --verify or manually delete the throttle configs to avoid lingering bandwidth caps
Running multiple concurrent reassignments is not supported; submit a single consolidated reassignment JSON or the second will overwrite the first
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp