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
>>> > > > > > > > >
>>> > > > > > > >
>>> > > > > > >
>>> > > > > >
>>> > > >
>>> >
>>>
>>

Reply via email to