kafka/raft
Jason Gustafson c6a0f76073
KAFKA-12460; Do not allow raft truncation below high watermark (#10310)
Initially we want to be strict about the loss of committed data for the `@metadata` topic. This patch ensures that truncation below the high watermark is not allowed. Note that `MockLog` already had the logic to do so, so the patch adds a similar check to `KafkaMetadataLog`. 

Reviewers: David Jacot <djacot@confluent.io>, Boyang Chen <boyang@confluent.io>
2021-03-12 16:31:51 -08:00
..
bin
config KAFKA-12236; New meta.properties logic for KIP-500 (#9967) 2021-01-30 17:05:31 -08:00
src KAFKA-12460; Do not allow raft truncation below high watermark (#10310) 2021-03-12 16:31:51 -08:00
README.md Fixed README and added clearer error message. (#10133) 2021-02-16 15:12:29 -08:00

README.md

Kafka Raft

Kafka Raft is a sub module of Apache Kafka which features a tailored version of Raft Consensus Protocol.

Eventually this module will be integrated into the Kafka server. For now, we have a standalone test server which can be used for performance testing. Below we describe the details to set this up.

Run Single Quorum

bin/test-raft-server-start.sh --config config/raft.properties

Run Multi Node Quorum

Create 3 separate raft quorum properties as the following:

cat << EOF >> config/raft-quorum-1.properties

node.id=1
listeners=PLAINTEXT://localhost:9092
controller.quorum.voters=1@localhost:9092,2@localhost:9093,3@localhost:9094
log.dirs=/tmp/raft-logs-1
EOF

cat << EOF >> config/raft-quorum-2.properties

node.id=2
listeners=PLAINTEXT://localhost:9093
controller.quorum.voters=1@localhost:9092,2@localhost:9093,3@localhost:9094
log.dirs=/tmp/raft-logs-2
EOF

cat << EOF >> config/raft-quorum-3.properties

node.id=3
listeners=PLAINTEXT://localhost:9094
controller.quorum.voters=1@localhost:9092,2@localhost:9093,3@localhost:9094
log.dirs=/tmp/raft-logs-3
EOF

Open up 3 separate terminals, and run individual commands:

bin/test-raft-server-start.sh --config config/raft-quorum-1.properties
bin/test-raft-server-start.sh --config config/raft-quorum-2.properties
bin/test-raft-server-start.sh --config config/raft-quorum-3.properties

Once a leader is elected, it will begin writing to an internal __cluster_metadata topic with a steady workload of random data. You can control the workload using the --throughput and --record-size arguments passed to test-raft-server-start.sh.