Hi Renu,

that is not completely true, the LZ4 compression codec was added without a
MagicByte bump.
(LZ4 might be a bad example though since this feature was added without
updating the protocol docs..)

Unless the broker needs the MagicByte internally (for translating old logs
on disk or whatever)
I dont see a need for bumping the MagicByte when just adding a bit
*definition* to an existing field.

With just one MagicByte bump so far it is hard to say what is right or
wrong, but this might be
a good time for us to decide on some rules.

I dont have a strong opinion, either way is fine with me.

Regards,
Magnus


2016-10-26 20:01 GMT+02:00 Renu Tewari <tewa...@gmail.com>:

> +1 @Magnus.
> It is also in line with traditional use of the magic field to indicate a
> change in the format of the message. Thus a change in the magic field
> indicates a different "schema" which in this case would reflect adding a
> new field, removing a field or changing the type of fields etc.
>
> The version number bump does not change the message format but just the
> interpretation of the values.
>
> Going with what @Michael suggested on keeping it simple we don't need to a
> add a new field to indicate a tombstone and therefore require a change in
> the magic byte field. The attribute bit is sufficient for indicating the
> new interpretation of attribute.bit5 to indicate a tombstone.
>
> Bumping the version number and changing the attribute bit keeps it simple.
>
>
> Thanks
> Renu
>
>
>
> On Wed, Oct 26, 2016 at 10:09 AM, Mayuresh Gharat <
> gharatmayures...@gmail.com> wrote:
>
> > I see the reasoning Magnus described.
> > If you check the docs https://kafka.apache.org/
> documentation#messageformat
> > ,
> > it says :
> >
> > 1 byte "magic" identifier to allow format changes, value is 0 or 1
> >
> > Moreover as per comments in the code :
> > /**
> >    * The "magic" value
> >    * When magic value is 0, the message uses absolute offset and does not
> > have a timestamp field.
> >    * When magic value is 1, the message uses relative offset and has a
> > timestamp field.
> >    */
> >
> > Since timeStamp was added as an actual field we bumped the the magic byte
> > to 1 for this change.
> > But since we are not adding an actual field, we can do away with bumping
> up
> > the magic byte.
> >
> > If we really want to go the standard route of bumping up the magic byte
> for
> > any change to message format we should actually add a new field for
> > handling log compaction instead of just using the attribute field, which
> > might sound like an overkill.
> >
> > Thanks,
> >
> > Mayuresh
> >
> >
> >
> >
> >
> >
> > On Wed, Oct 26, 2016 at 1:32 AM, Magnus Edenhill <mag...@edenhill.se>
> > wrote:
> >
> > > 2016-10-25 21:36 GMT+02:00 Nacho Solis <nso...@linkedin.com.invalid>:
> > >
> > > > I think you probably require a MagicByte bump if you expect correct
> > > > behavior of the system as a whole.
> > > >
> > > > From a client perspective you want to make sure that when you
> deliver a
> > > > message that the broker supports the feature you're expecting
> > > > (compaction).  So, depending on the behavior of the broker on
> > > encountering
> > > > a previously undefined bit flag I would suggest making some change to
> > > make
> > > > certain that flag-based compaction is supported.  I'm going to guess
> > that
> > > > the MagicByte would do this.
> > > >
> > >
> > > I dont believe this is needed since it is already attributed through
> the
> > > request's API version.
> > >
> > > Producer:
> > >  * if a client sends ProduceRequest V4 then attributes.bit5 indicates a
> > > tombstone
> > >  * if a clients sends ProduceRequest <V4 then attributes.bit5 is
> ignored
> > > and value==null indicates a tombstone
> > >  * in both cases the on-disk messages are stored with attributes.bit5
> (I
> > > assume?)
> > >
> > > Consumer:
> > >  * if a clients sends FetchRequest V4 messages are sendfile():ed
> directly
> > > from disk (with attributes.bit5)
> > >  * if a client sends FetchRequest <V4 messages are slowpathed and
> > > translated from attributes.bit5 to value=null as required.
> > >
> > >
> > > That's my understanding anyway, please correct me if I'm wrong.
> > >
> > > /Magnus
> > >
> > >
> > >
> > > > On Tue, Oct 25, 2016 at 10:17 AM, Magnus Edenhill <
> mag...@edenhill.se>
> > > > wrote:
> > > >
> > > > > It is safe to assume that a previously undefined attributes bit
> will
> > be
> > > > > unset in protocol requests from existing clients, if not, such a
> > client
> > > > is
> > > > > already violating the protocol and needs to be fixed.
> > > > >
> > > > > So I dont see a need for a MagicByte bump, both broker and client
> has
> > > the
> > > > > information it needs to construct or parse the message according to
> > > > request
> > > > > version.
> > > > >
> > > > >
> > > > > 2016-10-25 18:48 GMT+02:00 Michael Pearce <michael.pea...@ig.com>:
> > > > >
> > > > > > Hi Magnus,
> > > > > >
> > > > > > I was wondering if I even needed to change those also, as
> > technically
> > > > > > we’re just making use of a non used attribute bit, but im not
> 100%
> > > that
> > > > > it
> > > > > > be always false currently.
> > > > > >
> > > > > > If someone can say 100% it will already be set false with current
> > and
> > > > > > historic bit wise masking techniques used over the time, we could
> > do
> > > > away
> > > > > > with both, and simply just start to use it. Unfortunately I don’t
> > > have
> > > > > that
> > > > > > historic knowledge so was hoping it would be flagged up in this
> > > > > discussion
> > > > > > thread ☺
> > > > > >
> > > > > > Cheers
> > > > > > Mike
> > > > > >
> > > > > > On 10/25/16, 5:36 PM, "Magnus Edenhill" <mag...@edenhill.se>
> > wrote:
> > > > > >
> > > > > >     Hi Michael,
> > > > > >
> > > > > >     With the version bumps for Produce and Fetch requests, do you
> > > > really
> > > > > > need
> > > > > >     to bump MagicByte too?
> > > > > >
> > > > > >     Regards,
> > > > > >     Magnus
> > > > > >
> > > > > >
> > > > > >     2016-10-25 18:09 GMT+02:00 Michael Pearce <
> > michael.pea...@ig.com
> > > >:
> > > > > >
> > > > > >     > Hi All,
> > > > > >     >
> > > > > >     > I would like to discuss the following KIP proposal:
> > > > > >     > https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> > > > > >     > 87+-+Add+Compaction+Tombstone+Flag
> > > > > >     >
> > > > > >     > This is off the back of the discussion on KIP-82  / KIP
> > meeting
> > > > > > where it
> > > > > >     > was agreed to separate this issue and feature. See:
> > > > > >     > http://mail-archives.apache.org/mod_mbox/kafka-dev/201610.
> > > > > >     > mbox/%3cCAJS3ho8OcR==EcxsJ8OP99pD2hz=iiGecWsv-
> > > > > >     > EZsBsNyDcKr=g...@mail.gmail.com%3e
> > > > > >     >
> > > > > >     > Thanks
> > > > > >     > Mike
> > > > > >     >
> > > > > >     > The information contained in this email is strictly
> > > confidential
> > > > > and
> > > > > > for
> > > > > >     > the use of the addressee only, unless otherwise indicated.
> If
> > > you
> > > > > > are not
> > > > > >     > the intended recipient, please do not read, copy, use or
> > > disclose
> > > > > to
> > > > > > others
> > > > > >     > this message or any attachment. Please also notify the
> sender
> > > by
> > > > > > replying
> > > > > >     > to this email or by telephone (+44(020 7896 0011) and then
> > > delete
> > > > > > the email
> > > > > >     > and any copies of it. Opinions, conclusion (etc) that do
> not
> > > > relate
> > > > > > to the
> > > > > >     > official business of this company shall be understood as
> > > neither
> > > > > > given nor
> > > > > >     > endorsed by it. IG is a trading name of IG Markets Limited
> (a
> > > > > company
> > > > > >     > registered in England and Wales, company number 04008957)
> and
> > > IG
> > > > > > Index
> > > > > >     > Limited (a company registered in England and Wales, company
> > > > number
> > > > > >     > 01190902). Registered address at Cannon Bridge House, 25
> > > Dowgate
> > > > > > Hill,
> > > > > >     > London EC4R 2YA. Both IG Markets Limited (register number
> > > 195355)
> > > > > > and IG
> > > > > >     > Index Limited (register number 114059) are authorised and
> > > > regulated
> > > > > > by the
> > > > > >     > Financial Conduct Authority.
> > > > > >     >
> > > > > >
> > > > > >
> > > > > > The information contained in this email is strictly confidential
> > and
> > > > for
> > > > > > the use of the addressee only, unless otherwise indicated. If you
> > are
> > > > not
> > > > > > the intended recipient, please do not read, copy, use or disclose
> > to
> > > > > others
> > > > > > this message or any attachment. Please also notify the sender by
> > > > replying
> > > > > > to this email or by telephone (+44(020 7896 0011) and then delete
> > the
> > > > > email
> > > > > > and any copies of it. Opinions, conclusion (etc) that do not
> relate
> > > to
> > > > > the
> > > > > > official business of this company shall be understood as neither
> > > given
> > > > > nor
> > > > > > endorsed by it. IG is a trading name of IG Markets Limited (a
> > company
> > > > > > registered in England and Wales, company number 04008957) and IG
> > > Index
> > > > > > Limited (a company registered in England and Wales, company
> number
> > > > > > 01190902). Registered address at Cannon Bridge House, 25 Dowgate
> > > Hill,
> > > > > > London EC4R 2YA. Both IG Markets Limited (register number 195355)
> > and
> > > > IG
> > > > > > Index Limited (register number 114059) are authorised and
> regulated
> > > by
> > > > > the
> > > > > > Financial Conduct Authority.
> > > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Nacho (Ignacio) Solis
> > > > Kafka
> > > > nso...@linkedin.com
> > > >
> > >
> >
> >
> >
> > --
> > -Regards,
> > Mayuresh R. Gharat
> > (862) 250-7125
> >
>

Reply via email to