GitHub user ewasserman opened a pull request: https://github.com/apache/kafka/pull/1168
KAFKA-1981 Make log compaction point configurable @jkreps Implements control over the portion of the head of the log that will not be compacted (i.e. preserved in detail). The log cleaner can be configured retain a minimum amount of the uncompacted "head" of the log. This is enabled by setting one or more of the compaction lags: log.cleaner.min.compaction.lag.ms log.cleaner.min.compaction.lag.bytes log.cleaner.min.compaction.lag.messages with similar per topic configurations: min.compaction.lag.ms min.compaction.lag.bytes min.compaction.lag.messages These can be used to set constraints on the minimum message age, aggregate size, and/or count respectively that may be compacted. If none are set, all log segments are eligible for compaction except for the last segment, i.e. the one currently being written to. The active segment will not be compacted even if all of the compaction lag constraints are satisfied. In particular this allows for the example use case described in the JIRA: "any consumer that is no more than 1 hour behind will get every message." This contribution is my (Eric Wasserman's) original work and I license the work to the Kafka project under its open source license. You can merge this pull request into a Git repository by running: $ git pull https://github.com/ewasserman/kafka feat-compaction-lag Alternatively you can review and apply these changes as the patch at: https://github.com/apache/kafka/pull/1168.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #1168 ---- commit d9fa5ca1c6b2f9e08689697b85b9b54a90afa67c Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-15T00:57:07Z log commit b9d2752b6db36a7d9464e8b4c12ec0d9cd8dfcf7 Author: Eric Wasserman <eric.wasser...@gmail.com> Date: 2016-03-16T03:46:07Z add compaction lag commit dbb57bcf4c1d0fdf5c15c7f09838a6f47f64bd29 Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-17T00:56:57Z tests commit ffa37a2d296bceb612152316ac163d67e1d71fe0 Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-17T20:04:25Z clean up test commit f0536ae2612338460f07377afb388b64a84c7972 Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-18T00:54:13Z integration test with lag commit 513a43296b99df2d0426abe9d09f942a95e02274 Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-22T00:56:02Z lag integration test commit 7746924e1fb5d964fe609e941fec5611828e8720 Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-23T17:22:08Z add size and message count properties; update property names commit 8ae2a1daf0cd970bc38d8654f73f9175ee93433e Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-23T23:36:39Z final tests commit 7b41064eca6a45ad1f4a74c2ad0e3d6cec8f2c25 Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-23T23:37:33Z generalized compaction lag commit b5c247be267918f3c4f1163d81e95fb93cd6dc01 Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-24T00:45:32Z update documentation commit 118fa196f41a8fa0198c672288433cfce30a322c Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-24T00:48:35Z add missing license comment commit fa0b96e984a327968824894859ae9c97e4d0ed0d Author: Eric Wasserman <eric.wasser...@gmail.com> Date: 2016-03-24T16:44:39Z reverse log4j commit c4c0d97cb02104e8aea73df6bc3305914768192a Author: Eric Wasserman <eric.wasser...@gmail.com> Date: 2016-03-16T03:46:07Z add compaction lag commit 45a02f90aeb378ccd51e25dac4b19a1bfabfd79b Author: Eric Wasserman <eric.wasser...@gmail.com> Date: 2016-03-24T23:09:46Z Merge branch 'feat-compaction-lag' of github.com:ewasserman/kafka into feat-compaction-lag commit 49051027872443d2a38141893dab2d6d68b7c310 Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-30T23:10:33Z Merge branch 'trunk' into feat-compaction-lag commit c56ccd517ad3d414c4aee891975693cffc794359 Author: Eric Wasserman <ewasser...@ariasystems.com> Date: 2016-03-30T23:37:00Z adapt to changes in test utils. ---- --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---