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

Reply via email to