Thanks Jiangjie,

I see the need for sensitive data purging, the above proposed change LGTM.
One minor concern is that a wrongly marked timestamp on the first record
could cause the segment to roll much later / earlier, though it may be rare.

Guozhang

On Fri, Jun 10, 2016 at 10:07 AM, Becket Qin <becket....@gmail.com> wrote:

> Hi,
>
> During the implementation of KIP-33, we found it might be useful to have a
> more deterministic time based log rolling than what proposed in the KIP.
>
> The current KIP proposal uses the largest timestamp in the segment for time
> based rolling. The active log segment only rolls when there is no message
> appended in max.roll.ms since the largest timestamp in the segment. i.e.
> the rolling time may change if user keeping appending messages into the
> segment. This may not be a desirable behavior for people who have sensitive
> data and want to make sure they are removed after some time.
>
> To solve the above issue, we want to modify the KIP proposal regarding the
> time based rolling to the following behavior. The time based log rolling
> will be based on the first message with a timestamp in the log segment if
> there is such a message. If no message in the segment has a timestamp, the
> time based log rolling will still be based on log segment create time,
> which is the same as we are doing now. The reasons we don't want to always
> roll based on file create time are because 1) the message timestamp may be
> assigned by clients which can be different from the create time of the log
> segment file. 2) On some Linux, the file create time is not available, so
> using segment file create time may not always work.
>
> Do people have any concern for this change? I will update the KIP if people
> think the change is OK.
>
> Thanks,
>
> Jiangjie (Becket) Qin
>
> On Tue, Apr 19, 2016 at 6:27 PM, Becket Qin <becket....@gmail.com> wrote:
>
> > Thanks Joel and Ismael. I just updated the KIP based on your feedback.
> >
> > KIP-33 has passed with +4 (binding) and +2 (non-binding)
> >
> > Thanks everyone for the reading, feedback and voting!
> >
> > Jiangjie (Becket) Qin
> >
> > On Tue, Apr 19, 2016 at 5:25 PM, Ismael Juma <ism...@juma.me.uk> wrote:
> >
> >> Thanks Becket. I think it would be nice to update the KIP with regards
> to
> >> point 3 and 4.
> >>
> >> In any case, +1 (non-binding)
> >>
> >> Ismael
> >>
> >> On Tue, Apr 19, 2016 at 2:03 AM, Becket Qin <becket....@gmail.com>
> wrote:
> >>
> >> > Thanks for the comments Ismael. Please see the replies inline.
> >> >
> >> > On Mon, Apr 18, 2016 at 6:50 AM, Ismael Juma <ism...@juma.me.uk>
> wrote:
> >> >
> >> > > Hi Jiangjie,
> >> > >
> >> > > Thanks for the KIP, it's a nice improvement. Since it seems like we
> >> have
> >> > > been using the voting thread for discussion, I'll do the same.
> >> > >
> >> > > A few minor comments/questions:
> >> > >
> >> > > 1. The proposed name for the time index file
> >> > `SegmentBaseOffset.timeindex`.
> >> > > Would `SegmentBaseOffset.time-index` be a little better? It would
> >> clearly
> >> > > separate the type of index in case we add additional index types in
> >> the
> >> > > future.
> >> > >
> >> > I have no strong opinion on this, I am not adding any thing separator
> >> > because it is more regex friendly.
> >> > I am not sure about the other indexes, time and space seems to be two
> >> most
> >> > common dimensions.
> >> >
> >> > 2. When describing the time index entry, we say "Offset - the next
> >> offset
> >> > > when the time index entry is inserted". I found the mention of
> `next`
> >> a
> >> > bit
> >> > > confusing as it looks to me like the time index entry has the first
> >> > offset
> >> > > in the message set.
> >> >
> >> > This semantic meaning is a little different from the offset index. The
> >> > offset index information is self-contained by nature. i.e. all the
> >> offsets
> >> > before is smaller than the offset of this message set. So we only need
> >> to
> >> > say "the offset of this message set is OFFSET". This does not quite
> >> apply
> >> > to the time index because the max timestamp may or may not be in the
> >> > message set being appended. So we have to either say, "the max
> timestamp
> >> > before I append this message set is T", or "the max timestamp after I
> >> > appended this message set is T". The former case means that we can
> skip
> >> all
> >> > the previous messages if we are looking for a timestamp > T and start
> >> from
> >> > this offset. The latter one means if we are searching for timestamp >
> >> T, we
> >> > should start after this message set, which is essentially the same as
> >> the
> >> > former case but require an additional interpretation.
> >> >
> >> > 3. We say "The default initial / max size of the time index files is
> the
> >> > > same as the offset index files. (time index entry is 1.5x of the
> size
> >> of
> >> > > offset index entry, user should set the configuration accordingly)".
> >> It
> >> > may
> >> > > be worth elaborating a little on what a user should do with regards
> to
> >> > this
> >> > > configuration when upgrading (ie maybe under "Compatibility,
> >> Deprecation,
> >> > > and Migration Plan").
> >> > >
> >> > Makes sense.
> >> >
> >> >
> >> > > 4. In a previous vote thread, Jun said "The simplest thing is
> probably
> >> > > to change
> >> > > the default index size to 2MB to match the default log segment size"
> >> and
> >> > > you seemed to agree. I couldn't find anything about this in the KIP.
> >> Are
> >> > we
> >> > > still doing it?
> >> > >
> >> > Yes, we can still make the change for default settings. User might
> want
> >> to
> >> > set the index size a little larger if they have a customized size but
> in
> >> > reality it should not cause problems other than rolling out a little
> >> more
> >> > log segments.
> >> >
> >> > 5. We say "Instead, it is only monotonically increasing within each
> time
> >> > > index file. i.e. It is possible that the time index file for a later
> >> log
> >> > > segment contains smaller timestamp than some timestamp in the time
> >> index
> >> > > file of an earlier segment.". I think it would be good to explain
> >> under
> >> > > which scenario a time index file for a later log segment contains a
> >> > smaller
> >> > > timestamp (is this only when CreateTime is used?).
> >> > >
> >> > Yes, it only happens when CreateTime is used.
> >> >
> >> >
> >> > > 6. We say "When searching by timestamp, broker will start from the
> >> > earliest
> >> > > log segment and check the last time index entry.". The existing
> logic
> >> > > searches from newest segment backwards. Is there a reason why we are
> >> > > changing it?
> >> > >
> >> > Suppose segment 0 has max timestamp 100, segment 1 has max timestamp
> 50
> >> and
> >> > segment 3 has max timestamp 90, now user want to search for timestamp
> >> 80.
> >> > If we search backwards, we have to take a look at all the segments. If
> >> we
> >> > search forward, we will stop at the first segment whose max timestamp
> is
> >> > greater than 80 (i.e all the previous segments has smaller timestamps)
> >> and
> >> > start the finer search on that segment.
> >> >
> >> >
> >> > > 7. Do you mind if I fix typos and minor grammar issues directly in
> the
> >> > > wiki? It seems easier than doing that via email.
> >> > >
> >> > Not at all, thanks for help.
> >> >
> >> >
> >> > > Thanks,
> >> > > Ismael
> >> > >
> >> > > On Thu, Apr 7, 2016 at 1:44 AM, Becket Qin <becket....@gmail.com>
> >> wrote:
> >> > >
> >> > > > Hi all,
> >> > > >
> >> > > > I updated KIP-33 based on the initial implementation. Per
> >> discussion on
> >> > > > yesterday's KIP hangout, I would like to initiate the new vote
> >> thread
> >> > for
> >> > > > KIP-33.
> >> > > >
> >> > > > The KIP wiki:
> >> > > >
> >> > > >
> >> > >
> >> >
> >>
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-33+-+Add+a+time+based+log+index
> >> > > >
> >> > > > Here is a brief summary of the KIP:
> >> > > > 1. We propose to add a time index for each log segment.
> >> > > > 2. The time indices are going to be used of log retention, log
> >> rolling
> >> > > and
> >> > > > message search by timestamp.
> >> > > >
> >> > > > There was an old voting thread which has some discussions on this
> >> KIP.
> >> > > The
> >> > > > mail thread link is following:
> >> > > >
> >> > > >
> >> > >
> >> >
> >>
> http://mail-archives.apache.org/mod_mbox/kafka-dev/201602.mbox/%3ccabtagwgoebukyapfpchmycjk2tepq3ngtuwnhtr2tjvsnc8...@mail.gmail.com%3E
> >> > > >
> >> > > > I have the following WIP patch for reference. It needs a few more
> >> unit
> >> > > > tests and documentation. Other than that it should run fine.
> >> > > >
> >> > > >
> >> > >
> >> >
> >>
> https://github.com/becketqin/kafka/commit/712357a3fbf1423e05f9eed7d2fed5b6fe6c37b7
> >> > > >
> >> > > > Thanks,
> >> > > >
> >> > > > Jiangjie (Becket) Qin
> >> > > >
> >> > >
> >> >
> >>
> >
> >
>



-- 
-- Guozhang

Reply via email to