Colin, Thanks for comments. Out of ordered message timestamp is a very good point. We can combine max.compaction.lag.ms with log.message.timestamp.difference.max.ms to achieve what we want in an environment that message timestamp can be shifted a lot.
There are similar discussions regarding log.retention.ms and log.message.timestamp.difference.max.ms in KAFKA-4340. I agree that we can always use first message timestamp not the maxTimestamp of the previous log segment to make it simple. I have updated the KIP. Xiongqi (Wesley) Wu On Tue, Dec 4, 2018 at 5:13 PM Colin McCabe <cmcc...@apache.org> wrote: > Hi Xiongqi, > > Thinking about this a little bit more, it seems like we don't have any > guarantees just by looking at the timestamp of the first message in a log > segment. Similarly, we don't have any guarantees just by looking at the > maxTimestamp of the previous log segment. Old data could appear anywhere-- > you could put data that was years old in the middle of a segment from 2018. > > However, if log.message.timestamp.difference.max.ms is set, then we can > make some actual guarantees that old data gets purged-- which is what the > GDPR requires, of course. > > Overall, maybe we can make KIP-354 simpler by just always looking at the > timestamp of the first log message. I don't think looking at the > maxTimestamp of the previous segment is any more accurate. Aside from > that, looks good, since we can get what we need with the combination of > this and log.message.timestamp.difference.max.ms. > > best, > Colin > > > On Mon, Nov 26, 2018, at 13:10, xiongqi wu wrote: > > Thanks for binding and non-binding votes. > > Can I get one more binding vote? > > > > Thanks in advance! > > > > Xiongqi (Wesley) Wu > > > > > > On Wed, Nov 14, 2018 at 7:29 PM Matt Farmer <m...@frmr.me> wrote: > > > > > I'm a +1 (non-binding) — This looks like it would have saved us a lot > of > > > pain in an issue we had to debug recently. I can't go into details, but > > > figuring out how to achieve this effect gave me quite a headache. :) > > > > > > On Mon, Nov 12, 2018 at 1:00 PM xiongqi wu <xiongq...@gmail.com> > wrote: > > > > > > > Hi all, > > > > > > > > Can I have one more vote on this KIP? > > > > Any comment is appreciated. > > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354%3A+Add+a+Maximum+Log+Compaction+Lag > > > > > > > > > > > > Xiongqi (Wesley) Wu > > > > > > > > > > > > On Fri, Nov 9, 2018 at 7:56 PM xiongqi wu <xiongq...@gmail.com> > wrote: > > > > > > > > > Thanks Dong. > > > > > I have updated the KIP. > > > > > > > > > > Xiongqi (Wesley) Wu > > > > > > > > > > > > > > > On Fri, Nov 9, 2018 at 5:31 PM Dong Lin <lindon...@gmail.com> > wrote: > > > > > > > > > >> Thanks for the KIP Xiongqi. LGTM. +1 (binding) > > > > >> > > > > >> One minor comment: it may be a bit better to clarify in the public > > > > >> interface section that the value of the newly added metric is > > > determined > > > > >> based by applying that formula across all compactable segments. > For > > > > >> example: > > > > >> > > > > >> The maximum value of Math.max(now - > > > > >> earliest_timestamp_in_ms_of_uncompacted_segment - > > > max.compaction.lag.ms > > > > , > > > > >> 0)/1000 across all compactable partitions, where the > > > > >> max.compaction.lag.ms > > > > >> can be overridden on per-topic basis. > > > > >> > > > > >> > > > > >> > > > > >> On Fri, Nov 9, 2018 at 5:16 PM xiongqi wu <xiongq...@gmail.com> > > > wrote: > > > > >> > > > > >> > Thanks Joel. > > > > >> > Tracking the delay at second granularity makes sense > > > > >> > I have updated KIP. > > > > >> > > > > > >> > Xiongqi (Wesley) Wu > > > > >> > > > > > >> > > > > > >> > On Fri, Nov 9, 2018 at 5:05 PM Joel Koshy <jjkosh...@gmail.com> > > > > wrote: > > > > >> > > > > > >> > > +1 with one suggestion on the proposed metric. You should > probably > > > > >> > include > > > > >> > > the unit. So for e.g., max-compaction-delay-secs. > > > > >> > > > > > > >> > > Joel > > > > >> > > > > > > >> > > On Tue, Nov 6, 2018 at 5:30 PM xiongqi wu < > xiongq...@gmail.com> > > > > >> wrote: > > > > >> > > > > > > >> > > > bump > > > > >> > > > Xiongqi (Wesley) Wu > > > > >> > > > > > > > >> > > > > > > > >> > > > On Thu, Sep 27, 2018 at 4:20 PM xiongqi wu < > xiongq...@gmail.com > > > > > > > > >> > wrote: > > > > >> > > > > > > > >> > > > > > > > > >> > > > > Thanks Eno, Brett, Dong, Guozhang, Colin, and Xiaohe for > > > > >> feedback. > > > > >> > > > > Can I have more feedback or VOTE on this KIP? > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > Xiongqi (Wesley) Wu > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > On Wed, Sep 19, 2018 at 10:52 AM xiongqi wu < > > > > xiongq...@gmail.com> > > > > >> > > wrote: > > > > >> > > > > > > > > >> > > > >> Any other votes or comments? > > > > >> > > > >> > > > > >> > > > >> Xiongqi (Wesley) Wu > > > > >> > > > >> > > > > >> > > > >> > > > > >> > > > >> On Tue, Sep 11, 2018 at 11:45 AM xiongqi wu < > > > > xiongq...@gmail.com > > > > >> > > > > > >> > > > wrote: > > > > >> > > > >> > > > > >> > > > >>> Yes, more votes and code review. > > > > >> > > > >>> > > > > >> > > > >>> Xiongqi (Wesley) Wu > > > > >> > > > >>> > > > > >> > > > >>> > > > > >> > > > >>> On Mon, Sep 10, 2018 at 11:37 PM Brett Rann > > > > >> > > <br...@zendesk.com.invalid > > > > >> > > > > > > > > >> > > > >>> wrote: > > > > >> > > > >>> > > > > >> > > > >>>> +1 (non binding) from on 0 then, and on the KIP. > > > > >> > > > >>>> > > > > >> > > > >>>> Where do we go from here? More votes? > > > > >> > > > >>>> > > > > >> > > > >>>> On Tue, Sep 11, 2018 at 5:34 AM Colin McCabe < > > > > >> cmcc...@apache.org> > > > > >> > > > >>>> wrote: > > > > >> > > > >>>> > > > > >> > > > >>>> > On Mon, Sep 10, 2018, at 11:44, xiongqi wu wrote: > > > > >> > > > >>>> > > Thank you for comments. I will use '0' for now. > > > > >> > > > >>>> > > > > > > >> > > > >>>> > > If we create topics through admin client in the > future, > > > > we > > > > >> > might > > > > >> > > > >>>> perform > > > > >> > > > >>>> > > some useful checks. (but the assumption is all > brokers > > > in > > > > >> the > > > > >> > > same > > > > >> > > > >>>> > cluster > > > > >> > > > >>>> > > have the same default configurations value, > > > otherwise,it > > > > >> might > > > > >> > > > >>>> still be > > > > >> > > > >>>> > > tricky to do such cross validation check.) > > > > >> > > > >>>> > > > > > >> > > > >>>> > This isn't something that we might do in the future-- > > > this > > > > is > > > > >> > > > >>>> something we > > > > >> > > > >>>> > are doing now. We already have Create Topic policies > > > which > > > > >> are > > > > >> > > > >>>> enforced by > > > > >> > > > >>>> > the broker. Check KIP-108 and KIP-170 for details. > This > > > is > > > > >> one > > > > >> > of > > > > >> > > > the > > > > >> > > > >>>> > motivations for getting rid of direct ZK access-- > making > > > > sure > > > > >> > that > > > > >> > > > >>>> these > > > > >> > > > >>>> > policies are applied. > > > > >> > > > >>>> > > > > > >> > > > >>>> > I agree that having different configurations on > different > > > > >> > brokers > > > > >> > > > can > > > > >> > > > >>>> be > > > > >> > > > >>>> > confusing and frustrating . That's why more > > > configurations > > > > >> are > > > > >> > > being > > > > >> > > > >>>> made > > > > >> > > > >>>> > dynamic using KIP-226. Dynamic configurations are > stored > > > > >> > centrally > > > > >> > > > in > > > > >> > > > >>>> ZK, > > > > >> > > > >>>> > so they are the same on all brokers (modulo > propagation > > > > >> delays). > > > > >> > > In > > > > >> > > > >>>> any > > > > >> > > > >>>> > case, this is a general issue, not specific to > "create > > > > >> topics". > > > > >> > > > >>>> > > > > > >> > > > >>>> > cheers, > > > > >> > > > >>>> > Colin > > > > >> > > > >>>> > > > > > >> > > > >>>> > > > > > >> > > > >>>> > > > > > > >> > > > >>>> > > > > > > >> > > > >>>> > > Xiongqi (Wesley) Wu > > > > >> > > > >>>> > > > > > > >> > > > >>>> > > > > > > >> > > > >>>> > > On Mon, Sep 10, 2018 at 11:15 AM Colin McCabe < > > > > >> > > cmcc...@apache.org > > > > >> > > > > > > > > >> > > > >>>> > wrote: > > > > >> > > > >>>> > > > > > > >> > > > >>>> > > > I don't have a strong opinion. But I think we > should > > > > >> > probably > > > > >> > > be > > > > >> > > > >>>> > > > consistent with how segment.ms works, and just > use > > > 0. > > > > >> > > > >>>> > > > > > > > >> > > > >>>> > > > best, > > > > >> > > > >>>> > > > Colin > > > > >> > > > >>>> > > > > > > > >> > > > >>>> > > > > > > > >> > > > >>>> > > > On Wed, Sep 5, 2018, at 21:19, Brett Rann wrote: > > > > >> > > > >>>> > > > > OK thanks for that clarification. I see why > you're > > > > >> > > > uncomfortable > > > > >> > > > >>>> > with 0 > > > > >> > > > >>>> > > > now. > > > > >> > > > >>>> > > > > > > > > >> > > > >>>> > > > > I'm not really fussed. I just prefer > consistency in > > > > >> > > > >>>> configuration > > > > >> > > > >>>> > > > options. > > > > >> > > > >>>> > > > > > > > > >> > > > >>>> > > > > Personally I lean towards treating 0 and 1 > > > similarly > > > > in > > > > >> > that > > > > >> > > > >>>> > scenario, > > > > >> > > > >>>> > > > > because it favours the person thinking about > > > setting > > > > >> the > > > > >> > > > >>>> > configurations, > > > > >> > > > >>>> > > > > and a person doesn't care about a 1ms edge case > > > > >> especially > > > > >> > > > when > > > > >> > > > >>>> the > > > > >> > > > >>>> > > > context > > > > >> > > > >>>> > > > > is the true minimum is tied to the log cleaner > > > > cadence. > > > > >> > > > >>>> > > > > > > > > >> > > > >>>> > > > > Introducing 0 to mean "disabled" because there > is > > > > some > > > > >> > > > >>>> uniquness in > > > > >> > > > >>>> > > > > segment.ms not being able to be set to 0, > reduces > > > > >> > > > configuration > > > > >> > > > >>>> > > > consistency > > > > >> > > > >>>> > > > > in favour of capturing a MS gap in an edge case > > > that > > > > >> > nobody > > > > >> > > > >>>> would > > > > >> > > > >>>> > ever > > > > >> > > > >>>> > > > > notice. For someone to understand why > everywhere > > > else > > > > >> -1 > > > > >> > is > > > > >> > > > >>>> used to > > > > >> > > > >>>> > > > > disable, but here 0 is used, they would need to > > > learn > > > > >> > about > > > > >> > > > >>>> > segment.ms > > > > >> > > > >>>> > > > > having a 1ms minimum and then after learning > would > > > > >> think > > > > >> > > "who > > > > >> > > > >>>> cares > > > > >> > > > >>>> > about > > > > >> > > > >>>> > > > > 1ms?" in this context. I would anyway :) > > > > >> > > > >>>> > > > > > > > > >> > > > >>>> > > > > my 2c anyway. Will again defer to majority. > Curious > > > > >> which > > > > >> > > way > > > > >> > > > >>>> Colin > > > > >> > > > >>>> > falls > > > > >> > > > >>>> > > > > now. > > > > >> > > > >>>> > > > > > > > > >> > > > >>>> > > > > Don't want to spend more time on this though, > It's > > > > well > > > > >> > into > > > > >> > > > >>>> > > > bikeshedding > > > > >> > > > >>>> > > > > territory now. :) > > > > >> > > > >>>> > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > >>>> > > > > On Thu, Sep 6, 2018 at 1:31 PM xiongqi wu < > > > > >> > > > xiongq...@gmail.com> > > > > >> > > > >>>> > wrote: > > > > >> > > > >>>> > > > > > > > > >> > > > >>>> > > > > > I want to honor the minimum value of > segment.ms > > > > >> (which > > > > >> > is > > > > >> > > > >>>> 1ms) to > > > > >> > > > >>>> > > > force > > > > >> > > > >>>> > > > > > roll an active segment. > > > > >> > > > >>>> > > > > > So if we set "max.compaction.lag.ms" any > value > > > > > 0, > > > > >> the > > > > >> > > > >>>> minimum of > > > > >> > > > >>>> > > > > > max.compaction.lag.ms and segment.ms will be > > > used > > > > to > > > > >> > seal > > > > >> > > > an > > > > >> > > > >>>> > active > > > > >> > > > >>>> > > > > > segment. > > > > >> > > > >>>> > > > > > > > > > >> > > > >>>> > > > > > If we set max.compaction.lag.ms to 0, the > > > current > > > > >> > > > >>>> implementation > > > > >> > > > >>>> > will > > > > >> > > > >>>> > > > > > treat it as disabled. > > > > >> > > > >>>> > > > > > > > > > >> > > > >>>> > > > > > It is a little bit weird to treat > > > > >> max.compaction.lag=0 > > > > >> > the > > > > >> > > > >>>> same as > > > > >> > > > >>>> > > > > > max.compaction.lag=1. > > > > >> > > > >>>> > > > > > > > > > >> > > > >>>> > > > > > There might be a reason why we set the > minimum of > > > > >> > > > segment.ms > > > > >> > > > >>>> to 1, > > > > >> > > > >>>> > > > and I > > > > >> > > > >>>> > > > > > don't want to break this assumption. > > > > >> > > > >>>> > > > > > > > > > >> > > > >>>> > > > > > > > > > >> > > > >>>> > > > > > > > > > >> > > > >>>> > > > > > Xiongqi (Wesley) Wu > > > > >> > > > >>>> > > > > > > > > > >> > > > >>>> > > > > > > > > > >> > > > >>>> > > > > > On Wed, Sep 5, 2018 at 7:54 PM Brett Rann > > > > >> > > > >>>> > <br...@zendesk.com.invalid> > > > > >> > > > >>>> > > > > > wrote: > > > > >> > > > >>>> > > > > > > > > > >> > > > >>>> > > > > > > You're rolling a new segment if the > condition > > > is > > > > >> met > > > > >> > > > right? > > > > >> > > > >>>> So > > > > >> > > > >>>> > I'm > > > > >> > > > >>>> > > > > > > struggling to understand the relevance of > > > > >> segment.ms > > > > >> > > > here. > > > > >> > > > >>>> > Maybe an > > > > >> > > > >>>> > > > > > > example > > > > >> > > > >>>> > > > > > > would help my understanding: > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > segment.ms=9999999 > > > > >> > > > >>>> > > > > > > *min.cleanable.dirty.ratio=1* > > > > >> > > > >>>> > > > > > > max.compaction.lag.ms=1 > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > When a duplicate message comes in, after > 1ms > > > the > > > > >> topic > > > > >> > > > >>>> should be > > > > >> > > > >>>> > > > eligible > > > > >> > > > >>>> > > > > > > for compaction when the log compaction > thread > > > > gets > > > > >> > > around > > > > >> > > > to > > > > >> > > > >>>> > > > evaluating > > > > >> > > > >>>> > > > > > the > > > > >> > > > >>>> > > > > > > topic. > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > if we have > > > > >> > > > >>>> > > > > > > segment.ms=9999999 > > > > >> > > > >>>> > > > > > > *min.cleanable.dirty.ratio=1* > > > > >> > > > >>>> > > > > > > max.compaction.lag.ms=0 > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > When a duplicate message comes in, after > 0ms > > > the > > > > >> topic > > > > >> > > > >>>> should be > > > > >> > > > >>>> > > > eligible > > > > >> > > > >>>> > > > > > > for compaction when the log compaction > thread > > > > gets > > > > >> > > around > > > > >> > > > to > > > > >> > > > >>>> > > > evaluating > > > > >> > > > >>>> > > > > > the > > > > >> > > > >>>> > > > > > > topic. > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > In both of those cases the change would > mean a > > > > new > > > > >> > > segment > > > > >> > > > >>>> is > > > > >> > > > >>>> > rolled > > > > >> > > > >>>> > > > so > > > > >> > > > >>>> > > > > > the > > > > >> > > > >>>> > > > > > > new message would be part of the compaction > > > > task. 0 > > > > >> > and > > > > >> > > 1 > > > > >> > > > >>>> are > > > > >> > > > >>>> > > > practically > > > > >> > > > >>>> > > > > > > the same meaning since neither is > providing an > > > > >> actual > > > > >> > > > >>>> guarantee > > > > >> > > > >>>> > at > > > > >> > > > >>>> > > > such > > > > >> > > > >>>> > > > > > low > > > > >> > > > >>>> > > > > > > MS settings, but effectively tying it to > both > > > the > > > > >> > > > frequency > > > > >> > > > >>>> of > > > > >> > > > >>>> > the > > > > >> > > > >>>> > > > log > > > > >> > > > >>>> > > > > > > cleaner running and the priority of the > given > > > > topic > > > > >> > > being > > > > >> > > > >>>> the > > > > >> > > > >>>> > highest > > > > >> > > > >>>> > > > > > > priority of all topics that are evaluated > for > > > > >> cleaning > > > > >> > > on > > > > >> > > > >>>> the > > > > >> > > > >>>> > next > > > > >> > > > >>>> > > > cycle. > > > > >> > > > >>>> > > > > > > You've captured that nuance with careful > > > > "skipped" > > > > >> > > wording > > > > >> > > > >>>> in > > > > >> > > > >>>> > the KIP > > > > >> > > > >>>> > > > > > > here "controls > > > > >> > > > >>>> > > > > > > the max time interval a message/segment > can be > > > > >> skipped > > > > >> > > for > > > > >> > > > >>>> log > > > > >> > > > >>>> > > > > > compaction". > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > How is 0 different to 1, practically? And > how > > > is > > > > it > > > > >> > > > >>>> relating to > > > > >> > > > >>>> > > > > > segment.ms > > > > >> > > > >>>> > > > > > > ? > > > > >> > > > >>>> > > > > > > Is it that you're proposing to have 0 mean > "use > > > > >> > > > segment.ms > > > > >> > > > >>>> > > > instead?" as > > > > >> > > > >>>> > > > > > a > > > > >> > > > >>>> > > > > > > kind of third option? > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > On Thu, Sep 6, 2018 at 11:34 AM xiongqi wu > < > > > > >> > > > >>>> xiongq...@gmail.com> > > > > >> > > > >>>> > > > wrote: > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > > To make it clear, > > > > >> > > > >>>> > > > > > > > I don't against using -1 as disabled, > but we > > > > >> need to > > > > >> > > > come > > > > >> > > > >>>> up > > > > >> > > > >>>> > with > > > > >> > > > >>>> > > > the > > > > >> > > > >>>> > > > > > > > meaning of "0". > > > > >> > > > >>>> > > > > > > > If "0" means immediate compaction, but > the > > > > actual > > > > >> > > > >>>> compaction > > > > >> > > > >>>> > lag > > > > >> > > > >>>> > > > will > > > > >> > > > >>>> > > > > > be > > > > >> > > > >>>> > > > > > > > segment.ms. > > > > >> > > > >>>> > > > > > > > It has longer lag than setting the value > to > > > be > > > > >> half > > > > >> > of > > > > >> > > > >>>> > segment.ms. > > > > >> > > > >>>> > > > > > > > We cannot provide "0" as max compaction > lag. > > > > >> > > > >>>> > > > > > > > > > > > >> > > > >>>> > > > > > > > Here are two options. > > > > >> > > > >>>> > > > > > > > Option 1: > > > > >> > > > >>>> > > > > > > > Keep 0 as disabled > > > > >> > > > >>>> > > > > > > > Option 2: > > > > >> > > > >>>> > > > > > > > -1 (disabled), 0 (max compaction lag = > > > > >> segment.ms), > > > > >> > > and > > > > >> > > > >>>> > others. > > > > >> > > > >>>> > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > >> > > > >>>> > > > > > > > Xiongqi (Wesley) Wu > > > > >> > > > >>>> > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > >> > > > >>>> > > > > > > > On Wed, Sep 5, 2018 at 5:49 PM Brett Rann > > > > >> > > > >>>> > > > <br...@zendesk.com.invalid> > > > > >> > > > >>>> > > > > > > > wrote: > > > > >> > > > >>>> > > > > > > > > > > > >> > > > >>>> > > > > > > > > -1 is consistent as "special" with > these > > > > >> settings > > > > >> > > for > > > > >> > > > >>>> > example: > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > log.retention.bytes > > > > >> > > > >>>> > > > > > > > > socket.received.buffer.bytes > > > > >> > > > >>>> > > > > > > > > socket.send.buffer.bytes > > > > >> > > > >>>> > > > > > > > > queued.max.request.bytes > > > > >> > > > >>>> > > > > > > > > retention.bytes > > > > >> > > > >>>> > > > > > > > > retention.ms > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > and acks. > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > Where it may mean no limit, use OS > > > defaults, > > > > >> max > > > > >> > > > (acks), > > > > >> > > > >>>> > etc. I > > > > >> > > > >>>> > > > don't > > > > >> > > > >>>> > > > > > > see > > > > >> > > > >>>> > > > > > > > > much convention of 0 meaning those > things. > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > There are some NULLs but it seems > convetion > > > > >> there > > > > >> > is > > > > >> > > > >>>> NULL is > > > > >> > > > >>>> > used > > > > >> > > > >>>> > > > > > where > > > > >> > > > >>>> > > > > > > > > there's another setting in the > hierarchy > > > that > > > > >> > would > > > > >> > > be > > > > >> > > > >>>> used > > > > >> > > > >>>> > > > instead. > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > On Thu, Sep 6, 2018 at 10:42 AM Brett > Rann > > > < > > > > >> > > > >>>> > br...@zendesk.com> > > > > >> > > > >>>> > > > > > wrote: > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > If segment.ms can't be set to 0, > then > > > > we're > > > > >> not > > > > >> > > > being > > > > >> > > > >>>> > > > consistent > > > > >> > > > >>>> > > > > > > > > > by using 0 for this new setting? I > throw > > > > out > > > > >> -1 > > > > >> > > for > > > > >> > > > >>>> > > > consideration > > > > >> > > > >>>> > > > > > > > > > again :) > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > On Thu, Sep 6, 2018 at 10:03 AM > xiongqi > > > wu > > > > < > > > > >> > > > >>>> > > > xiongq...@gmail.com> > > > > >> > > > >>>> > > > > > > > wrote: > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> Thanks. I will document after PR is > > > > merged. > > > > >> > > > >>>> > > > > > > > > >> > > > > >> > > > >>>> > > > > > > > > >> BTW, Kafka enforce the minimum of " > > > > >> segment.ms" > > > > >> > > to > > > > >> > > > >>>> 1, we > > > > >> > > > >>>> > > > cannot > > > > >> > > > >>>> > > > > > set > > > > >> > > > >>>> > > > > > > " > > > > >> > > > >>>> > > > > > > > > >> segment.ms" to 0. > > > > >> > > > >>>> > > > > > > > > >> > > > > >> > > > >>>> > > > > > > > > >> I also updated the title of this > KIP. > > > > >> > > > >>>> > > > > > > > > >> > > > > >> > > > >>>> > > > > > > > > >> Xiongqi (Wesley) Wu > > > > >> > > > >>>> > > > > > > > > >> > > > > >> > > > >>>> > > > > > > > > >> > > > > >> > > > >>>> > > > > > > > > >> On Wed, Sep 5, 2018 at 4:34 PM Brett > > > Rann > > > > >> > > > >>>> > > > > > <br...@zendesk.com.invalid > > > > >> > > > >>>> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> wrote: > > > > >> > > > >>>> > > > > > > > > >> > > > > >> > > > >>>> > > > > > > > > >> > I withdraw my comments on -1 > since i'm > > > > in > > > > >> the > > > > >> > > > >>>> minority. > > > > >> > > > >>>> > :) > > > > >> > > > >>>> > > > Can > > > > >> > > > >>>> > > > > > we > > > > >> > > > >>>> > > > > > > > > >> > make sure 0 gets documented as > meaning > > > > >> > disabled > > > > >> > > > >>>> here: > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> https://kafka.apache.org/documentation/#brokerconfigs > > > > >> > > > >>>> > < > https://kafka.apache.org/documentation/#brokerconfigs> > > > > >> > > > >>>> > > > > > < > > > > >> https://kafka.apache.org/documentation/#brokerconfigs > > > > >> > > > >>>> > < > https://kafka.apache.org/documentation/#brokerconfigs>> > > > > >> > > > >>>> > > > > > > > < > > > > >> > > https://kafka.apache.org/documentation/#brokerconfigs > > > > >> > > > >>>> > < > https://kafka.apache.org/documentation/#brokerconfigs> > > > > >> > > > >>>> > > > > > < > > > > >> https://kafka.apache.org/documentation/#brokerconfigs > > > > >> > > > >>>> > < > https://kafka.apache.org/documentation/#brokerconfigs > > > >>> > > > > >> > > > >>>> > > > > > > > > >> < > > > > >> > > > >>>> https://kafka.apache.org/documentation/#brokerconfigs > > > > >> > > > >>>> > < > https://kafka.apache.org/documentation/#brokerconfigs> > > > > >> > > > >>>> > > > > > < > > > > >> https://kafka.apache.org/documentation/#brokerconfigs > > > > >> > > > >>>> > < > https://kafka.apache.org/documentation/#brokerconfigs>> > > > > >> > > > >>>> > > > > > > > < > > > > >> > > https://kafka.apache.org/documentation/#brokerconfigs > > > > >> > > > >>>> > < > https://kafka.apache.org/documentation/#brokerconfigs> > > > > >> > > > >>>> > > > > > < > > > > >> https://kafka.apache.org/documentation/#brokerconfigs > > > > >> > > > >>>> > < > https://kafka.apache.org/documentation/#brokerconfigs > > > >>>> > > > > ? > > > > >> > > > >>>> > > > > > > > > >> > And while there it would be good > if > > > > >> > segment.ms > > > > >> > > > is > > > > >> > > > >>>> > > > documented > > > > >> > > > >>>> > > > > > > > > >> > that 0 is disabled too. (there's > some > > > > >> > hierarchy > > > > >> > > > of > > > > >> > > > >>>> > configs > > > > >> > > > >>>> > > > for > > > > >> > > > >>>> > > > > > > that > > > > >> > > > >>>> > > > > > > > > too > > > > >> > > > >>>> > > > > > > > > >> > if its not set and null for others > > > means > > > > >> > > > disabled!) > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > On Thu, Sep 6, 2018 at 4:44 AM > xiongqi > > > > wu > > > > >> < > > > > >> > > > >>>> > > > xiongq...@gmail.com> > > > > >> > > > >>>> > > > > > > > > wrote: > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > > If we use 0 to indicate > immediate > > > > >> > compaction, > > > > >> > > > the > > > > >> > > > >>>> > > > compaction > > > > >> > > > >>>> > > > > > lag > > > > >> > > > >>>> > > > > > > > is > > > > >> > > > >>>> > > > > > > > > >> > > determined by segment.ms in > worst > > > > >> case. If > > > > >> > > > >>>> segment.ms > > > > >> > > > >>>> > is > > > > >> > > > >>>> > > > 24 > > > > >> > > > >>>> > > > > > > > hours, > > > > >> > > > >>>> > > > > > > > > >> > > "immediate compaction" is a > weaker > > > > >> > guarantee > > > > >> > > > than > > > > >> > > > >>>> > setting > > > > >> > > > >>>> > > > any > > > > >> > > > >>>> > > > > > > > value > > > > >> > > > >>>> > > > > > > > > >> less > > > > >> > > > >>>> > > > > > > > > >> > > than 24 hours. By the > definition of > > > > "max > > > > >> > > > >>>> compaction > > > > >> > > > >>>> > lag", > > > > >> > > > >>>> > > > we > > > > >> > > > >>>> > > > > > > > cannot > > > > >> > > > >>>> > > > > > > > > >> have > > > > >> > > > >>>> > > > > > > > > >> > > zero lag. So I use 0 to indicate > > > > >> "disable". > > > > >> > > > >>>> > > > > > > > > >> > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > >> > > > >>>> > > > > > > > > >> > > Xiongqi (Wesley) Wu > > > > >> > > > >>>> > > > > > > > > >> > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > >> > > > >>>> > > > > > > > > >> > > On Wed, Sep 5, 2018 at 8:34 AM > Colin > > > > >> > McCabe < > > > > >> > > > >>>> > > > > > cmcc...@apache.org > > > > >> > > > >>>> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> wrote: > > > > >> > > > >>>> > > > > > > > > >> > > > > > > >> > > > >>>> > > > > > > > > >> > > > On Tue, Sep 4, 2018, at 22:11, > > > Brett > > > > >> Rann > > > > >> > > > >>>> wrote: > > > > >> > > > >>>> > > > > > > > > >> > > > > > That's a fair point. We > should > > > > >> make > > > > >> > 0 = > > > > >> > > > >>>> > disable, to > > > > >> > > > >>>> > > > be > > > > >> > > > >>>> > > > > > > > > >> consistent > > > > >> > > > >>>> > > > > > > > > >> > > with > > > > >> > > > >>>> > > > > > > > > >> > > > > the other settings. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > -1 is used elsewhere for > disable > > > > and > > > > >> > when > > > > >> > > > >>>> seeing > > > > >> > > > >>>> > it > > > > >> > > > >>>> > > > in a > > > > >> > > > >>>> > > > > > > > config > > > > >> > > > >>>> > > > > > > > > >> it's > > > > >> > > > >>>> > > > > > > > > >> > > > clear > > > > >> > > > >>>> > > > > > > > > >> > > > > that it's a special > meaning. 0 > > > > >> doesn't > > > > >> > > have > > > > >> > > > >>>> to > > > > >> > > > >>>> > mean > > > > >> > > > >>>> > > > > > instant, > > > > >> > > > >>>> > > > > > > > it > > > > >> > > > >>>> > > > > > > > > >> just > > > > >> > > > >>>> > > > > > > > > >> > > > means > > > > >> > > > >>>> > > > > > > > > >> > > > > as quickly as possible. I > don't > > > > >> think 0 > > > > >> > > is > > > > >> > > > >>>> > intuitive > > > > >> > > > >>>> > > > for > > > > >> > > > >>>> > > > > > > > > disabled > > > > >> > > > >>>> > > > > > > > > >> and > > > > >> > > > >>>> > > > > > > > > >> > > it > > > > >> > > > >>>> > > > > > > > > >> > > > > will be confusing. I wasn't > > > aware > > > > >> > > > segment.ms=0 > > > > >> > > > >>>> == > > > > >> > > > >>>> > > > > > disabled, > > > > >> > > > >>>> > > > > > > > > but I > > > > >> > > > >>>> > > > > > > > > >> > > think > > > > >> > > > >>>> > > > > > > > > >> > > > > that is also unintuitive. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > >> > > > >>>> > > > > > > > > >> > > > I think there is an argument > for > > > > >> keeping > > > > >> > > > these > > > > >> > > > >>>> two > > > > >> > > > >>>> > > > > > > > configurations > > > > >> > > > >>>> > > > > > > > > >> > > > consistent, since they are so > > > > >> similar. I > > > > >> > > > agree > > > > >> > > > >>>> that > > > > >> > > > >>>> > 0 > > > > >> > > > >>>> > > > was an > > > > >> > > > >>>> > > > > > > > > >> > unfortunate > > > > >> > > > >>>> > > > > > > > > >> > > > choice., > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > >> > > > >>>> > > > > > > > > >> > > > best, > > > > >> > > > >>>> > > > > > > > > >> > > > Colin > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > On Wed, Sep 5, 2018 at > 11:38 AM > > > > >> Colin > > > > >> > > > McCabe > > > > >> > > > >>>> < > > > > >> > > > >>>> > > > > > > > > cmcc...@apache.org> > > > > >> > > > >>>> > > > > > > > > >> > > wrote: > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > On Tue, Sep 4, 2018, at > 17:47, > > > > >> > xiongqi > > > > >> > > wu > > > > >> > > > >>>> wrote: > > > > >> > > > >>>> > > > > > > > > >> > > > > > > Colin, > > > > >> > > > >>>> > > > > > > > > >> > > > > > > Thank you for comments. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > see my inline reply > below. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > Xiongqi (Wesley) Wu > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > On Tue, Sep 4, 2018 at > 5:24 > > > PM > > > > >> > Colin > > > > >> > > > >>>> McCabe < > > > > >> > > > >>>> > > > > > > > > >> cmcc...@apache.org> > > > > >> > > > >>>> > > > > > > > > >> > > > wrote: > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > Hi Xiongqi, > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > Thanks for this KIP. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > The name seems a bit > > > > >> ambiguous. > > > > >> > Our > > > > >> > > > >>>> > compaction > > > > >> > > > >>>> > > > > > > policies > > > > >> > > > >>>> > > > > > > > > are > > > > >> > > > >>>> > > > > > > > > >> > > already > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > time-based, after > all. It > > > > >> seems > > > > >> > > like > > > > >> > > > >>>> this > > > > >> > > > >>>> > > > change is > > > > >> > > > >>>> > > > > > > > > focused > > > > >> > > > >>>> > > > > > > > > >> > > around > > > > >> > > > >>>> > > > > > > > > >> > > > > > adding > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > a “ > max.compaction.lag.ms > > > ." > > > > >> > Perhaps > > > > >> > > > >>>> the KIP > > > > >> > > > >>>> > > > title > > > > >> > > > >>>> > > > > > > should > > > > >> > > > >>>> > > > > > > > > be > > > > >> > > > >>>> > > > > > > > > >> > > > something > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > like "add maximum > > > compaction > > > > >> lag > > > > >> > > > time"? > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > ==========> sure. I > will > > > > >> change > > > > >> > the > > > > >> > > > >>>> title. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > The active segment is > > > forced > > > > >> to > > > > >> > > roll > > > > >> > > > >>>> when > > > > >> > > > >>>> > > > either " > > > > >> > > > >>>> > > > > > > > > >> > > > > > max.compaction.lag.ms" > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > or "segment.ms" ( > > > > >> log.roll.ms > > > > >> > and > > > > >> > > > >>>> > > > log.roll.hours) > > > > >> > > > >>>> > > > > > > has > > > > >> > > > >>>> > > > > > > > > >> > reached. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > If the > > > > max.compaction.lag.ms > > > > >> is > > > > >> > > low, > > > > >> > > > >>>> it > > > > >> > > > >>>> > seems > > > > >> > > > >>>> > > > like > > > > >> > > > >>>> > > > > > > > > segments > > > > >> > > > >>>> > > > > > > > > >> > will > > > > >> > > > >>>> > > > > > > > > >> > > > be > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > rolled very > frequently. > > > This > > > > >> can > > > > >> > > be a > > > > >> > > > >>>> > source of > > > > >> > > > >>>> > > > > > > problems > > > > >> > > > >>>> > > > > > > > > in > > > > >> > > > >>>> > > > > > > > > >> the > > > > >> > > > >>>> > > > > > > > > >> > > > > > cluster, > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > since creating many > > > > different > > > > >> > small > > > > >> > > > log > > > > >> > > > >>>> > segments > > > > >> > > > >>>> > > > > > > > consumes > > > > >> > > > >>>> > > > > > > > > a > > > > >> > > > >>>> > > > > > > > > >> > huge > > > > >> > > > >>>> > > > > > > > > >> > > > > > amount of > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > cluster resources. > > > > Therefore, > > > > >> I > > > > >> > > would > > > > >> > > > >>>> > suggest > > > > >> > > > >>>> > > > > > adding a > > > > >> > > > >>>> > > > > > > > > >> > > broker-level > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > configuration which > allows > > > > us > > > > >> to > > > > >> > > set > > > > >> > > > a > > > > >> > > > >>>> > minimum > > > > >> > > > >>>> > > > value > > > > >> > > > >>>> > > > > > > for > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > max.compaction.lag.ms. > If > > > > we > > > > >> let > > > > >> > > > >>>> users set > > > > >> > > > >>>> > it > > > > >> > > > >>>> > > > on a > > > > >> > > > >>>> > > > > > > > > >> per-topic > > > > >> > > > >>>> > > > > > > > > >> > > > basis, > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > someone could set a > value > > > of > > > > >> 1 ms > > > > >> > > or > > > > >> > > > >>>> > something, > > > > >> > > > >>>> > > > and > > > > >> > > > >>>> > > > > > > > cause > > > > >> > > > >>>> > > > > > > > > >> > chaos. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > =========> this > applies to > > > > >> > > > segment.ms > > > > >> > > > >>>> as > > > > >> > > > >>>> > well. > > > > >> > > > >>>> > > > > > Today > > > > >> > > > >>>> > > > > > > > > users > > > > >> > > > >>>> > > > > > > > > >> can > > > > >> > > > >>>> > > > > > > > > >> > > > set " > > > > >> > > > >>>> > > > > > > > > >> > > > > > > segment.ms" to a very > low > > > > >> value, > > > > >> > and > > > > >> > > > >>>> cause a > > > > >> > > > >>>> > > > frequent > > > > >> > > > >>>> > > > > > > > > >> rolling of > > > > >> > > > >>>> > > > > > > > > >> > > > active > > > > >> > > > >>>> > > > > > > > > >> > > > > > > segments. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > Hi Xiongqi, > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > I agree that this is an > > > existing > > > > >> > > problem > > > > >> > > > >>>> with > > > > >> > > > >>>> > > > > > segment.ms. > > > > >> > > > >>>> > > > > > > > > >> However, > > > > >> > > > >>>> > > > > > > > > >> > > > that > > > > >> > > > >>>> > > > > > > > > >> > > > > > doesn't mean that we > shouldn't > > > > fix > > > > >> > it. > > > > >> > > As > > > > >> > > > >>>> you > > > > >> > > > >>>> > noted, > > > > >> > > > >>>> > > > > > there > > > > >> > > > >>>> > > > > > > > > will > > > > >> > > > >>>> > > > > > > > > >> be > > > > >> > > > >>>> > > > > > > > > >> > > more > > > > >> > > > >>>> > > > > > > > > >> > > > > > interest in these > topic-level > > > > >> > retention > > > > >> > > > >>>> > settings as > > > > >> > > > >>>> > > > a > > > > >> > > > >>>> > > > > > > result > > > > >> > > > >>>> > > > > > > > > of > > > > >> > > > >>>> > > > > > > > > >> > GDPR. > > > > >> > > > >>>> > > > > > > > > >> > > > It > > > > >> > > > >>>> > > > > > > > > >> > > > > > seems likely that > pre-existing > > > > >> > problems > > > > >> > > > >>>> will > > > > >> > > > >>>> > cause > > > > >> > > > >>>> > > > more > > > > >> > > > >>>> > > > > > > > > trouble. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > The fix seems relatively > > > > >> > > straightforward > > > > >> > > > >>>> here -- > > > > >> > > > >>>> > > > add a > > > > >> > > > >>>> > > > > > > > > >> broker-level > > > > >> > > > >>>> > > > > > > > > >> > > > > > minimum segment.ms that > > > > overrides > > > > >> > > > >>>> per-topic > > > > >> > > > >>>> > > > minimums. > > > > >> > > > >>>> > > > > > We > > > > >> > > > >>>> > > > > > > > can > > > > >> > > > >>>> > > > > > > > > >> also > > > > >> > > > >>>> > > > > > > > > >> > > fail > > > > >> > > > >>>> > > > > > > > > >> > > > > > with a helpful error > message > > > > when > > > > >> > > someone > > > > >> > > > >>>> > attempts > > > > >> > > > >>>> > > > to > > > > >> > > > >>>> > > > > > set > > > > >> > > > >>>> > > > > > > an > > > > >> > > > >>>> > > > > > > > > >> > invalid > > > > >> > > > >>>> > > > > > > > > >> > > > > > configuration. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > In my option, the > minimum > > > of " > > > > >> > > > >>>> > > > max.compaction.lag.ms" > > > > >> > > > >>>> > > > > > > > should > > > > >> > > > >>>> > > > > > > > > >> be > > > > >> > > > >>>> > > > > > > > > >> > > > > > > based on the minimum of > " > > > > >> > segment.ms > > > > >> > > ". > > > > >> > > > >>>> Since > > > > >> > > > >>>> > > > today the > > > > >> > > > >>>> > > > > > > > > >> minimum of > > > > >> > > > >>>> > > > > > > > > >> > > > > > segment.ms > > > > >> > > > >>>> > > > > > > > > >> > > > > > > is 1, " > > > max.compaction.lag.ms" > > > > >> also > > > > >> > > > >>>> starts > > > > >> > > > >>>> > with > > > > >> > > > >>>> > > > 1. "0" > > > > >> > > > >>>> > > > > > > > means > > > > >> > > > >>>> > > > > > > > > >> > > > disable. I > > > > >> > > > >>>> > > > > > > > > >> > > > > > > can use -1 as disable, > but > > > it > > > > is > > > > >> > hard > > > > >> > > > to > > > > >> > > > >>>> > define > > > > >> > > > >>>> > > > the > > > > >> > > > >>>> > > > > > > > meaning > > > > >> > > > >>>> > > > > > > > > >> of 0 > > > > >> > > > >>>> > > > > > > > > >> > > > because > > > > >> > > > >>>> > > > > > > > > >> > > > > > we > > > > >> > > > >>>> > > > > > > > > >> > > > > > > cannot just roll the > active > > > > >> segment > > > > >> > > > >>>> > immediately. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > That's a fair point. We > should > > > > >> make > > > > >> > 0 = > > > > >> > > > >>>> > disable, to > > > > >> > > > >>>> > > > be > > > > >> > > > >>>> > > > > > > > > >> consistent > > > > >> > > > >>>> > > > > > > > > >> > > with > > > > >> > > > >>>> > > > > > > > > >> > > > the > > > > >> > > > >>>> > > > > > > > > >> > > > > > other settings. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > best, > > > > >> > > > >>>> > > > > > > > > >> > > > > > Colin > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > -- Note that an > > > alternative > > > > >> > > > >>>> configuration > > > > >> > > > >>>> > is to > > > > >> > > > >>>> > > > use > > > > >> > > > >>>> > > > > > -1 > > > > >> > > > >>>> > > > > > > > as > > > > >> > > > >>>> > > > > > > > > >> > > > "disabled" > > > > >> > > > >>>> > > > > > > > > >> > > > > > and > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > 0 > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > as "immediate > > > compaction". > > > > >> > > Because > > > > >> > > > >>>> > compaction > > > > >> > > > >>>> > > > lag > > > > >> > > > >>>> > > > > > is > > > > >> > > > >>>> > > > > > > > > still > > > > >> > > > >>>> > > > > > > > > >> > > > determined > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > based on > > > > min.compaction.lag > > > > >> and > > > > >> > > how > > > > >> > > > >>>> long > > > > >> > > > >>>> > to > > > > >> > > > >>>> > > > roll > > > > >> > > > >>>> > > > > > an > > > > >> > > > >>>> > > > > > > > > active > > > > >> > > > >>>> > > > > > > > > >> > > > segment, > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > the > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > actual lag for > > > compaction > > > > is > > > > >> > > > >>>> undetermined > > > > >> > > > >>>> > if > > > > >> > > > >>>> > > > we > > > > >> > > > >>>> > > > > > use > > > > >> > > > >>>> > > > > > > > "0". > > > > >> > > > >>>> > > > > > > > > >> On > > > > >> > > > >>>> > > > > > > > > >> > the > > > > >> > > > >>>> > > > > > > > > >> > > > other > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > hand, we can > already set > > > > >> > > > >>>> > > > > > "min.cleanable.dirty.ratio" > > > > >> > > > >>>> > > > > > > > to > > > > >> > > > >>>> > > > > > > > > >> > achieve > > > > >> > > > >>>> > > > > > > > > >> > > > the > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > same > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > goal. So here we > choose > > > > "0" > > > > >> as > > > > >> > > > >>>> "disabled". > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > I would prefer -1 to > be > > > the > > > > >> > invalid > > > > >> > > > >>>> setting. > > > > >> > > > >>>> > > > > > Treating > > > > >> > > > >>>> > > > > > > 0 > > > > >> > > > >>>> > > > > > > > > >> > > differently > > > > >> > > > >>>> > > > > > > > > >> > > > > > than > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > 1 seems strange to me. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > =====> see my previous > > > > >> comment, I > > > > >> > > am > > > > >> > > > >>>> not > > > > >> > > > >>>> > > > strongly > > > > >> > > > >>>> > > > > > > > against, > > > > >> > > > >>>> > > > > > > > > >> but > > > > >> > > > >>>> > > > > > > > > >> > 0 > > > > >> > > > >>>> > > > > > > > > >> > > is > > > > >> > > > >>>> > > > > > > > > >> > > > > > not a > > > > >> > > > >>>> > > > > > > > > >> > > > > > > valid configuration in > my > > > > >> option. > > > > >> > So > > > > >> > > I > > > > >> > > > >>>> use > > > > >> > > > >>>> > "0" as > > > > >> > > > >>>> > > > > > > disabled > > > > >> > > > >>>> > > > > > > > > >> state. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > best, > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > Colin > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > On Tue, Sep 4, 2018, > at > > > > 15:04, > > > > >> > > > xiongqi > > > > >> > > > >>>> wu > > > > >> > > > >>>> > wrote: > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > Let's VOTE for this > KIP. > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > KIP: > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > > >> > > > >>>> > > > > > > > < > > > > >> > > > >>>> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> >>> > > > > >> > > > >>>> > > > > > > > > >> < > > > > >> > > > >>>> > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > > >> > > > >>>> > > > > > > > < > > > > >> > > > >>>> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> >>>> > > > > >> > > > >>>> > > > > > > > > >> > > < > > > > >> > > > >>>> > > > > > > > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > > >> > > > >>>> > > > > > > > < > > > > >> > > > >>>> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> >>> > > > > >> > > > >>>> > > > > > > > > >> < > > > > >> > > > >>>> > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > > >> > > > >>>> > > > > > > > < > > > > >> > > > >>>> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> >>>>> > > > > >> > > > >>>> > > > > > > > > >> > > > > > < > > > > >> > > > >>>> > > > > > > > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > > >> > > > >>>> > > > > > > > < > > > > >> > > > >>>> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> >>> > > > > >> > > > >>>> > > > > > > > > >> < > > > > >> > > > >>>> > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > > >> > > > >>>> > > > > > > > < > > > > >> > > > >>>> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> >>>> > > > > >> > > > >>>> > > > > > > > > >> > > < > > > > >> > > > >>>> > > > > > > > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > > >> > > > >>>> > > > > > > > < > > > > >> > > > >>>> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> >>> > > > > >> > > > >>>> > > > > > > > > >> < > > > > >> > > > >>>> > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > > >> > > > >>>> > > > > > > > < > > > > >> > > > >>>> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > > > > > > >> > > > >>>> > > > > > < > > > > >> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > > > >>>> > < > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-354 > > > > >> > >>>>>> > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > > >> > > > %3A+Time-based+log+compaction+policy > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > Implementation: > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > > >> > > > >>>> https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>> > > > > >> > > > >>>> > > > > > > > < > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>>> > > > > >> > > > >>>> > > > > > > > > >> < > > > > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>> > > > > >> > > > >>>> > > > > > > > < > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>>>> > > > > >> > > > >>>> > > > > > > > > >> > > < > > > > >> https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>> > > > > >> > > > >>>> > > > > > > > < > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>>> > > > > >> > > > >>>> > > > > > > > > >> < > > > > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>> > > > > >> > > > >>>> > > > > > > > < > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>>>>> > > > > >> > > > >>>> > > > > > > > > >> > > > > > < > > > > >> > > > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>> > > > > >> > > > >>>> > > > > > > > < > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>>> > > > > >> > > > >>>> > > > > > > > > >> < > > > > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>> > > > > >> > > > >>>> > > > > > > > < > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>>>> > > > > >> > > > >>>> > > > > > > > > >> > > < > > > > >> https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>> > > > > >> > > > >>>> > > > > > > > < > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>>> > > > > >> > > > >>>> > > > > > > > > >> < > > > > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>> > > > > >> > > > >>>> > > > > > > > < > https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611> > > > > >> > > > >>>> > > > > > <https://github.com/apache/kafka/pull/5611 > > > > >> > > > >>>> > <https://github.com/apache/kafka/pull/5611>>>>>> > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > Xiongqi (Wesley) Wu > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > -- > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > Brett Rann > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > Senior DevOps Engineer > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > Zendesk International Ltd > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > 395 Collins Street, Melbourne VIC > 3000 > > > > >> > > Australia > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > Mobile: +61 (0) 418 826 017 > > > > >> > > > >>>> > > > > > > > > >> > > > > > >> > > > >>>> > > > > > > > > >> > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > -- > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > Brett Rann > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > Senior DevOps Engineer > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > Zendesk International Ltd > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > 395 Collins Street, Melbourne VIC > 3000 > > > > >> Australia > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > Mobile: +61 (0) 418 826 017 > > > > >> > > > >>>> > > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > -- > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > Brett Rann > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > Senior DevOps Engineer > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > Zendesk International Ltd > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > 395 Collins Street, Melbourne VIC 3000 > > > > >> Australia > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > Mobile: +61 (0) 418 826 017 > > > > >> > > > >>>> > > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > > >> > > > >>>> > > > > > > > > > > >> > > > >>>> > > > > > > > > > >> > > > >>>> > > > > > > > >> > > > >>>> > > > > > >> > > > >>>> > > > > >> > > > >>> > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > > > >