New Feature
[KAFKA-1227] - Code dump of new producer
[KAFKA-1384] - Log Broker state
[KAFKA-1443] - Add delete topic to topic commands and update DeleteTopicCommand
[KAFKA-1512] - Limit the maximum number of connections per ip address

Task
[KAFKA-1399] - Drop Scala 2.8.x support
[KAFKA-1559] - Upgrade Gradle wrapper to Gradle 2.0

Test
[KAFKA-1079] - Liars in PrimitiveApiTest that promise to test api in compression mode, but don't do this actually
[KAFKA-1285] - enable log4j in unit test
[KAFKA-1411] - remove unused test cases

Wish
[KAFKA-1308] - Publish jar of test utilities to Maven
[KAFKA-1370] - Gradle startup script for Windows
[KAFKA-1371] - Ignore build output dirs
[KAFKA-1485] - Upgrade to Zookeeper 3.4.6 and create "shim" for ZKCLI so system tests can run

Sub-task
[KAFKA-784] - creating topic without partitions, deleting then creating with partition causes errors in 'kafka-list-topic'
[KAFKA-1240] - Add ability to existing system tests to use the new producer client
[KAFKA-1304] - unregistered mbean exception in new producer
[KAFKA-1316] - Refactor Sender
[KAFKA-1328] - Add new consumer APIs
[KAFKA-1359] - Add topic/broker metrics once new topic/broker is discovered
[KAFKA-1462] - Add new request and response formats for the new consumer and coordinator communication
[KAFKA-1472] - Add the compression ratio metrics in the new producer
[KAFKA-1611] - Improve system test configuration

Improvement
[KAFKA-404] - When using chroot path, create chroot on startup if it doesn't exist
[KAFKA-997] - Provide a strict verification mode when reading configuration properties
[KAFKA-1028] - per topic configuration of preference for consistency over availability
[KAFKA-1204] - Add KAFKA_LOG_DIR to allow LOG_DIR to be outside of code dir
[KAFKA-1264] - Make ConsoleProducer compression codec configurable
[KAFKA-1278] - More flexible helper scripts
[KAFKA-1287] - enable log4j in command line tools using the new producer
[KAFKA-1291] - Make wrapper shell scripts for important tools
[KAFKA-1298] - Controlled shutdown tool doesn't seem to work out of the box
[KAFKA-1312] - Update gitignore to ignore IDE generated files
[KAFKA-1325] - Fix inconsistent per topic log configs
[KAFKA-1344] - Kafka-console-producer.sh support snappy compression
[KAFKA-1348] - Producer's Broker Discovery Interface
[KAFKA-1353] - report capacity used by request thread pool and network thread pool
[KAFKA-1361] - enable controlled shutdown by default
[KAFKA-1390] - TestUtils.waitUntilLeaderIsElectedOrChanged may wait longer than it needs
[KAFKA-1392] - all TestUtiles.waitUntilTrue() should throw an exception if the return value is false
[KAFKA-1414] - Speedup broker startup after hard reset
[KAFKA-1419] - cross build for scala 2.11
[KAFKA-1425] - provide logStartOffset in addition to LogEndOffset metric
[KAFKA-1430] - Purgatory redesign
[KAFKA-1446] - Consumer metrics for rebalance
[KAFKA-1454] - Update for a Scala 2.11 build
[KAFKA-1456] - Add LZ4 and LZ4C as a compression codec
[KAFKA-1480] - support log.roll.minutes
[KAFKA-1488] - new metrics for measuring the ratio when the new producer is block for space allocation
[KAFKA-1493] - Use a well-documented LZ4 compression format and remove redundant LZ4HC option
[KAFKA-1513] - Cleanup KafkaServerStartable code
[KAFKA-1519] - Console consumer: expose configuration option to enable/disable writing the line separator
[KAFKA-1535] - return all live brokers in TopicMetadataResponse
[KAFKA-1555] - provide strong consistency with reasonable availability
[KAFKA-1576] - Make "deleteTopic" a bit more user friendly
[KAFKA-1618] - Exception thrown when running console producer with no port number for the broker
[KAFKA-1620] - Make kafka api protocol implementation public
[KAFKA-1644] - Inherit FetchResponse from RequestOrResponse

