Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Also, some tools always require config files for producer and consumer even when most people might just use default settings (ex. MirrorMaker).

FinallyRelated to this, some tools use a unique command line argument name for a command argument (ex. VerifyConsumerRebalance uses –zk to specify ZooKeeper URL while other tools use --zookeeper).

 

Public Interfaces

The following list summarizes the flavor of each tool we have now in Kafka. The argument style are marked in parentheses using the number in previous section.

ConsoleConsumer(1 & 2)

ConsoleProducer(2)

ConsumerOffsetChecker(2)

ConsumerPerformance(2)

DumpLogSegment(2)

ExportZkOffsets(2)

GetOffsetShell(2)

ImportZkOffsets(2)

JmxTool(2)

MirrorMaker(1)

ProducerPerformance - scala (2)

ProducerPerformance - java (3)

ReplayLogProducer(2)

ReplicaVerificationTool(2)

SimpleConsumerPerformance(2)

SimpleConsumerShell(2)

StateChangeLogMerger(2)

TestEndToEndLatency(3)

TestLogCleaning(2)

UpdateOffsetsInZk(3)

VerifyConsumerRebalacne(1)

Proposed Changes

Proposed Changes

  • Change all tools using argument style #2 (arguments containing dots) to argument style #3 (arguments containing dashes) (see table below)Change ConsoleConsumer, VerifyConsumerRebalance tools to use style 2).
  • (Suggested by Gwen) Since mirror maker is more like a service instead of a tool. It makes sense to pass in a mirror maker config file.
  • Standardize Change unique/one-off command line argument naming by making the following argument name changes:names to match standard argument name (see table below).

CommandOld Argument NameNew Argument Name
kafka-console-consumer.shconsumer.configconsumer-config
kafka-consumer-offset-checker.shsocket.timeout.mssocket-timeout-ms
kafka-consumer-offset-checker.shretry.backoff.msretry-backoff-ms 
ExportZkOffsets.scalazkconnectzookeeper
ImportZkOffsets.scalazkconnectzookeeper
KafkaMigrationTool.javaconsumer.configconsumer-config
KafkaMigrationTool.javaproducer.configproducer-config
KafkaMigrationTool.javanum.producersnum-producers
KafkaMigrationTool.javanum.streamsnum-streams
KafkaMigrationTool.javaqueue.sizequeue-size
kafka-mirror-maker.shconsumer.configconsumer-config
kafka-mirror-maker.shproducer.configproducer-config
kafka-mirror-maker.shnum.streamsnum-streams
kafka-producer-perf-test.shrequest-num-acksrequest-required-acks
kafka-replay-log-producer.shinputtopicinput-topic
kafka-replay-log-producer.shoutputtopicoutput-topic
kafka-replica-verification.shtopic-white-listwhitelist
kafka-replica-verification.shreport-interval-msreporting-interval
kafka-simple-consumer-shell.shfetchsizefetch-size
TestLogCleaning.scalazkzookeeper
VerifyConsumerRebalance.scalazookeeper.connectzookeeper
TestLinearWriteSpeed.scalacompressioncompression-codec
TestOffsetManager.scalathread-countthreads
TestOffsetManager.scalareporting-interval-msreporting-interval

...

  • What impact (if any) will there be on existing users? - Previously used command line arguments will no longer function and they will have to adapt their calls.
  • If we are changing behavior how will we phase out the older behavior? - End-users will need to adaptThere will be no deprecation of old command line arguments, only a change-over.
  • If we need special migration tools, describe them here. - None but note that No migration tools needed but the Kafka Documentation & Wiki pages will need to be updated to educate end-users on these changes.
  • When will we remove the existing behavior? Users building from Existing behavior will change as soon as patch is committed and included in release build.

Rejected Alternatives

None