Bug
[KAFKA-179] - Log files always touched when broker is bounced
[KAFKA-294] - "Path length must be > 0" error during startup
[KAFKA-472] - update metadata in batches in Producer
[KAFKA-703] - A fetch request in Fetch Purgatory can double count the bytes from the same delayed produce request
[KAFKA-847] - kafka appender layout does not work for kafka 0.7.1
[KAFKA-899] - LeaderNotAvailableException the first time a new message for a partition is processed.
[KAFKA-924] - Specify console consumer properties via a single --property command line parameter
[KAFKA-1002] - Delete aliveLeaders field from LeaderAndIsrRequest
[KAFKA-1025] - Producer.send should provide recoverability info on failiure
[KAFKA-1026] - Dynamically Adjust Batch Size Upon Receiving MessageSizeTooLargeException
[KAFKA-1034] - Improve partition reassignment to optimize writes to zookeeper
[KAFKA-1041] - Number of file handles increases indefinitely in producer if broker host is unresolvable
[KAFKA-1061] - Break-down sendTime to multipleSendTime
[KAFKA-1096] - An old controller coming out of long GC could update its epoch to the latest controller's epoch
[KAFKA-1108] - when controlled shutdown attempt fails, the reason is not always logged
[KAFKA-1123] - Broker IPv6 addresses parsed incorrectly
[KAFKA-1146] - toString() on KafkaStream gets stuck indefinitely
[KAFKA-1147] - Consumer socket timeout should be greater than fetch max wait
[KAFKA-1179] - createMessageStreams() in javaapi.ZookeeperConsumerConnector does not throw
[KAFKA-1180] - WhiteList topic filter gets a NullPointerException on complex Regex
[KAFKA-1189] - kafka-server-stop.sh doesn't stop broker
[KAFKA-1192] - Enable DumpLogSegments tool to deserialize messages
[KAFKA-1193] - Data loss if broker is killed using kill -9
[KAFKA-1209] - System test transient failure due to ProducerPerformance's connection to servers kept broken
[KAFKA-1210] - Windows Bat files are not working properly
[KAFKA-1212] - System test exception handling does not stop background producer threads
[KAFKA-1213] - Adding fetcher needs to be avoided upon make-follower when replica manager is shutting down
[KAFKA-1238] - New producer hangs in a loop detecting metadata for auto created topics
[KAFKA-1276] - Provide a list of config overrides available when running kafka.topics
[KAFKA-1280] - exclude kafka-clients jar from dependant-libs dir
[KAFKA-1297] - releaseTarGz target needs signing task
[KAFKA-1301] - system testcase_0206 fails using the new producer
[KAFKA-1302] - cleanup logging in new producer
[KAFKA-1305] - Controller can hang on controlled shutdown with auto leader balance enabled
[KAFKA-1307] - potential socket leak in new producer and clean up
[KAFKA-1318] - waiting for producer to stop is not reliable in system tests
[KAFKA-1319] - kafka jar doesn't depend on metrics-annotation any more
[KAFKA-1364] - ReplicaManagerTest hard-codes log dir
[KAFKA-1369] - snappy version update 1.1.x
[KAFKA-1375] - Formatting for "Running a task on a particular version of Scala" paragraph in README.md is broken
[KAFKA-1376] - transient test failure in UncleanLeaderElectionTest
[KAFKA-1378] - transient unit test failure in LogRecoveryTest
[KAFKA-1381] - transient unit test failure in AddPartitionsTest
[KAFKA-1382] - Update zkVersion on partition state update failures
[KAFKA-1383] - transient unit test failure in SocketServerTest
[KAFKA-1389] - transient unit test failure in ProducerFailureHandlingTest
[KAFKA-1391] - transient unit test failure in DeleteTopicTest.testPreferredReplicaElectionDuringDeleteTopic
[KAFKA-1395] - fix unit tests in AutoOffsetResetTest
[KAFKA-1396] - fix transient unit test ProducerFailureHandlingTest.testBrokerFailure
[KAFKA-1397] - delete topic is not working
[KAFKA-1400] - transient unit test failure in SocketServerTest
[KAFKA-1406] - Fix scaladoc/javadoc warnings
[KAFKA-1409] - oversized messages can slow down the brokers
[KAFKA-1410] - MetadataCache cleanup
[KAFKA-1412] - transient unit test failure in ProducerSendTest.testAutoCreateTopic
[KAFKA-1418] - transient unit test failure in ProducerFailureHandlingTest
[KAFKA-1422] - Fix transient unit test SocketServerTest
[KAFKA-1424] - transient unit test failure in testSendWithDeadBroker
[KAFKA-1431] - ConsoleConsumer - Option to clean zk consumer path
[KAFKA-1432] - Make num.producerThreads configurable on new MirrrorMaker
[KAFKA-1433] - transient unit test failure in ZookeeperConsumerConnectorTest
[KAFKA-1437] - ConsumerMetadataResponse should always include coordinator information
[KAFKA-1438] - Migrate kafka client tools
[KAFKA-1439] - transient unit test failure in testDeleteTopicDuringAddPartition
[KAFKA-1442] - RBTools post-review is deprecated
[KAFKA-1444] - kafka.javaapi.TopicMetadata and PartitionMetadata doesn't forward the toString method
[KAFKA-1451] - Broker stuck due to leader election race
[KAFKA-1453] - Add a channel queue jmx in Mirror Maker
[KAFKA-1459] - kafka.tools.ConsumerOffsetChecker throws NoNodeException
[KAFKA-1468] - Improve perf tests
[KAFKA-1469] - Util.abs function does not return correct absolute values for negative values
[KAFKA-1473] - transient unit test failure in testRequestHandlingDuringDeleteTopic
[KAFKA-1482] - Transient test failures for kafka.admin.DeleteTopicTest
[KAFKA-1487] - add test jars to gradle build for packaging and release
[KAFKA-1490] - remove gradlew initial setup output from source distribution
[KAFKA-1491] - ConsumerMetadataResponse is not read completely
[KAFKA-1502] - source jar is empty
[KAFKA-1503] - all partitions are using same broker as their leader after broker is down
[KAFKA-1510] - Force offset commits when migrating consumer offsets from zookeeper to kafka
[KAFKA-1511] - Malformated link and consumer/producer mixup in documentation
[KAFKA-1529] - transient unit test failure in testAutoCreateAfterDeleteTopic
[KAFKA-1531] - zookeeper.connection.timeout.ms is set to 10000000 in configuration file in Kafka tarball
[KAFKA-1533] - transient unit test failure in ProducerFailureHandlingTest
[KAFKA-1539] - Due to OS caching Kafka might loose offset files which causes full reset of data
[KAFKA-1542] - normal IOException in the new producer is logged as ERROR
[KAFKA-1544] - LogCleaner may take a long time to shutdown
[KAFKA-1549] - dead brokers coming in the TopicMetadataResponse
[KAFKA-1557] - ISR reported by TopicMetadataResponse most of the time doesn't match the Zookeeper information (and the truth)
[KAFKA-1558] - AdminUtils.deleteTopic does not work
[KAFKA-1562] - kafka-topics.sh alter add partitions resets cleanup.policy
[KAFKA-1567] - Metric memory leaking after closing the clients
[KAFKA-1571] - MetadataeTest hangs
[KAFKA-1574] - unit tests can hang on socketserver shutdown
[KAFKA-1577] - Exception in ConnectionQuotas while shutting down
[KAFKA-1578] - Controller should de-register all listeners upon designation
[KAFKA-1585] - Client: Infinite "conflict in /consumers/"
[KAFKA-1598] - Fix variable typo in Kafka main class
[KAFKA-1600] - Controller failover not working correctly.
[KAFKA-1603] - MirrorMaker consumer does not put the message key into ProducerRecord
[KAFKA-1609] - New producer metadata response handling should only exclude a PartitionInfo when its error is LEADER_NOT_AVAILABLE
[KAFKA-1616] - Purgatory Size and Num.Delayed.Request metrics are incorrect
[KAFKA-1619] - perf dir can be removed
[KAFKA-1622] - project shouldn't require signing to build
[KAFKA-1635] - Java doc of makeLeaders in ReplicaManager is wrong
[KAFKA-1645] - some more jars in our src release
[KAFKA-1662] - gradle release issue permgen space
[KAFKA-1663] - Controller unable to shutdown after a soft failure
[KAFKA-1670] - Corrupt log files for segment.bytes values close to Int.MaxInt
[KAFKA-1671] - uploaded archives are missing for Scala version 2.11
[KAFKA-1673] - potential java.lang.IllegalStateException in BufferPool.allocate()
[KAFKA-1681] - Newly elected KafkaController might not start deletion of pending topics
[KAFKA-1699] - autoRebalanceScheduler.shutdown() causes deadlock while controller shutting down
[KAFKA-1717] - remove netty dependency through ZK 3.4.x
changed release version prior to candidate release
1 file changed
tree: 892f01832f4c7eb64e11ccc873c5ba2dd050060c
  1. bin/
  2. clients/
  3. config/
  4. contrib/
  5. core/
  6. examples/
  7. gradle/
  8. system_test/
  9. .gitignore
  10. .rat-excludes
  11. .reviewboardrc
  12. build.gradle
  13. doap_Kafka.rdf
  14. gradle.properties
  15. gradlew
  16. gradlew.bat
  17. HEADER
  18. kafka-patch-review.py
  19. LICENSE
  20. NOTICE
  21. README.md
  22. scala.gradle
  23. settings.gradle
  24. wrapper.gradle
README.md

Apache Kafka

See our web site for details on the project.

You need to have gradle installed.

First bootstrap and download the wrapper

cd kafka_source_dir
gradle

Now everything else will work

Building a jar and running it

./gradlew jar  

Follow instuctions in http://kafka.apache.org/documentation.html#quickstart

Building source jar

./gradlew srcJar

Building javadocs and scaladocs

./gradlew javadoc
./gradlew javadocJar # builds a jar from the javadocs
./gradlew scaladoc
./gradlew scaladocJar # builds a jar from the scaladocs
./gradlew docsJar # builds both javadoc and scaladoc jar

Running unit tests

./gradlew test

Forcing re-running unit tests w/o code change

./gradlew cleanTest test

Running a particular unit test

./gradlew -Dtest.single=RequestResponseSerializationTest core:test

Running a particular unit test with log4j output

change the log4j setting in either clients/src/test/resources/log4j.properties or core/src/test/resources/log4j.properties
./gradlew -i -Dtest.single=RequestResponseSerializationTest core:test

Building a binary release gzipped tar ball

./gradlew clean
./gradlew releaseTarGz  
The above command will fail if you haven't set up the signing key. To bypass signing the artifact, you can run
./gradlew releaseTarGz -x signArchives

The release file can be found inside ./core/build/distributions/.

Cleaning the build

./gradlew clean

Running a task on a particular version of Scala (either 2.9.1, 2.9.2, 2.10.1 or 2.11)

(If building a jar with a version other than 2.10, need to set SCALA_BINARY_VERSION variable or change it in bin/kafka-run-class.sh to run quick start.)

./gradlew -PscalaVersion=2.9.1 jar
./gradlew -PscalaVersion=2.9.1 test
./gradlew -PscalaVersion=2.9.1 releaseTarGz

Running a task for a specific project

This is for ‘core’, ‘contrib:hadoop-consumer’, ‘contrib:hadoop-producer’, ‘examples’ and ‘clients’ ./gradlew core:jar ./gradlew core:test

Listing all gradle tasks

./gradlew tasks

Building IDE project

./gradlew eclipse
./gradlew idea

Building the jar for all scala versions and for all projects

./gradlew jarAll

Running unit tests for all scala versions and for all projects

./gradlew testAll

Building a binary release gzipped tar ball for all scala versions

./gradlew releaseTarGzAll

Publishing the jar for all version of Scala and for all projects to maven

./gradlew uploadArchivesAll

Please note for this to work you should create/update ~/.gradle/gradle.properties and assign the following variables

mavenUrl=
mavenUsername=
mavenPassword=
signing.keyId=
signing.password=
signing.secretKeyRingFile=

Building the test jar

./gradlew testJar

Determining how transitive dependencies are added

./gradlew core:dependencies --configuration runtime

Contribution

Apache Kafka is interested in building the community; we would welcome any thoughts or patches. You can reach us on the Apache mailing lists.

To contribute follow the instructions here:

We also welcome patches for the website and documentation which can be found here: