i didnt mean to sound as insisting. what i actually mean is it would still
be a valid issue but of much less concern.

On Mon, Dec 19, 2016 at 7:50 PM, radai <radai.rosenbl...@gmail.com> wrote:

> this kip fixes a "bug" (quirk?) that arises when people implement headers
> "in V" (in the payload part of a message).
> if you have proper headers you obviously dont need to to stick them in V
> and so wont run into this, but its still a valid issue.
>
> On Mon, Dec 19, 2016 at 3:06 PM, Jay Kreps <j...@confluent.io> wrote:
>
>> Makes sense!
>>
>> -Jay
>>
>> On Mon, Dec 19, 2016 at 2:40 PM, Michael Pearce <michael.pea...@ig.com>
>> wrote:
>>
>> > Wow just read that def over tired. Hopefully it makes sense. Or you get
>> > the gist at least.
>> >
>> > ________________________________________
>> > From: Michael Pearce <michael.pea...@ig.com>
>> > Sent: Monday, December 19, 2016 9:19:02 PM
>> > To: dev@kafka.apache.org
>> > Subject: Re: [VOTE] KIP-87 - Add Compaction Tombstone Flag
>> >
>> > Hi Jay,
>> >
>> > Agreed this stemmed as offshoot from KIP-82.
>> >
>> > Which our main driver for was to be able to have some headers for a null
>> > value as such for our routing, audit, tracing and a few other bits which
>> > currently we are forced to do with a message wrapper, if we all agreed
>> on
>> > KIP-82 that we need native headers and look to implement that the push
>> for
>> > this would dissipate.
>> >
>> > This KIP would allow for though one use case that comes to mind we could
>> > see which is to have business data with a delete. Though as said this
>> isn't
>> > something we are pushing for think really we would have.
>> >
>> > As such in summary yes, if you want to fully support KIP-82 and we can
>> get
>> > that agreed in principle and a target release version, I think quite a
>> few
>> > guys at LinkedIn are quite pro it too ;) I'm happy to drop this one.
>> >
>> > Cheers
>> > Mike
>> >
>> > Sent using OWA for iPhone
>> > ________________________________________
>> > From: Jay Kreps <j...@confluent.io>
>> > Sent: Monday, December 19, 2016 8:51:23 PM
>> > To: dev@kafka.apache.org
>> > Subject: Re: [VOTE] KIP-87 - Add Compaction Tombstone Flag
>> >
>> > Hey Michael,
>> >
>> > Here is the compatibility concern I have:
>> >
>> >    1. You have a consumer app that relies on value == null to indicate a
>> >    delete (current semantics).
>> >    2. You upgrade Kafka and your clients.
>> >    3. Some producer starts using the tombstone field in combination with
>> >    non-null.
>> >
>> > I share Ismael's dislike of setting tombstones on records with null
>> values.
>> > This makes sense as a transitional state, but as an end state its a bit
>> > weird. You'd expect to be able to mix null values and tombstones, and
>> have
>> > the null values remain and the tombstones get compacted. However what
>> will
>> > happen is both will be compacted and upon debugging this you'll learn
>> that
>> > we sometimes use null in the value to indicate tombstone. Ismael's
>> solution
>> > is a bigger compatibility break, though, so not sure if that is better.
>> >
>> > My other question is the relationship to KIP-82. My read is that this
>> KIP
>> > solves some but not all of the problems KIP-82 is intended for. KIP-82,
>> on
>> > the other hand, seems to address most of the motivating uses for this
>> KIP.
>> > The exception is maybe item (5) on the list where you want to
>> simultaneous
>> > delete and convey some information to subscribers, but I couldn't
>> construct
>> > a concrete examples for that one. Do we need to rationalize these two
>> KIPs?
>> > That is, do you still advocate this proposal if we do KIP-82 and vice
>> > versa? As you may have noticed I'm somewhat emotionally invested in the
>> > simplicity of the core data model, so my default position is let's try
>> to
>> > avoid stuffing more stuff in, but if we have to add stuff I like each of
>> > these individually more than doing both. :-)
>> >
>> > -Jay
>> >
>> >
>> >
>> >
>> > On Fri, Dec 16, 2016 at 12:16 PM, Michael Pearce <michael.pea...@ig.com
>> >
>> > wrote:
>> >
>> > > Hi Jay
>> > >
>> > > I disagree here that we are breaking any compatibility, we went
>> through
>> > > this on the discussion thread in fact with the help of that thread is
>> how
>> > > the kip came to the solution.
>> > >
>> > > Also on the supported combinations front you mention, we are not
>> taking
>> > > anything away afaik.
>> > >
>> > > Currently supported are only are:
>> > > Null value = delete
>> > > Non-null value = non delete
>> > >
>> > > With this kip we would support
>> > > Null value + tombstone = delete
>> > > Non null value + tombstone = delete
>> > > Non null value + no tombstone = non delete
>> > >
>> > > As for the alternative idea, this is simply a new policy, how can
>> there
>> > be
>> > > confusion here? For this policy it would be explicit that tombstone
>> > marker
>> > > would need to be set for a delete.
>> > >
>> > > I'm going to vent a little now as starting to get quite frustrated.
>> > >
>> > > We are going round in circles on kip-82 as per use cases there is now
>> > many
>> > > use cases, how many more are needed? just because confluent don't see
>> > these
>> > > doesn't mean they aren't real use cases other have, this is the point
>> of
>> > > the Apache foundation, it shouldn't be the view of just one
>> organisation.
>> > > It really is getting a feeling of the NIH syndrome. Rather than it
>> being
>> > > constructive on discussion of the implementation detail.
>> > >
>> > > kip-87 spawned from as on the kip call we all agreed this was needed.
>> And
>> > > would at least allow a custom wrapper be supported in a compacted
>> topic,
>> > > allowing meta data. Which again now I feel we are spinning wheels, and
>> > > simply finding reasons not support it.
>> > >
>> > > Cheers
>> > > Mike
>> > >
>> > >
>> > >
>> > > Sent using OWA for iPad
>> > > ________________________________________
>> > > From: Jay Kreps <j...@confluent.io>
>> > > Sent: Friday, December 16, 2016 7:09:23 PM
>> > > To: dev@kafka.apache.org
>> > > Subject: Re: [VOTE] KIP-87 - Add Compaction Tombstone Flag
>> > >
>> > > Hey Michael,
>> > >
>> > > I do think it might have been better had we started with a separate
>> > concept
>> > > of null vs delete. Given that we are where we are, I'm not sure that
>> the
>> > > possible cures we explored so far are better than the disease.
>> > >
>> > > I apologize for coming to this late, but I didn't really understand
>> the
>> > > implications of the KIP and that we'd be breaking compatibility with
>> > > existing apps until the vote had begun, and in my defense I'm not sure
>> > the
>> > > other folks voting did either.
>> > >
>> > > I think we all agree there are many existing apps that are built with
>> the
>> > > assumption of "null value non-tombstone" and it isn't possible to
>> > > disambiguate these from tombstones on the producer. It isn't that
>> anyone
>> > is
>> > > saying we have to support all four possibilities at once, it's that we
>> > > simply can't orphan one of the existing combinations or our users will
>> > eat
>> > > us!
>> > >
>> > > If I've understood your alternate solution of adding another setting
>> for
>> > > compaction, I think this does fix the compatibility problem, but it
>> adds
>> > an
>> > > odd mode the user has to add on all their topics. While the current
>> state
>> > > is easily explainable, the resulting state where the meaning of
>> tombstone
>> > > and null are overlapping and ambiguous and dependent on a compaction
>> > > setting that could change out of band or not be in sync with your
>> code in
>> > > some environment seems worse to me then where we currently are. I
>> think
>> > the
>> > > question is how would this combination be explained to users and does
>> it
>> > > make sense?
>> > >
>> > > -Jay
>> > >
>> > >
>> > >
>> > > On Fri, Dec 16, 2016 at 9:25 AM, Michael Pearce <
>> michael.pea...@ig.com>
>> > > wrote:
>> > >
>> > > > Hi Chaps,
>> > > >
>> > > > Can we either get one more +1 binding (we have 2 already) on the
>> > > existing?
>> > > >
>> > > > Or have some response on the below possible alternative. We are
>> keen to
>> > > > get working on this, so we make next feature release.
>> > > >
>> > > > Cheers
>> > > > Mike
>> > > >
>> > > >
>> > > > On 13/12/2016, 16:32, "Michael Pearce" <michael.pea...@ig.com>
>> wrote:
>> > > >
>> > > >     Hi Ismael
>> > > >
>> > > >     Did you see our email this morning, what's your thoughts on this
>> > > > approach to instead we simply have a brand new policy?
>> > > >
>> > > >     Cheers
>> > > >     Mike
>> > > >
>> > > >
>> > > >     Sent using OWA for iPhone
>> > > >     ________________________________________
>> > > >     From: isma...@gmail.com <isma...@gmail.com> on behalf of Ismael
>> > > Juma <
>> > > > ism...@juma.me.uk>
>> > > >     Sent: Tuesday, December 13, 2016 11:30:05 AM
>> > > >     To: dev@kafka.apache.org
>> > > >     Subject: Re: [VOTE] KIP-87 - Add Compaction Tombstone Flag
>> > > >
>> > > >     Yes, this is actually tricky to do in a way where we both have
>> the
>> > > > desired
>> > > >     semantics and maintain compatibility. When someone creates a
>> > > >     `ProducerRecord` with a `null` value today, the producer doesn't
>> > know
>> > > > if
>> > > >     it's meant to be a tombstone or not. For V3 messages, it's easy
>> > when
>> > > > the
>> > > >     constructor that takes a tombstone is used. However, if any
>> other
>> > > >     constructor is used, it's not clear. A couple of options I can
>> > think
>> > > > of,
>> > > >     none of them particularly nice:
>> > > >
>> > > >     1. Have a third state where tombstone = unknown and the broker
>> > would
>> > > > set
>> > > >     the tombstone bit if the value was null and the topic was
>> > compacted.
>> > > > People
>> > > >     that wanted to pass a non-null value for the tombstone would
>> have
>> > to
>> > > > use
>> > > >     the constructor that takes a tombstone. The drawbacks: third
>> state
>> > > for
>> > > >     tombstone in message format, message conversion at the broker
>> for a
>> > > > common
>> > > >     case.
>> > > >
>> > > >     2. Extend MetadataResponse to optionally include topic configs,
>> > which
>> > > > would
>> > > >     make it possible for the producer to be smarter about setting
>> the
>> > > >     tombstone. It would only do it if a tombstone was not passed
>> > > > explicitly,
>> > > >     the value was null and the topic was compacted. The main
>> drawback
>> > is
>> > > > that
>> > > >     the producer would be getting a bit more data for each topic
>> even
>> > > > though it
>> > > >     probably won't use it most of the time. Extending
>> MetadataResponse
>> > to
>> > > >     return topic configs would be useful for other reasons as well,
>> so
>> > > that
>> > > >     part seems OK.
>> > > >
>> > > >     In addition, for both proposals, we could consider adding
>> warnings
>> > to
>> > > > the
>> > > >     documentation that the behaviour of the constructors that don't
>> > take
>> > > a
>> > > >     tombstone would change in the next major release so that
>> tombstone
>> > =
>> > > > false.
>> > > >     Not sure if this would be worth it though.
>> > > >
>> > > >     Ismael
>> > > >
>> > > >     On Sun, Dec 11, 2016 at 11:15 PM, Ewen Cheslack-Postava <
>> > > > e...@confluent.io>
>> > > >     wrote:
>> > > >
>> > > >     > Michael,
>> > > >     >
>> > > >     > It kind of depends on how you want to interpret the tombstone
>> > flag.
>> > > > If it's
>> > > >     > purely a producer-facing Kafka-level thing that we treat as
>> > > internal
>> > > > to the
>> > > >     > broker and log cleaner once the record is sent, then your
>> > approach
>> > > > makes
>> > > >     > sense. You're just moving copying the null-indicates-delete
>> > > behavior
>> > > > of the
>> > > >     > old constructor into the tombstone flag.
>> > > >     >
>> > > >     > However, if you want this change to more generally decouple
>> the
>> > > idea
>> > > > of
>> > > >     > deletion and null values, then you are sometimes converting
>> what
>> > > > might be a
>> > > >     > completely valid null value that doesn't indicate deletion
>> into a
>> > > >     > tombstone. Downstream applications could potentially handle
>> these
>> > > > cases
>> > > >     > differently given the separation of deletion from value.
>> > > >     >
>> > > >     > I guess the question is if we want to try to support the
>> latter
>> > > even
>> > > > for
>> > > >     > topics where we have older produce requests. An example where
>> > this
>> > > > could
>> > > >     > come up is in something like a CDC Connector. If we try to
>> > support
>> > > > the
>> > > >     > semantic difference, a connector might write changes to Kafka
>> > using
>> > > > the
>> > > >     > tombstone flag to indicate when a row was truly deleted (vs an
>> > > > update that
>> > > >     > sets it to null but still present; this probably makes more
>> sense
>> > > > for CDC
>> > > >     > from document stores or extracting single columns). There are
>> > > various
>> > > >     > reasons we might want to maintain the full log and not turn
>> > > > compaction on
>> > > >     > (or just use a time-based retention policy), but downstream
>> > > > applications
>> > > >     > might care to know the difference between a delete and a null
>> > > value.
>> > > > In
>> > > >     > fact both versions of the same log (compacted and
>> time-retention)
>> > > > could be
>> > > >     > useful and I don't think it'll be uncommon to maintain both or
>> > use
>> > > > KIP-71
>> > > >     > to maintain a hybrid compacted/retention topic.
>> > > >     >
>> > > >     > -Ewen
>> > > >     >
>> > > >     > On Sun, Dec 11, 2016 at 1:18 PM, Michael Pearce <
>> > > > michael.pea...@ig.com>
>> > > >     > wrote:
>> > > >     >
>> > > >     > > Hi Jay,
>> > > >     > >
>> > > >     > > Why wouldn't that work, the tombstone value is only looked
>> at
>> > by
>> > > > the
>> > > >     > > broker, on a topic configured for compaction as such is
>> benign
>> > on
>> > > > non
>> > > >     > > compacted topics. This is as much as sending a null value
>> > > currently
>> > > >     > >
>> > > >     > >
>> > > >     > > Regards
>> > > >     > > Mike
>> > > >     > >
>> > > >     > >
>> > > >     > >
>> > > >     > > Sent using OWA for iPhone
>> > > >     > > ________________________________________
>> > > >     > > From: Jay Kreps <j...@confluent.io>
>> > > >     > > Sent: Sunday, December 11, 2016 8:58:53 PM
>> > > >     > > To: dev@kafka.apache.org
>> > > >     > > Subject: Re: [VOTE] KIP-87 - Add Compaction Tombstone Flag
>> > > >     > >
>> > > >     > > Hey Michael,
>> > > >     > >
>> > > >     > > I'm not quite sure that works as that would translate ALL
>> null
>> > > > values to
>> > > >     > > tombstones, even for non-compacted topics that use null as
>> an
>> > > > acceptable
>> > > >     > > value sent by the producer and expected by the consumer.
>> > > >     > >
>> > > >     > > -Jay
>> > > >     > >
>> > > >     > > On Sun, Dec 11, 2016 at 3:26 AM, Michael Pearce <
>> > > > michael.pea...@ig.com>
>> > > >     > > wrote:
>> > > >     > >
>> > > >     > > > Hi Ewen,
>> > > >     > > >
>> > > >     > > > I think the easiest way to show this is with code.
>> > > >     > > >
>> > > >     > > > As you can see we keep the existing behaviour for
>> > code/binaries
>> > > > calling
>> > > >     > > > the pre-existing constructors, whereby if the value is
>> null
>> > the
>> > > >     > tombstone
>> > > >     > > > is set to true.
>> > > >     > > >
>> > > >     > > > Regards
>> > > >     > > > Mike
>> > > >     > > >
>> > > >     > > >
>> > > >     > > >
>> > > >     > > >     /**
>> > > >     > > >      * Creates a record with a specified timestamp to be
>> sent
>> > > to
>> > > > a
>> > > >     > > > specified topic and partition
>> > > >     > > >      *
>> > > >     > > >      * @param topic The topic the record will be appended
>> to
>> > > >     > > >      * @param partition The partition to which the record
>> > > should
>> > > > be
>> > > >     > sent
>> > > >     > > >      * @param timestamp The timestamp of the record
>> > > >     > > >      * @param tombstone if the record should be treated
>> as a
>> > > > tombstone
>> > > >     > if
>> > > >     > > > the topic is compacted
>> > > >     > > >      * @param key The key that will be included in the
>> record
>> > > >     > > >      * @param value The record contents
>> > > >     > > >      */
>> > > >     > > >     public ProducerRecord(String topic, Integer partition,
>> > > > Boolean
>> > > >     > > > tombstone, Long timestamp, K key, V value) {
>> > > >     > > >         if (topic == null)
>> > > >     > > >             throw new IllegalArgumentException("Topic
>> cannot
>> > > be
>> > > >     > null.");
>> > > >     > > >         if (timestamp != null && timestamp < 0)
>> > > >     > > >             throw new IllegalArgumentException(
>> > > >     > > >                     String.format("Invalid timestamp: %d.
>> > > > Timestamp
>> > > >     > > should
>> > > >     > > > always be non-negative or null.", timestamp));
>> > > >     > > >         if (partition != null && partition < 0)
>> > > >     > > >             throw new IllegalArgumentException(
>> > > >     > > >                     String.format("Invalid partition: %d.
>> > > > Partition
>> > > >     > > number
>> > > >     > > > should always be non-negative or null.", partition));
>> > > >     > > >         if (!tombstone && value == null){
>> > > >     > > >             throw new IllegalArgumentException(
>> > > >     > > >                     String.format("Tombstone must be true
>> if
>> > > null
>> > > >     > > value"));
>> > > >     > > >         }
>> > > >     > > >         this.topic = topic;
>> > > >     > > >         this.partition = partition;
>> > > >     > > >         this.tombstone = tombstone;
>> > > >     > > >         this.key = key;
>> > > >     > > >         this.value = value;
>> > > >     > > >         this.timestamp = timestamp;
>> > > >     > > >     }
>> > > >     > > >
>> > > >     > > >     public ProducerRecord(String topic, Integer partition,
>> > Long
>> > > >     > > timestamp,
>> > > >     > > > K key, V value) {
>> > > >     > > >         this(topic, partition, value == null, timestamp,
>> key,
>> > > > value);
>> > > >     > > >     }
>> > > >     > > > ________________________________________
>> > > >     > > > From: Ewen Cheslack-Postava <e...@confluent.io>
>> > > >     > > > Sent: Sunday, December 11, 2016 5:45 AM
>> > > >     > > > To: dev@kafka.apache.org
>> > > >     > > > Subject: Re: [VOTE] KIP-87 - Add Compaction Tombstone Flag
>> > > >     > > >
>> > > >     > > > It seemed like this was addressed in the migration
>> section,
>> > > > wasn't it?
>> > > >     > > The
>> > > >     > > > V2 vs V3 requests and the fact that the broker will
>> downgrade
>> > > the
>> > > >     > message
>> > > >     > > > format (losing zero copy) if you issues a V2 request to a
>> > > broker
>> > > > using
>> > > >     > V3
>> > > >     > > > format handles compatibility, does it not? The existing
>> > > > consumers won't
>> > > >     > > see
>> > > >     > > > the extra metadata in the value, but they will get a null
>> > > > instead and
>> > > >     > > treat
>> > > >     > > > it as a tombstone. Certainly there is a performance
>> impact,
>> > but
>> > > > it
>> > > >     > seemed
>> > > >     > > > compatible.
>> > > >     > > >
>> > > >     > > > I'm worried about this though:
>> > > >     > > >
>> > > >     > > >
>> > > >     > > >    - *NOTE *: With the new version of producer client
>> using
>> > > >     > > ProduceRequest
>> > > >     > > >    V3 (magic byte = 2), a non tombstone (tombstone bit not
>> > set)
>> > > > and
>> > > >     > null
>> > > >     > > > value
>> > > >     > > >    should not be allowed as the older version of consumer
>> > using
>> > > >     > > > FetchRequest
>> > > >     > > >    V2 will think of this as a tombstone when its actually
>> > not.
>> > > >     > > >
>> > > >     > > >
>> > > >     > > > Unless I'm misunderstanding, this ends up breaking binary
>> > > > compatibility
>> > > >     > > for
>> > > >     > > > the Java API. It sounds like this suggests that passing a
>> > null
>> > > > value to
>> > > >     > > the
>> > > >     > > > existing ProducerRecord constructors would generate an
>> > > exception
>> > > > since
>> > > >     > > you
>> > > >     > > > didn't explicitly enable the tombstone (via whatever new
>> > > > constructor is
>> > > >     > > > provided). But that means you can't swap in a newer client
>> > jar
>> > > > without
>> > > >     > > > recompiling and get the same behavior if your app deletes
>> > keys
>> > > > using
>> > > >     > the
>> > > >     > > > current approach because your app will start throwing
>> > > > exceptions. Maybe
>> > > >     > > > this is a tradeoff we're ok with, but we've tried pretty
>> hard
>> > > to
>> > > > avoid
>> > > >     > > > breaking compatibility like this so far -- it makes
>> picking
>> > up
>> > > > bug
>> > > >     > fixes
>> > > >     > > in
>> > > >     > > > the clients harder for users of frameworks that have to
>> pin
>> > to
>> > > > earlier
>> > > >     > > > default versions for compatibility.
>> > > >     > > >
>> > > >     > > > But then later the KIP says:
>> > > >     > > >
>> > > >     > > >
>> > > >     > > >    - The old constructors for ProducerRecord without this
>> > > > parameter
>> > > >     > will
>> > > >     > > be
>> > > >     > > >    kept but updated so that their default behaviour if
>> > setting
>> > > > null
>> > > >     > value
>> > > >     > > > will
>> > > >     > > >    be the tombstone will be set to true to keep existing
>> > > > behaviour.
>> > > >     > > >
>> > > >     > > >
>> > > >     > > > So maybe I am misinterpreting something.
>> > > >     > > >
>> > > >     > > > And just a nit re: motivation section, item 6 would be
>> > clearer
>> > > > for a
>> > > >     > > union
>> > > >     > > > schema with null (or optional schemas in other formats),
>> e.g.
>> > > > [null,
>> > > >     > > > string], in which case losing the schema truly is losing
>> > > > information
>> > > >     > > > (whereas null is already the only valid value for a pure
>> null
>> > > > schema).
>> > > >     > > >
>> > > >     > > > -Ewen
>> > > >     > > >
>> > > >     > > >
>> > > >     > > > On Sat, Dec 10, 2016 at 9:24 PM, Michael Pearce <
>> > > > michael.pea...@ig.com
>> > > >     > >
>> > > >     > > > wrote:
>> > > >     > > >
>> > > >     > > > > Hi Jay,
>> > > >     > > > >
>> > > >     > > > > Good point this detail is missing in the KIP write up.
>> Ive
>> > > > added this
>> > > >     > > > now.
>> > > >     > > > >
>> > > >     > > > > Essentially simply just upgrading the clients we do not
>> > > expect
>> > > > any
>> > > >     > > client
>> > > >     > > > > app code change needed.
>> > > >     > > > >
>> > > >     > > > > Cheers
>> > > >     > > > > Mike
>> > > >     > > > > ________________________________________
>> > > >     > > > > From: Jay Kreps <j...@confluent.io>
>> > > >     > > > > Sent: Saturday, December 10, 2016 10:51 PM
>> > > >     > > > > To: dev@kafka.apache.org
>> > > >     > > > > Subject: Re: [VOTE] KIP-87 - Add Compaction Tombstone
>> Flag
>> > > >     > > > >
>> > > >     > > > > Michael,
>> > > >     > > > >
>> > > >     > > > > The compatibility section goes through the migration
>> path,
>> > > but
>> > > > isn't
>> > > >     > > the
>> > > >     > > > > bigger compatibility issue with existing apps? There are
>> > many
>> > > >     > (probably
>> > > >     > > > > thousands) of apps in production that use this feature
>> and
>> > > > send null
>> > > >     > to
>> > > >     > > > > mean delete. It seems like this would break
>> compatibility
>> > > with
>> > > > them,
>> > > >     > > and
>> > > >     > > > > they would have to be rewritten to right?
>> > > >     > > > >
>> > > >     > > > > -Jay
>> > > >     > > > >
>> > > >     > > > > On Thu, Dec 8, 2016 at 12:12 AM, Michael Pearce <
>> > > >     > michael.pea...@ig.com
>> > > >     > > >
>> > > >     > > > > wrote:
>> > > >     > > > >
>> > > >     > > > > > Hi Jun,
>> > > >     > > > > >
>> > > >     > > > > > 4) On v3 we honour the tombstone. As such we expect
>> it to
>> > > be
>> > > > set
>> > > >     > > > > correctly
>> > > >     > > > > > as per the KIP.
>> > > >     > > > > >
>> > > >     > > > > > 4.1) why would we want to produce an error when its
>> v3?
>> > > This
>> > > > is the
>> > > >     > > > exact
>> > > >     > > > > > purpose to support non-null tombstone's
>> > > >     > > > > > 4.2) again here im unclear on the question on the v3,
>> > > produce
>> > > >     > request
>> > > >     > > > we
>> > > >     > > > > > expect the tombstone flag to be set correctly.
>> > > >     > > > > >
>> > > >     > > > > > 4.4) compaction only occurs on compacted topics, the
>> bit
>> > > > makes no
>> > > >     > > > > > difference and not looked at on un-compacted
>> (time/size
>> > > based
>> > > >     > > > eviction).
>> > > >     > > > > >
>> > > >     > > > > >
>> > > >     > > > > > On 06/12/2016, 20:08, "Jun Rao" <j...@confluent.io>
>> > wrote:
>> > > >     > > > > >
>> > > >     > > > > >     Hi, Michael,
>> > > >     > > > > >
>> > > >     > > > > >     4. Then, I think I misunderstood this point. Could
>> > you
>> > > > document
>> > > >     > > the
>> > > >     > > > > >     following points in the wiki?
>> > > >     > > > > >     4.1 If producer V3 sets tombstone, but provides a
>> > > > non-null
>> > > >     > value,
>> > > >     > > > > does
>> > > >     > > > > > the
>> > > >     > > > > >     send() get an error or does the producer
>> > automatically
>> > > > set the
>> > > >     > > > value
>> > > >     > > > > to
>> > > >     > > > > >     null?
>> > > >     > > > > >     4.2 If producer V3 doesn't set tombstone, but
>> > provides
>> > > a
>> > > > null
>> > > >     > > > value,
>> > > >     > > > > > does
>> > > >     > > > > >     the send() get an error or does the producer
>> > > > automatically sets
>> > > >     > > the
>> > > >     > > > > >     tombstone?
>> > > >     > > > > >     4.3 Does the broker only expect messages that (a)
>> > have
>> > > no
>> > > >     > > tombstone
>> > > >     > > > > and
>> > > >     > > > > >     non-null value; (b) have tombstone and null value
>> and
>> > > > reject
>> > > >     > the
>> > > >     > > > > > messages
>> > > >     > > > > >     with an error code otherwise?
>> > > >     > > > > >     4.4 Do 4.1, 4.2,  4.3 depend on whether the topic
>> is
>> > > > compacted
>> > > >     > on
>> > > >     > > > > not?
>> > > >     > > > > >
>> > > >     > > > > >     Thanks,
>> > > >     > > > > >
>> > > >     > > > > >     Jun
>> > > >     > > > > >
>> > > >     > > > > >     On Tue, Dec 6, 2016 at 10:35 AM, Michael Pearce <
>> > > >     > > > > michael.pea...@ig.com
>> > > >     > > > > > >
>> > > >     > > > > >     wrote:
>> > > >     > > > > >
>> > > >     > > > > >     > Not at all.  This only acts on compacted topics
>> > just
>> > > > as what
>> > > >     > > > occurs
>> > > >     > > > > > today
>> > > >     > > > > >     >
>> > > >     > > > > >     > Sent using OWA for iPhone
>> > > >     > > > > >     > ________________________________________
>> > > >     > > > > >     > From: Jun Rao <j...@confluent.io>
>> > > >     > > > > >     > Sent: Tuesday, December 6, 2016 6:25:28 PM
>> > > >     > > > > >     > To: dev@kafka.apache.org
>> > > >     > > > > >     > Subject: Re: [VOTE] KIP-87 - Add Compaction
>> > Tombstone
>> > > > Flag
>> > > >     > > > > >     >
>> > > >     > > > > >     > Hi, Michael,
>> > > >     > > > > >     >
>> > > >     > > > > >     > 4. Hmm, does that mean the new client library
>> can
>> > > > never send
>> > > >     > a
>> > > >     > > > null
>> > > >     > > > > > message
>> > > >     > > > > >     > even to a regular topic? This seems like a
>> change
>> > of
>> > > > the
>> > > >     > > existing
>> > > >     > > > > > behavior.
>> > > >     > > > > >     >
>> > > >     > > > > >     > Thanks,
>> > > >     > > > > >     >
>> > > >     > > > > >     > Jun
>> > > >     > > > > >     >
>> > > >     > > > > >     > On Tue, Dec 6, 2016 at 9:51 AM, Michael Pearce <
>> > > >     > > > > > michael.pea...@ig.com>
>> > > >     > > > > >     > wrote:
>> > > >     > > > > >     >
>> > > >     > > > > >     > > Hi Jun,
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > Re 4) That's because we expect the tombstone
>> > value
>> > > > to be
>> > > >     > set
>> > > >     > > > > > correctly if
>> > > >     > > > > >     > > message bit is 2, as such if an older client
>> > sends
>> > > > in on
>> > > >     > old
>> > > >     > > > > > message the
>> > > >     > > > > >     > > message is upcast and the bit is set
>> correctly.
>> > And
>> > > > such no
>> > > >     > > > > longer
>> > > >     > > > > > need
>> > > >     > > > > >     > to
>> > > >     > > > > >     > > check the value. Mayuresh can you confirm my
>> > > > thinking and
>> > > >     > > > > > understanding
>> > > >     > > > > >     > of
>> > > >     > > > > >     > > what we've discussed?
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > The second point I understand what you're
>> getting
>> > > at
>> > > > now my
>> > > >     > > > > > apologies.
>> > > >     > > > > >     > Yes
>> > > >     > > > > >     > > this makes sense to save on touching the
>> message,
>> > > if
>> > > > we're
>> > > >     > > the
>> > > >     > > > > > only kip
>> > > >     > > > > >     > > going in, in this release.
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > Cheers
>> > > >     > > > > >     > > Mike
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > Sent using OWA for iPhone
>> > > >     > > > > >     > > ________________________________________
>> > > >     > > > > >     > > From: Jun Rao <j...@confluent.io>
>> > > >     > > > > >     > > Sent: Tuesday, December 6, 2016 5:22:13 PM
>> > > >     > > > > >     > > To: dev@kafka.apache.org
>> > > >     > > > > >     > > Subject: Re: [VOTE] KIP-87 - Add Compaction
>> > > > Tombstone Flag
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > Hi, Michael,
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > 4. Is this updated in the wiki? The text "If
>> the
>> > > > magic byte
>> > > >     > > on
>> > > >     > > > > > message is
>> > > >     > > > > >     > > 2, the broker should use the tombstone bit for
>> > log
>> > > >     > > compaction."
>> > > >     > > > > > doesn't
>> > > >     > > > > >     > > seem to have changed.
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > 2. My point is that if we change the message
>> > format
>> > > > just
>> > > >     > for
>> > > >     > > > this
>> > > >     > > > > > KIP, we
>> > > >     > > > > >     > > should consider whether it's worth optimizing
>> the
>> > > > down
>> > > >     > > > conversion
>> > > >     > > > > > path
>> > > >     > > > > >     > > (i.e., decide whether a conversion is needed
>> by
>> > > just
>> > > >     > looking
>> > > >     > > at
>> > > >     > > > > the
>> > > >     > > > > >     > > tombstone bit in the wrapper message) since
>> > > > tombstone will
>> > > >     > be
>> > > >     > > > > used
>> > > >     > > > > >     > rarely.
>> > > >     > > > > >     > > However, if the message format change here is
>> > > > combined with
>> > > >     > > > other
>> > > >     > > > > > KIPs,
>> > > >     > > > > >     > > then this optimization likely won't be needed.
>> > The
>> > > > latter
>> > > >     > > > > probably
>> > > >     > > > > > makes
>> > > >     > > > > >     > > the code simpler. Jiangjie, Mayuresh, what do
>> you
>> > > > think?
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > Other than those, +1 from me,
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > Thanks,
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > Jun
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > On Tue, Dec 6, 2016 at 8:54 AM, Michael
>> Pearce <
>> > > >     > > > > > michael.pea...@ig.com>
>> > > >     > > > > >     > > wrote:
>> > > >     > > > > >     > >
>> > > >     > > > > >     > > > Hi Jun
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > > do we have your vote on this now?
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > > Any other concerns?
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > > Cheers
>> > > >     > > > > >     > > > Mike
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > > Sent using OWA for iPhone
>> > > >     > > > > >     > > > ________________________________________
>> > > >     > > > > >     > > > From: Michael Pearce <michael.pea...@ig.com
>> >
>> > > >     > > > > >     > > > Sent: Saturday, December 3, 2016 1:37:45 AM
>> > > >     > > > > >     > > > To: dev@kafka.apache.org
>> > > >     > > > > >     > > > Subject: Re: [VOTE] KIP-87 - Add Compaction
>> > > > Tombstone
>> > > >     > Flag
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > > Hi Jun,
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > > Have updated. Thanks again for the feedback.
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > > Agree yes we should align up when it gets to
>> > > that,
>> > > > I
>> > > >     > assume
>> > > >     > > > > > you've
>> > > >     > > > > >     > > flagged
>> > > >     > > > > >     > > > the same in the other KIP?
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > > I think for now let's get this KIP approved,
>> > then
>> > > > we can
>> > > >     > > > start
>> > > >     > > > > > the work
>> > > >     > > > > >     > > to
>> > > >     > > > > >     > > > get an initial PR, then we can discuss how
>> to
>> > > > align the
>> > > >     > two
>> > > >     > > > if
>> > > >     > > > > > needed.
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > > Cheers,
>> > > >     > > > > >     > > > Mike
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > > On 02/12/2016, 18:26, "Jun Rao" <
>> > > j...@confluent.io>
>> > > >     > wrote:
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > >     Hi, Michael,
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > >     For 2), this is fine. Could you update
>> the
>> > > KIP
>> > > > wiki
>> > > >     > to
>> > > >     > > > make
>> > > >     > > > > > this
>> > > >     > > > > >     > and
>> > > >     > > > > >     > > > other
>> > > >     > > > > >     > > >     points clearer? Other than that, the KIP
>> > > looks
>> > > > good
>> > > >     > to
>> > > >     > > > me.
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > >     An orthogonal thing is that there are
>> other
>> > > > KIPs such
>> > > >     > > as
>> > > >     > > > > > KIP-98
>> > > >     > > > > >     > that
>> > > >     > > > > >     > > > also
>> > > >     > > > > >     > > >     intend to change the message format. If
>> > they
>> > > > all get
>> > > >     > > > > > approved, we
>> > > >     > > > > >     > > > should
>> > > >     > > > > >     > > >     think about whether it's better to just
>> > bump
>> > > > up the
>> > > >     > > magic
>> > > >     > > > > > byte once
>> > > >     > > > > >     > > to
>> > > >     > > > > >     > > >     incorporate multiple format changes
>> like we
>> > > > did in
>> > > >     > > > > > KIP-31/KIP-32.
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > >     Thanks,
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > >     Jun
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > >     On Fri, Dec 2, 2016 at 3:19 AM, Michael
>> > > Pearce
>> > > > <
>> > > >     > > > > >     > > michael.pea...@ig.com>
>> > > >     > > > > >     > > >     wrote:
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > >     > Hi Jao
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     > Thanks for the response. Sorry for
>> slow
>> > > > reply, both
>> > > >     > > > with
>> > > >     > > > > > personal
>> > > >     > > > > >     > > > sickness
>> > > >     > > > > >     > > >     > and also battling some critical issues
>> > > > encountered
>> > > >     > > > since
>> > > >     > > > > >     > upgrading
>> > > >     > > > > >     > > to
>> > > >     > > > > >     > > >     > 0.10.1.0
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     > 1) Thans for spotting, Document error
>> > where
>> > > > we
>> > > >     > > branched
>> > > >     > > > > > this KIP
>> > > >     > > > > >     > > from
>> > > >     > > > > >     > > >     > KIP-82, will get that removed.
>> > > >     > > > > >     > > >     > 2) Intent is to do this just at the
>> > record
>> > > > message
>> > > >     > > > level.
>> > > >     > > > > >     > > >     > 3) Thanks for spotting, Will ensure
>> this
>> > is
>> > > >     > > corrected.
>> > > >     > > > > >     > > >     > 4) As per discussion thread we will
>> > support
>> > > >     > > tombstone +
>> > > >     > > > > > null
>> > > >     > > > > >     > value,
>> > > >     > > > > >     > > >     > tombstone + non null value, no
>> tombstone
>> > +
>> > > > null
>> > > >     > > value.
>> > > >     > > > > >     > > >     > 5) I believe this was in the
>> discussion
>> > > > thread,
>> > > >     > > > @Mayuresh
>> > > >     > > > > > is this
>> > > >     > > > > >     > > >     > something we've overlooked? I thought
>> we
>> > > > would down
>> > > >     > > > > > convert and
>> > > >     > > > > >     > > > remove the
>> > > >     > > > > >     > > >     > value so the old consumer had existing
>> > > > behavior, or
>> > > >     > > is
>> > > >     > > > > > there
>> > > >     > > > > >     > > > something we
>> > > >     > > > > >     > > >     > haven't thought about?
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     > Cheers
>> > > >     > > > > >     > > >     > Mike
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     > On 30/11/2016, 18:12, "Jun Rao" <
>> > > > j...@confluent.io>
>> > > >     > > > > wrote:
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     Hi, Michael,
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     Thanks for the KIP. A few comments
>> > > below.
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     1. The message format change
>> contains
>> > > >     > > > "HeadersLength
>> > > >     > > > > >     > Headers".
>> > > >     > > > > >     > > > Is that
>> > > >     > > > > >     > > >     >     intended?
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     2. For compressed messageset, is
>> the
>> > > > tombstone
>> > > >     > > bit
>> > > >     > > > > > only set
>> > > >     > > > > >     > at
>> > > >     > > > > >     > > > the
>> > > >     > > > > >     > > >     > shallow
>> > > >     > > > > >     > > >     >     level? Do we always leave that
>> bit in
>> > > the
>> > > >     > wrapper
>> > > >     > > > > > message
>> > > >     > > > > >     > > unset?
>> > > >     > > > > >     > > > An
>> > > >     > > > > >     > > >     >     alternative is to set the
>> tombstone
>> > bit
>> > > > in the
>> > > >     > > > > wrapper
>> > > >     > > > > > if at
>> > > >     > > > > >     > > > least one
>> > > >     > > > > >     > > >     >     inner message has the tombstone
>> bit
>> > > set.
>> > > > This
>> > > >     > > makes
>> > > >     > > > > > things a
>> > > >     > > > > >     > > bit
>> > > >     > > > > >     > > > more
>> > > >     > > > > >     > > >     >     complicated, but we could
>> potentially
>> > > > exploit
>> > > >     > > that
>> > > >     > > > > for
>> > > >     > > > > >     > > > optimizing down
>> > > >     > > > > >     > > >     >     conversion. For example, we only
>> need
>> > > to
>> > > >     > convert
>> > > >     > > > > > messages
>> > > >     > > > > >     > with
>> > > >     > > > > >     > > > magic 2
>> > > >     > > > > >     > > >     > to
>> > > >     > > > > >     > > >     >     magic 1 if the wrapper's tombstone
>> > bit
>> > > > is set
>> > > >     > > > > > (conversion is
>> > > >     > > > > >     > > > always
>> > > >     > > > > >     > > >     > needed
>> > > >     > > > > >     > > >     >     from magic 2 to magic 0). Not
>> sure if
>> > > the
>> > > >     > > > > optimization
>> > > >     > > > > > is
>> > > >     > > > > >     > worth
>> > > >     > > > > >     > > > the
>> > > >     > > > > >     > > >     >     complexity though.
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     3. The referencing of the new
>> version
>> > > of
>> > > >     > > > > >     > > > ProducerRequest/FetchRequest
>> > > >     > > > > >     > > >     > is
>> > > >     > > > > >     > > >     >     inconsistent (v4 vs v3). Since our
>> > > > convention
>> > > >     > > > starts
>> > > >     > > > > at
>> > > >     > > > > >     > version
>> > > >     > > > > >     > > > at 0, I
>> > > >     > > > > >     > > >     >     think the new version would be 3.
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     4. "If the magic byte on message
>> is
>> > 2,
>> > > > the
>> > > >     > broker
>> > > >     > > > > > should use
>> > > >     > > > > >     > > the
>> > > >     > > > > >     > > >     > tombstone
>> > > >     > > > > >     > > >     >     bit for log compaction." What
>> about
>> > > null
>> > > > value?
>> > > >     > > My
>> > > >     > > > > >     > > understanding
>> > > >     > > > > >     > > > is
>> > > >     > > > > >     > > >     > that
>> > > >     > > > > >     > > >     >     null value will be treated the
>> same
>> > as
>> > > > setting
>> > > >     > > the
>> > > >     > > > > > tombstone
>> > > >     > > > > >     > > bit.
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     5. For the migration path, it
>> would
>> > be
>> > > > useful
>> > > >     > to
>> > > >     > > > > > describe the
>> > > >     > > > > >     > > > down
>> > > >     > > > > >     > > >     >     conversion path to consumers
>> (i.e.,
>> > > > brokers on
>> > > >     > > > > message
>> > > >     > > > > > format
>> > > >     > > > > >     > > > 0.10.2
>> > > >     > > > > >     > > >     > and
>> > > >     > > > > >     > > >     >     consumers on older version).
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     Thanks,
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     Jun
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     On Tue, Nov 29, 2016 at 3:18 AM,
>> > > Michael
>> > > >     > Pearce <
>> > > >     > > > > >     > > > michael.pea...@ig.com
>> > > >     > > > > >     > > >     > >
>> > > >     > > > > >     > > >     >     wrote:
>> > > >     > > > > >     > > >     >
>> > > >     > > > > >     > > >     >     > Hi All,
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     > We have been discussing in the
>> > below
>> > > > thread
>> > > >     > and
>> > > >     > > > > final
>> > > >     > > > > >     > changes
>> > > >     > > > > >     > > > have
>> > > >     > > > > >     > > >     > been
>> > > >     > > > > >     > > >     >     > made to the KIP wiki based on
>> these
>> > > >     > > discussions.
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     > We would now like to put to the
>> > vote
>> > > > the
>> > > >     > > > following
>> > > >     > > > > > KIP:
>> > > >     > > > > >     > > >     >     > https://cwiki.apache.org/
>> > > >     > > > > > confluence/display/KAFKA/KIP-
>> > > >     > > > > >     > 87+-+
>> > > >     > > > > >     > > >     >     > Add+Compaction+Tombstone+Flag
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     > This kip is for having a
>> distinct
>> > > > compaction
>> > > >     > > > > > attribute
>> > > >     > > > > >     > > > "tombstone"
>> > > >     > > > > >     > > >     > flag
>> > > >     > > > > >     > > >     >     > instead of relying on null
>> value,
>> > > > allowing
>> > > >     > > > non-null
>> > > >     > > > > > value
>> > > >     > > > > >     > > > delete
>> > > >     > > > > >     > > >     > messages.
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     > Many thanks,
>> > > >     > > > > >     > > >     >     > Michael
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     > On 22/11/2016, 15:52, "Michael
>> > > Pearce"
>> > > > <
>> > > >     > > > > >     > > michael.pea...@ig.com>
>> > > >     > > > > >     > > >     > wrote:
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >     Hi Mayuresh,
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >     LGTM. Ive just made one
>> small
>> > > > adjustment
>> > > >     > > > > > updating the
>> > > >     > > > > >     > > wire
>> > > >     > > > > >     > > >     > protocol to
>> > > >     > > > > >     > > >     >     > show the magic byte bump.
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >     Do we think we're good to
>> put
>> > to
>> > > a
>> > > > vote?
>> > > >     > Is
>> > > >     > > > > > there any
>> > > >     > > > > >     > > > other bits
>> > > >     > > > > >     > > >     >     > needing discussion?
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >     Cheers
>> > > >     > > > > >     > > >     >     >     Mike
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >     On 21/11/2016, 18:26,
>> "Mayuresh
>> > > > Gharat" <
>> > > >     > > > > >     > > >     > gharatmayures...@gmail.com>
>> > > >     > > > > >     > > >     >     > wrote:
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >         Hi Michael,
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >         I have updated the
>> > migration
>> > > > section
>> > > >     > of
>> > > >     > > > the
>> > > >     > > > > > KIP.
>> > > >     > > > > >     > Can
>> > > >     > > > > >     > > > you
>> > > >     > > > > >     > > >     > please
>> > > >     > > > > >     > > >     >     > take a look?
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >         Thanks,
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >         Mayuresh
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >         On Fri, Nov 18, 2016 at
>> > 9:07
>> > > > AM,
>> > > >     > > Mayuresh
>> > > >     > > > > > Gharat <
>> > > >     > > > > >     > > >     >     > gharatmayures...@gmail.com
>> > > >     > > > > >     > > >     >     >         > wrote:
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >         > Hi Michael,
>> > > >     > > > > >     > > >     >     >         >
>> > > >     > > > > >     > > >     >     >         > That whilst sending
>> > > > tombstone and
>> > > >     > non
>> > > >     > > > > null
>> > > >     > > > > > value,
>> > > >     > > > > >     > > the
>> > > >     > > > > >     > > >     > consumer
>> > > >     > > > > >     > > >     >     > can expect
>> > > >     > > > > >     > > >     >     >         > only to receive the
>> > > non-null
>> > > >     > message
>> > > >     > > > only
>> > > >     > > > > > in step
>> > > >     > > > > >     > > > (3) is
>> > > >     > > > > >     > > >     > this
>> > > >     > > > > >     > > >     >     > correct?
>> > > >     > > > > >     > > >     >     >         > ---> I do agree with
>> you
>> > > > here.
>> > > >     > > > > >     > > >     >     >         >
>> > > >     > > > > >     > > >     >     >         > Becket, Ismael : can
>> you
>> > > guys
>> > > >     > review
>> > > >     > > > the
>> > > >     > > > > >     > migration
>> > > >     > > > > >     > > > plan
>> > > >     > > > > >     > > >     > listed
>> > > >     > > > > >     > > >     >     > above using
>> > > >     > > > > >     > > >     >     >         > magic byte?
>> > > >     > > > > >     > > >     >     >         >
>> > > >     > > > > >     > > >     >     >         > Thanks,
>> > > >     > > > > >     > > >     >     >         >
>> > > >     > > > > >     > > >     >     >         > Mayuresh
>> > > >     > > > > >     > > >     >     >         >
>> > > >     > > > > >     > > >     >     >         > On Fri, Nov 18, 2016
>> at
>> > > 8:58
>> > > > AM,
>> > > >     > > > Michael
>> > > >     > > > > > Pearce <
>> > > >     > > > > >     > > >     >     > michael.pea...@ig.com>
>> > > >     > > > > >     > > >     >     >         > wrote:
>> > > >     > > > > >     > > >     >     >         >
>> > > >     > > > > >     > > >     >     >         >> Many thanks for this
>> > > > Mayuresh. I
>> > > >     > > don't
>> > > >     > > > > > have any
>> > > >     > > > > >     > > >     > objections.
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> I assume we should
>> > state:
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> That whilst sending
>> > > > tombstone and
>> > > >     > > non
>> > > >     > > > > null
>> > > >     > > > > >     > value,
>> > > >     > > > > >     > > > the
>> > > >     > > > > >     > > >     > consumer
>> > > >     > > > > >     > > >     >     > can expect
>> > > >     > > > > >     > > >     >     >         >> only to receive the
>> > > non-null
>> > > >     > message
>> > > >     > > > > only
>> > > >     > > > > > in
>> > > >     > > > > >     > step
>> > > >     > > > > >     > > > (3) is
>> > > >     > > > > >     > > >     > this
>> > > >     > > > > >     > > >     >     > correct?
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Cheers
>> > > >     > > > > >     > > >     >     >         >> Mike
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Sent using OWA for
>> > iPhone
>> > > >     > > > > >     > > >     >     >         >>
>> > > > ______________________________
>> > > >     > > > > __________
>> > > >     > > > > >     > > >     >     >         >> From: Mayuresh
>> Gharat <
>> > > >     > > > > >     > gharatmayures...@gmail.com
>> > > >     > > > > >     > > >
>> > > >     > > > > >     > > >     >     >         >> Sent: Thursday,
>> November
>> > > > 17, 2016
>> > > >     > > > > 5:18:41
>> > > >     > > > > > PM
>> > > >     > > > > >     > > >     >     >         >> To:
>> > dev@kafka.apache.org
>> > > >     > > > > >     > > >     >     >         >> Subject: Re:
>> [DISCUSS]
>> > > > KIP-87 -
>> > > >     > Add
>> > > >     > > > > > Compaction
>> > > >     > > > > >     > > > Tombstone
>> > > >     > > > > >     > > >     > Flag
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Hi Ismael,
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Thanks for the
>> > > explanation.
>> > > >     > > > > >     > > >     >     >         >> Specially I like this
>> > part
>> > > > where
>> > > >     > in
>> > > >     > > > you
>> > > >     > > > > >     > mentioned
>> > > >     > > > > >     > > > we can
>> > > >     > > > > >     > > >     > get
>> > > >     > > > > >     > > >     >     > rid of the
>> > > >     > > > > >     > > >     >     >         >> older null value
>> support
>> > > > for log
>> > > >     > > > > > compaction
>> > > >     > > > > >     > later
>> > > >     > > > > >     > > > on,
>> > > >     > > > > >     > > >     > here :
>> > > >     > > > > >     > > >     >     >         >> We can't change
>> > semantics
>> > > > of the
>> > > >     > > > message
>> > > >     > > > > > format
>> > > >     > > > > >     > > > without
>> > > >     > > > > >     > > >     > having
>> > > >     > > > > >     > > >     >     > a long
>> > > >     > > > > >     > > >     >     >         >> transition period.
>> And
>> > we
>> > > > can't
>> > > >     > rely
>> > > >     > > > > >     > > >     >     >         >> on people reading
>> > > > documentation or
>> > > >     > > > > acting
>> > > >     > > > > > on a
>> > > >     > > > > >     > > > warning for
>> > > >     > > > > >     > > >     >     > something so
>> > > >     > > > > >     > > >     >     >         >> fundamental. As
>> such, my
>> > > > take is
>> > > >     > > that
>> > > >     > > > we
>> > > >     > > > > > need to
>> > > >     > > > > >     > > > bump the
>> > > >     > > > > >     > > >     > magic
>> > > >     > > > > >     > > >     >     > byte. The
>> > > >     > > > > >     > > >     >     >         >> good news is
>> > > >     > > > > >     > > >     >     >         >> that we don't have to
>> > > > support all
>> > > >     > > > > versions
>> > > >     > > > > >     > > forever.
>> > > >     > > > > >     > > > We
>> > > >     > > > > >     > > >     > have
>> > > >     > > > > >     > > >     >     > said that we
>> > > >     > > > > >     > > >     >     >         >> will support direct
>> > > > upgrades for 2
>> > > >     > > > > years.
>> > > >     > > > > > That
>> > > >     > > > > >     > > > means that
>> > > >     > > > > >     > > >     >     > message format
>> > > >     > > > > >     > > >     >     >         >> version n could, in
>> > > theory,
>> > > > be
>> > > >     > > > removed 2
>> > > >     > > > > > years
>> > > >     > > > > >     > > > after the
>> > > >     > > > > >     > > >     > it's
>> > > >     > > > > >     > > >     >     > introduced.
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Just a heads up, I
>> would
>> > > > like to
>> > > >     > > > mention
>> > > >     > > > > > that
>> > > >     > > > > >     > even
>> > > >     > > > > >     > > > without
>> > > >     > > > > >     > > >     >     > bumping magic
>> > > >     > > > > >     > > >     >     >         >> byte, we will *NOT*
>> > loose
>> > > > zero
>> > > >     > copy
>> > > >     > > as
>> > > >     > > > > in
>> > > >     > > > > > the
>> > > >     > > > > >     > > > client(x+1)
>> > > >     > > > > >     > > >     > in my
>> > > >     > > > > >     > > >     >     >         >> explanation
>> > > >     > > > > >     > > >     >     >         >> above will convert
>> > > > internally a
>> > > >     > null
>> > > >     > > > > > value to
>> > > >     > > > > >     > > have a
>> > > >     > > > > >     > > >     > tombstone
>> > > >     > > > > >     > > >     >     > bit set and
>> > > >     > > > > >     > > >     >     >         >> a tombstone bit set
>> to
>> > > have
>> > > > a null
>> > > >     > > > value
>> > > >     > > > > >     > > > automatically
>> > > >     > > > > >     > > >     >     > internally and by
>> > > >     > > > > >     > > >     >     >         >> the time we move to
>> > > version
>> > > > (x+2),
>> > > >     > > the
>> > > >     > > > > > clients
>> > > >     > > > > >     > > > would have
>> > > >     > > > > >     > > >     >     > upgraded.
>> > > >     > > > > >     > > >     >     >         >> Obviously if we
>> support
>> > a
>> > > > request
>> > > >     > > from
>> > > >     > > > > >     > > consumer(x),
>> > > >     > > > > >     > > > we
>> > > >     > > > > >     > > >     > will
>> > > >     > > > > >     > > >     >     > loose zero
>> > > >     > > > > >     > > >     >     >         >> copy
>> > > >     > > > > >     > > >     >     >         >> but that is the same
>> > case
>> > > > with
>> > > >     > magic
>> > > >     > > > > byte.
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> But if magic byte
>> bump
>> > > > makes life
>> > > >     > > > easier
>> > > >     > > > > > for
>> > > >     > > > > >     > > > transition
>> > > >     > > > > >     > > >     > for the
>> > > >     > > > > >     > > >     >     > above
>> > > >     > > > > >     > > >     >     >         >> reasons that you
>> > > explained,
>> > > > I am
>> > > >     > OK
>> > > >     > > > with
>> > > >     > > > > > it
>> > > >     > > > > >     > since
>> > > >     > > > > >     > > > we are
>> > > >     > > > > >     > > >     > going
>> > > >     > > > > >     > > >     >     > to meet the
>> > > >     > > > > >     > > >     >     >         >> end goal down the
>> road
>> > :)
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> On a side note can we
>> > > > update the
>> > > >     > doc
>> > > >     > > > > here
>> > > >     > > > > > on
>> > > >     > > > > >     > magic
>> > > >     > > > > >     > > > byte
>> > > >     > > > > >     > > >     > to say
>> > > >     > > > > >     > > >     >     > that "*it
>> > > >     > > > > >     > > >     >     >         >> should be bumped
>> > whenever
>> > > > the
>> > > >     > > message
>> > > >     > > > > > format is
>> > > >     > > > > >     > > > changed
>> > > >     > > > > >     > > >     > or the
>> > > >     > > > > >     > > >     >     >         >> interpretation of
>> > message
>> > > > format
>> > > >     > > > (usage
>> > > >     > > > > > of the
>> > > >     > > > > >     > > > reserved
>> > > >     > > > > >     > > >     > bits as
>> > > >     > > > > >     > > >     >     > well) is
>> > > >     > > > > >     > > >     >     >         >> changed*".
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Hi Michael,
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Here is the update
>> plan
>> > > > that we
>> > > >     > > > > discussed
>> > > >     > > > > >     > offline
>> > > >     > > > > >     > > >     > yesterday :
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Currently the
>> magic-byte
>> > > > which
>> > > >     > > > > > corresponds to
>> > > >     > > > > >     > the
>> > > >     > > > > >     > > >     >     > "message.format.version"
>> > > >     > > > > >     > > >     >     >         >> is set to 1.
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> 1) On broker it will
>> be
>> > > set
>> > > > to 1
>> > > >     > > > > > initially.
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> 2) When a producer
>> > client
>> > > > sends a
>> > > >     > > > > message
>> > > >     > > > > > with
>> > > >     > > > > >     > > > magic-byte
>> > > >     > > > > >     > > >     > = 2,
>> > > >     > > > > >     > > >     >     > since the
>> > > >     > > > > >     > > >     >     >         >> broker is on
>> magic-byte
>> > =
>> > > > 1, we
>> > > >     > will
>> > > >     > > > > down
>> > > >     > > > > >     > convert
>> > > >     > > > > >     > > > it,
>> > > >     > > > > >     > > >     > which
>> > > >     > > > > >     > > >     >     > means if the
>> > > >     > > > > >     > > >     >     >         >> tombstone bit is set,
>> > the
>> > > > value
>> > > >     > will
>> > > >     > > > be
>> > > >     > > > > > set to
>> > > >     > > > > >     > > > null. A
>> > > >     > > > > >     > > >     > consumer
>> > > >     > > > > >     > > >     >     >         >> understanding
>> > magic-byte =
>> > > > 1, will
>> > > >     > > > still
>> > > >     > > > > > work
>> > > >     > > > > >     > with
>> > > >     > > > > >     > > > this. A
>> > > >     > > > > >     > > >     >     > consumer
>> > > >     > > > > >     > > >     >     >         >> working
>> > > >     > > > > >     > > >     >     >         >> with magic-byte =2
>> will
>> > > > also be
>> > > >     > able
>> > > >     > > > to
>> > > >     > > > > >     > understand
>> > > >     > > > > >     > > > this,
>> > > >     > > > > >     > > >     > since
>> > > >     > > > > >     > > >     >     > it
>> > > >     > > > > >     > > >     >     >         >> understands the
>> > tombstone.
>> > > >     > > > > >     > > >     >     >         >> Now there is still
>> the
>> > > > question of
>> > > >     > > > > > supporting a
>> > > >     > > > > >     > > >     > non-tombstone
>> > > >     > > > > >     > > >     >     > and null
>> > > >     > > > > >     > > >     >     >         >> value from producer
>> > client
>> > > > with
>> > > >     > > > > > magic-byte = 2.*
>> > > >     > > > > >     > > (I
>> > > >     > > > > >     > > > am
>> > > >     > > > > >     > > >     > not sure
>> > > >     > > > > >     > > >     >     > if we
>> > > >     > > > > >     > > >     >     >         >> should support this.
>> > > > Ismael/Becket
>> > > >     > > can
>> > > >     > > > > > comment
>> > > >     > > > > >     > > > here)*
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> 3) When almost all
>> the
>> > > > clients
>> > > >     > have
>> > > >     > > > > > upgraded,
>> > > >     > > > > >     > the
>> > > >     > > > > >     > > >     >     > message.format.version
>> > > >     > > > > >     > > >     >     >         >> on
>> > > >     > > > > >     > > >     >     >         >> the broker can be
>> > changed
>> > > > to 2,
>> > > >     > > where
>> > > >     > > > in
>> > > >     > > > > > the
>> > > >     > > > > >     > down
>> > > >     > > > > >     > > >     > conversion in
>> > > >     > > > > >     > > >     >     > the above
>> > > >     > > > > >     > > >     >     >         >> step will not
>> happen. If
>> > > at
>> > > > this
>> > > >     > > point
>> > > >     > > > > we
>> > > >     > > > > > get a
>> > > >     > > > > >     > > > consumer
>> > > >     > > > > >     > > >     >     > request from a
>> > > >     > > > > >     > > >     >     >         >> older consumer, we
>> might
>> > > > have to
>> > > >     > > down
>> > > >     > > > > > convert
>> > > >     > > > > >     > > where
>> > > >     > > > > >     > > > in we
>> > > >     > > > > >     > > >     > loose
>> > > >     > > > > >     > > >     >     > zero copy,
>> > > >     > > > > >     > > >     >     >         >> but these cases
>> should
>> > be
>> > > > rare.
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Becket can you review
>> > this
>> > > > plan
>> > > >     > and
>> > > >     > > > add
>> > > >     > > > > > more
>> > > >     > > > > >     > > > details if I
>> > > >     > > > > >     > > >     > have
>> > > >     > > > > >     > > >     >     >         >> missed/wronged
>> > something,
>> > > > before
>> > > >     > we
>> > > >     > > > put
>> > > >     > > > > > it on
>> > > >     > > > > >     > KIP.
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Thanks,
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> Mayuresh
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> On Wed, Nov 16, 2016
>> at
>> > > > 11:07 PM,
>> > > >     > > > > Michael
>> > > >     > > > > >     > Pearce <
>> > > >     > > > > >     > > >     >     > michael.pea...@ig.com>
>> > > >     > > > > >     > > >     >     >         >> wrote:
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> > Thanks guys, for
>> > > > discussing this
>> > > >     > > > > > offline and
>> > > >     > > > > >     > > > getting
>> > > >     > > > > >     > > >     > some
>> > > >     > > > > >     > > >     >     > consensus.
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > So its clear for
>> > myself
>> > > > and
>> > > >     > others
>> > > >     > > > > what
>> > > >     > > > > > is
>> > > >     > > > > >     > > > proposed now
>> > > >     > > > > >     > > >     > (i
>> > > >     > > > > >     > > >     >     > think i
>> > > >     > > > > >     > > >     >     >         >> > understand, but
>> want
>> > to
>> > > > make
>> > > >     > sure)
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > Could i ask either
>> > > > directly
>> > > >     > update
>> > > >     > > > the
>> > > >     > > > > > kip to
>> > > >     > > > > >     > > > detail the
>> > > >     > > > > >     > > >     >     > migration
>> > > >     > > > > >     > > >     >     >         >> > strategy, or
>> > (re-)state
>> > > > your
>> > > >     > > offline
>> > > >     > > > > > discussed
>> > > >     > > > > >     > > and
>> > > >     > > > > >     > > >     > agreed
>> > > >     > > > > >     > > >     >     > migration
>> > > >     > > > > >     > > >     >     >         >> > strategy based on a
>> > > magic
>> > > > byte
>> > > >     > is
>> > > >     > > in
>> > > >     > > > > > this
>> > > >     > > > > >     > > thread.
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > The main original
>> > driver
>> > > > for the
>> > > >     > > KIP
>> > > >     > > > > > was to
>> > > >     > > > > >     > > > support
>> > > >     > > > > >     > > >     >     > compaction where
>> > > >     > > > > >     > > >     >     >         >> value
>> > > >     > > > > >     > > >     >     >         >> > isn't null, based
>> off
>> > > the
>> > > >     > > > discussions
>> > > >     > > > > on
>> > > >     > > > > >     > KIP-82
>> > > >     > > > > >     > > > thread.
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > We should be able
>> to
>> > > > support
>> > > >     > > > > > non-tombstone +
>> > > >     > > > > >     > > null
>> > > >     > > > > >     > > > value
>> > > >     > > > > >     > > >     > by the
>> > > >     > > > > >     > > >     >     >         >> completion
>> > > >     > > > > >     > > >     >     >         >> > of the KIP, as we
>> > noted
>> > > > when
>> > > >     > > > > discussing
>> > > >     > > > > > this
>> > > >     > > > > >     > > kip,
>> > > >     > > > > >     > > > having
>> > > >     > > > > >     > > >     >     > logic based on
>> > > >     > > > > >     > > >     >     >         >> a
>> > > >     > > > > >     > > >     >     >         >> > null value isn't
>> very
>> > > > clean and
>> > > >     > > also
>> > > >     > > > > > separates
>> > > >     > > > > >     > > the
>> > > >     > > > > >     > > >     > concerns.
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > As discussed
>> already
>> > > > though we
>> > > >     > can
>> > > >     > > > > > split this
>> > > >     > > > > >     > > into
>> > > >     > > > > >     > > >     > KIP-87a
>> > > >     > > > > >     > > >     >     > and KIP-87b
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > Where we look to
>> > deliver
>> > > > KIP-87a
>> > > >     > > on
>> > > >     > > > a
>> > > >     > > > > >     > compacted
>> > > >     > > > > >     > > > topic
>> > > >     > > > > >     > > >     > (to
>> > > >     > > > > >     > > >     >     > address the
>> > > >     > > > > >     > > >     >     >         >> > immediate issues)
>> > > >     > > > > >     > > >     >     >         >> > * tombstone + null
>> > value
>> > > >     > > > > >     > > >     >     >         >> > * tombstone +
>> non-null
>> > > > value
>> > > >     > > > > >     > > >     >     >         >> > * non-tombstone +
>> > > > non-null value
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > Then we can discuss
>> > once
>> > > > KIP-87a
>> > > >     > > is
>> > > >     > > > > > completed
>> > > >     > > > > >     > > > options
>> > > >     > > > > >     > > >     > later
>> > > >     > > > > >     > > >     >     > and how we
>> > > >     > > > > >     > > >     >     >         >> > support the second
>> > part
>> > > > KIP-87b
>> > > >     > to
>> > > >     > > > > > deliver:
>> > > >     > > > > >     > > >     >     >         >> > * non-tombstone +
>> null
>> > > > value
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > Cheers
>> > > >     > > > > >     > > >     >     >         >> > Mike
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> >
>> > > > ______________________________
>> > > >     > > > > > __________
>> > > >     > > > > >     > > >     >     >         >> > From: Becket Qin <
>> > > >     > > > > becket....@gmail.com>
>> > > >     > > > > >     > > >     >     >         >> > Sent: Thursday,
>> > November
>> > > > 17,
>> > > >     > 2016
>> > > >     > > > 1:43
>> > > >     > > > > > AM
>> > > >     > > > > >     > > >     >     >         >> > To:
>> > > dev@kafka.apache.org
>> > > >     > > > > >     > > >     >     >         >> > Subject: Re:
>> [DISCUSS]
>> > > > KIP-87 -
>> > > >     > > Add
>> > > >     > > > > > Compaction
>> > > >     > > > > >     > > >     > Tombstone Flag
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > Renu, Mayuresh and
>> I
>> > had
>> > > > an
>> > > >     > > offline
>> > > >     > > > > >     > discussion,
>> > > >     > > > > >     > > > and
>> > > >     > > > > >     > > >     > following
>> > > >     > > > > >     > > >     >     > is a brief
>> > > >     > > > > >     > > >     >     >         >> > summary.
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > 1. We agreed that
>> not
>> > > > bumping up
>> > > >     > > > magic
>> > > >     > > > > > value
>> > > >     > > > > >     > may
>> > > >     > > > > >     > > > result
>> > > >     > > > > >     > > >     > in
>> > > >     > > > > >     > > >     >     > losing zero
>> > > >     > > > > >     > > >     >     >         >> copy
>> > > >     > > > > >     > > >     >     >         >> > during migration.
>> > > >     > > > > >     > > >     >     >         >> > 2. Given that
>> bumping
>> > up
>> > > > magic
>> > > >     > > value
>> > > >     > > > > is
>> > > >     > > > > > almost
>> > > >     > > > > >     > > > free and
>> > > >     > > > > >     > > >     > has
>> > > >     > > > > >     > > >     >     > benefit of
>> > > >     > > > > >     > > >     >     >         >> > avoiding potential
>> > > > performance
>> > > >     > > > issue.
>> > > >     > > > > > It is
>> > > >     > > > > >     > > > probably
>> > > >     > > > > >     > > >     > worth
>> > > >     > > > > >     > > >     >     > doing.
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > One issue we still
>> > need
>> > > > to think
>> > > >     > > > about
>> > > >     > > > > > is
>> > > >     > > > > >     > > whether
>> > > >     > > > > >     > > > we
>> > > >     > > > > >     > > >     > want to
>> > > >     > > > > >     > > >     >     > support a
>> > > >     > > > > >     > > >     >     >         >> > non-tombstone
>> message
>> > > > with null
>> > > >     > > > value.
>> > > >     > > > > >     > > >     >     >         >> > Currently it is not
>> > > > supported by
>> > > >     > > > > Kafka.
>> > > >     > > > > > If we
>> > > >     > > > > >     > > > allow a
>> > > >     > > > > >     > > >     >     > non-tombstone null
>> > > >     > > > > >     > > >     >     >         >> > value message to
>> exist
>> > > > after
>> > > >     > > KIP-87.
>> > > >     > > > > The
>> > > >     > > > > >     > problem
>> > > >     > > > > >     > > > is
>> > > >     > > > > >     > > >     > that such
>> > > >     > > > > >     > > >     >     > message
>> > > >     > > > > >     > > >     >     >         >> will
>> > > >     > > > > >     > > >     >     >         >> > not be supported by
>> > the
>> > > >     > consumers
>> > > >     > > > > prior
>> > > >     > > > > > to
>> > > >     > > > > >     > > KIP-87.
>> > > >     > > > > >     > > >     > Because a
>> > > >     > > > > >     > > >     >     > null value
>> > > >     > > > > >     > > >     >     >         >> > will always be
>> > > > interpreted to a
>> > > >     > > > > > tombstone.
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > One option is that
>> we
>> > > > keep the
>> > > >     > > > current
>> > > >     > > > > > way,
>> > > >     > > > > >     > i.e.
>> > > >     > > > > >     > > > do not
>> > > >     > > > > >     > > >     >     > support such
>> > > >     > > > > >     > > >     >     >         >> > message. It would
>> be
>> > > good
>> > > > to
>> > > >     > know
>> > > >     > > if
>> > > >     > > > > > there is
>> > > >     > > > > >     > a
>> > > >     > > > > >     > > >     > concrete use
>> > > >     > > > > >     > > >     >     > case for
>> > > >     > > > > >     > > >     >     >         >> such
>> > > >     > > > > >     > > >     >     >         >> > message. If there
>> is
>> > > not,
>> > > > we can
>> > > >     > > > > > probably just
>> > > >     > > > > >     > > not
>> > > >     > > > > >     > > >     > support it.
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > Thanks,
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > JIangjie (Becket)
>> Qin
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > On Wed, Nov 16,
>> 2016
>> > at
>> > > > 1:28 PM,
>> > > >     > > > > > Mayuresh
>> > > >     > > > > >     > > Gharat <
>> > > >     > > > > >     > > >     >     >         >> >
>> > > > gharatmayures...@gmail.com
>> > > >     > > > > >     > > >     >     >         >> > > wrote:
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >> > > Hi Ismael,
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > > This is
>> something I
>> > > can
>> > > > think
>> > > >     > of
>> > > >     > > > for
>> > > >     > > > > >     > migration
>> > > >     > > > > >     > > > plan:
>> > > >     > > > > >     > > >     >     >         >> > > So the migration
>> > plan
>> > > > can look
>> > > >     > > > > > something
>> > > >     > > > > >     > like
>> > > >     > > > > >     > > > this,
>> > > >     > > > > >     > > >     > with up
>> > > >     > > > > >     > > >     >     >         >> conversion :
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > > 1) Currently lets
>> > say
>> > > > we have
>> > > >     > > > Broker
>> > > >     > > > > > at
>> > > >     > > > > >     > > version
>> > > >     > > > > >     > > > x.
>> > > >     > > > > >     > > >     >     >         >> > > 2) Currently we
>> have
>> > > > clients
>> > > >     > at
>> > > >     > > > > > version x.
>> > > >     > > > > >     > > >     >     >         >> > > 3) a) We move the
>> > > > version to
>> > > >     > > > > > Broker(x+1) :
>> > > >     > > > > >     > > > supports
>> > > >     > > > > >     > > >     > both
>> > > >     > > > > >     > > >     >     > tombstone and
>> > > >     > > > > >     > > >     >     >         >> > null
>> > > >     > > > > >     > > >     >     >         >> > > for log
>> compaction.
>> > > >     > > > > >     > > >     >     >         >> > >     b) We upgrade
>> > the
>> > > > client
>> > > >     > to
>> > > >     > > > > > version
>> > > >     > > > > >     > > > client(x+1) :
>> > > >     > > > > >     > > >     > if in
>> > > >     > > > > >     > > >     >     > the
>> > > >     > > > > >     > > >     >     >         >> producer
>> > > >     > > > > >     > > >     >     >         >> > > client(x+1) the
>> > value
>> > > > is set
>> > > >     > to
>> > > >     > > > > null,
>> > > >     > > > > > we
>> > > >     > > > > >     > will
>> > > >     > > > > >     > > >     > automatically
>> > > >     > > > > >     > > >     >     > set the
>> > > >     > > > > >     > > >     >     >         >> > > Tombstone bit
>> > > > internally. If
>> > > >     > the
>> > > >     > > > > > producer
>> > > >     > > > > >     > > > client(x+1)
>> > > >     > > > > >     > > >     > sets
>> > > >     > > > > >     > > >     >     > the
>> > > >     > > > > >     > > >     >     >         >> tombstone
>> > > >     > > > > >     > > >     >     >         >> > > itself, well and
>> > good.
>> > > > For
>> > > >     > > > producer
>> > > >     > > > > >     > client(x),
>> > > >     > > > > >     > > > the
>> > > >     > > > > >     > > >     > broker
>> > > >     > > > > >     > > >     >     > will up
>> > > >     > > > > >     > > >     >     >         >> convert
>> > > >     > > > > >     > > >     >     >         >> > > to have the
>> > tombstone
>> > > > bit.
>> > > >     > > > > > Broker(x+1) is
>> > > >     > > > > >     > > > supporting
>> > > >     > > > > >     > > >     > both.
>> > > >     > > > > >     > > >     >     > Consumer
>> > > >     > > > > >     > > >     >     >         >> > > client(x+1) will
>> be
>> > > > aware of
>> > > >     > > this
>> > > >     > > > > and
>> > > >     > > > > > should
>> > > >     > > > > >     > > be
>> > > >     > > > > >     > > > able
>> > > >     > > > > >     > > >     > to
>> > > >     > > > > >     > > >     >     > handle this.
>> > > >     > > > > >     > > >     >     >         >> For
>> > > >     > > > > >     > > >     >     >         >> > > consumer
>> client(x)
>> > we
>> > > > will
>> > > >     > down
>> > > >     > > > > > convert the
>> > > >     > > > > >     > > > message
>> > > >     > > > > >     > > >     > on the
>> > > >     > > > > >     > > >     >     > broker
>> > > >     > > > > >     > > >     >     >         >> side.
>> > > >     > > > > >     > > >     >     >         >> > >     c) At this
>> point
>> > > we
>> > > > will
>> > > >     > > have
>> > > >     > > > to
>> > > >     > > > > >     > specify a
>> > > >     > > > > >     > > >     > warning or
>> > > >     > > > > >     > > >     >     > clearly
>> > > >     > > > > >     > > >     >     >         >> specify
>> > > >     > > > > >     > > >     >     >         >> > > in docs that this
>> > > > behavior is
>> > > >     > > > about
>> > > >     > > > > > to be
>> > > >     > > > > >     > > > changed for
>> > > >     > > > > >     > > >     > log
>> > > >     > > > > >     > > >     >     > compaction.
>> > > >     > > > > >     > > >     >     >         >> > > 4) a) In next
>> > release
>> > > > of the
>> > > >     > > > > > Broker(x+2), we
>> > > >     > > > > >     > > > say that
>> > > >     > > > > >     > > >     > only
>> > > >     > > > > >     > > >     >     > Tombstone
>> > > >     > > > > >     > > >     >     >         >> is
>> > > >     > > > > >     > > >     >     >         >> > > used for log
>> > > compaction
>> > > > on the
>> > > >     > > > > Broker
>> > > >     > > > > > side.
>> > > >     > > > > >     > > >     > Clients(x+1)
>> > > >     > > > > >     > > >     >     > still is
>> > > >     > > > > >     > > >     >     >         >> > > supported.
>> > > >     > > > > >     > > >     >     >         >> > >     b) We upgrade
>> > the
>> > > > client
>> > > >     > to
>> > > >     > > > > > version
>> > > >     > > > > >     > > > client(x+2) :
>> > > >     > > > > >     > > >     > if
>> > > >     > > > > >     > > >     >     > value is set
>> > > >     > > > > >     > > >     >     >         >> to
>> > > >     > > > > >     > > >     >     >         >> > > null, tombstone
>> will
>> > > > not be
>> > > >     > set
>> > > >     > > > > >     > automatically.
>> > > >     > > > > >     > > > The
>> > > >     > > > > >     > > >     > client
>> > > >     > > > > >     > > >     >     > will have to
>> > > >     > > > > >     > > >     >     >         >> > call
>> > > >     > > > > >     > > >     >     >         >> > > setTombstone() to
>> > > > actually set
>> > > >     > > the
>> > > >     > > > > >     > tombstone.
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > > We should compare
>> > this
>> > > >     > migration
>> > > >     > > > > plan
>> > > >     > > > > > with
>> > > >     > > > > >     > the
>> > > >     > > > > >     > > >     > migration
>> > > >     > > > > >     > > >     >     > plan for
>> > > >     > > > > >     > > >     >     >         >> magic
>> > > >     > > > > >     > > >     >     >         >> > > byte bump and do
>> > > > whatever
>> > > >     > looks
>> > > >     > > > > good.
>> > > >     > > > > >     > > >     >     >         >> > > I am just worried
>> > that
>> > > > if we
>> > > >     > go
>> > > >     > > > down
>> > > >     > > > > > magic
>> > > >     > > > > >     > > byte
>> > > >     > > > > >     > > > route,
>> > > >     > > > > >     > > >     >     > unless I am
>> > > >     > > > > >     > > >     >     >         >> > missing
>> > > >     > > > > >     > > >     >     >         >> > > something, it
>> sounds
>> > > > like
>> > > >     > kafka
>> > > >     > > > will
>> > > >     > > > > > be
>> > > >     > > > > >     > stuck
>> > > >     > > > > >     > > > with
>> > > >     > > > > >     > > >     >     > supporting both
>> > > >     > > > > >     > > >     >     >         >> null
>> > > >     > > > > >     > > >     >     >         >> > > value and
>> tombstone
>> > > bit
>> > > > for
>> > > >     > log
>> > > >     > > > > > compaction
>> > > >     > > > > >     > for
>> > > >     > > > > >     > > > life
>> > > >     > > > > >     > > >     > long,
>> > > >     > > > > >     > > >     >     > which does
>> > > >     > > > > >     > > >     >     >         >> not
>> > > >     > > > > >     > > >     >     >         >> > > look like a good
>> end
>> > > > state.
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > > Thanks,
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > > Mayuresh
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > > On Wed, Nov 16,
>> 2016
>> > > at
>> > > > 9:32
>> > > >     > AM,
>> > > >     > > > > > Mayuresh
>> > > >     > > > > >     > > > Gharat <
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > > gharatmayures...@gmail.com
>> > > >     > > > > >     > > >     >     >         >> > > > wrote:
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > > > Hi Ismael,
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > > That's a very
>> good
>> > > > point
>> > > >     > > which I
>> > > >     > > > > > might
>> > > >     > > > > >     > have
>> > > >     > > > > >     > > > not
>> > > >     > > > > >     > > >     >     > considered earlier.
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > > Here is a plan
>> > that
>> > > I
>> > > > can
>> > > >     > > think
>> > > >     > > > > of:
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > > Stage 1) The
>> > broker
>> > > > from now
>> > > >     > > on,
>> > > >     > > > > up
>> > > >     > > > > >     > converts
>> > > >     > > > > >     > > > the
>> > > >     > > > > >     > > >     > message
>> > > >     > > > > >     > > >     >     > to have the
>> > > >     > > > > >     > > >     >     >         >> > > > tombstone
>> marker.
>> > > The
>> > > > log
>> > > >     > > > > compaction
>> > > >     > > > > >     > thread
>> > > >     > > > > >     > > > does log
>> > > >     > > > > >     > > >     >     > compaction
>> > > >     > > > > >     > > >     >     >         >> based
>> > > >     > > > > >     > > >     >     >         >> > on
>> > > >     > > > > >     > > >     >     >         >> > > > both null and
>> > > > tombstone
>> > > >     > > marker.
>> > > >     > > > > > This is
>> > > >     > > > > >     > our
>> > > >     > > > > >     > > >     > transition
>> > > >     > > > > >     > > >     >     > period.
>> > > >     > > > > >     > > >     >     >         >> > > > Stage 2) The
>> next
>> > > > release we
>> > > >     > > > only
>> > > >     > > > > > say that
>> > > >     > > > > >     > > log
>> > > >     > > > > >     > > >     > compaction
>> > > >     > > > > >     > > >     >     > is based
>> > > >     > > > > >     > > >     >     >         >> on
>> > > >     > > > > >     > > >     >     >         >> > > > tombstone
>> marker.
>> > > > (Open
>> > > >     > source
>> > > >     > > > > > kafka makes
>> > > >     > > > > >     > > > this as a
>> > > >     > > > > >     > > >     >     > policy). By
>> > > >     > > > > >     > > >     >     >         >> this
>> > > >     > > > > >     > > >     >     >         >> > > time,
>> > > >     > > > > >     > > >     >     >         >> > > > the
>> organization
>> > > > which is
>> > > >     > > moving
>> > > >     > > > > to
>> > > >     > > > > > this
>> > > >     > > > > >     > > > release
>> > > >     > > > > >     > > >     > will be
>> > > >     > > > > >     > > >     >     > sure that
>> > > >     > > > > >     > > >     >     >         >> they
>> > > >     > > > > >     > > >     >     >         >> > > > have gone
>> through
>> > > the
>> > > > entire
>> > > >     > > > > > transition
>> > > >     > > > > >     > > > period.
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > > My only goal of
>> > > doing
>> > > > this
>> > > >     > is
>> > > >     > > > that
>> > > >     > > > > > Kafka
>> > > >     > > > > >     > > > clearly
>> > > >     > > > > >     > > >     >     > specifies the end
>> > > >     > > > > >     > > >     >     >         >> > state
>> > > >     > > > > >     > > >     >     >         >> > > > about what log
>> > > > compaction
>> > > >     > > means
>> > > >     > > > > (is
>> > > >     > > > > > it
>> > > >     > > > > >     > null
>> > > >     > > > > >     > > > value
>> > > >     > > > > >     > > >     > or a
>> > > >     > > > > >     > > >     >     > tombstone
>> > > >     > > > > >     > > >     >     >         >> > marker,
>> > > >     > > > > >     > > >     >     >         >> > > > but not both).
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > > What do you
>> think?
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > > Thanks,
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > > Mayuresh
>> > > >     > > > > >     > > >     >     >         >> > > > .
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > > On Wed, Nov 16,
>> > 2016
>> > > > at 9:17
>> > > >     > > AM,
>> > > >     > > > > > Ismael
>> > > >     > > > > >     > > Juma <
>> > > >     > > > > >     > > >     >     > ism...@juma.me.uk>
>> > > >     > > > > >     > > >     >     >         >> > wrote:
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > >> One comment
>> > below.
>> > > >     > > > > >     > > >     >     >         >> > > >>
>> > > >     > > > > >     > > >     >     >         >> > > >> On Wed, Nov
>> 16,
>> > > 2016
>> > > > at
>> > > >     > 5:08
>> > > >     > > > PM,
>> > > >     > > > > > Mayuresh
>> > > >     > > > > >     > > > Gharat <
>> > > >     > > > > >     > > >     >     >         >> > > >>
>> > > > gharatmayures...@gmail.com
>> > > >     > > > > >     > > >     >     >         >> > > >> > wrote:
>> > > >     > > > > >     > > >     >     >         >> > > >>
>> > > >     > > > > >     > > >     >     >         >> > > >> >    - If we
>> > don't
>> > > > bump up
>> > > >     > > the
>> > > >     > > > > > magic
>> > > >     > > > > >     > byte,
>> > > >     > > > > >     > > > on the
>> > > >     > > > > >     > > >     > broker
>> > > >     > > > > >     > > >     >     > side, the
>> > > >     > > > > >     > > >     >     >         >> > > broker
>> > > >     > > > > >     > > >     >     >         >> > > >> >    will
>> always
>> > > > have to
>> > > >     > look
>> > > >     > > > at
>> > > >     > > > > > both
>> > > >     > > > > >     > > > tombstone
>> > > >     > > > > >     > > >     > bit and
>> > > >     > > > > >     > > >     >     > the value
>> > > >     > > > > >     > > >     >     >         >> when
>> > > >     > > > > >     > > >     >     >         >> > > do
>> > > >     > > > > >     > > >     >     >         >> > > >> the
>> > > >     > > > > >     > > >     >     >         >> > > >> >
>> compaction.
>> > > > Assuming
>> > > >     > we
>> > > >     > > do
>> > > >     > > > > > not bump
>> > > >     > > > > >     > up
>> > > >     > > > > >     > > > the
>> > > >     > > > > >     > > >     > magic
>> > > >     > > > > >     > > >     >     > byte,
>> > > >     > > > > >     > > >     >     >         >> > > >> >    imagine
>> the
>> > > > broker
>> > > >     > sees
>> > > >     > > a
>> > > >     > > > > > message
>> > > >     > > > > >     > > which
>> > > >     > > > > >     > > > does
>> > > >     > > > > >     > > >     > not
>> > > >     > > > > >     > > >     >     > have a
>> > > >     > > > > >     > > >     >     >         >> tombstone
>> > > >     > > > > >     > > >     >     >         >> > > bit
>> > > >     > > > > >     > > >     >     >         >> > > >> >    set. The
>> > > broker
>> > > > does
>> > > >     > not
>> > > >     > > > > know
>> > > >     > > > > > when
>> > > >     > > > > >     > the
>> > > >     > > > > >     > > >     > message was
>> > > >     > > > > >     > > >     >     > produced
>> > > >     > > > > >     > > >     >     >         >> (i.e.
>> > > >     > > > > >     > > >     >     >         >> > > >> > whether
>> > > >     > > > > >     > > >     >     >         >> > > >> >    the
>> message
>> > > has
>> > > > been
>> > > >     > up
>> > > >     > > > > > converted or
>> > > >     > > > > >     > > > not), it
>> > > >     > > > > >     > > >     > has
>> > > >     > > > > >     > > >     >     > to take a
>> > > >     > > > > >     > > >     >     >         >> > further
>> > > >     > > > > >     > > >     >     >         >> > > >> > look at
>> > > >     > > > > >     > > >     >     >         >> > > >> >    the
>> value to
>> > > > see if it
>> > > >     > > is
>> > > >     > > > > > null or
>> > > >     > > > > >     > not
>> > > >     > > > > >     > > in
>> > > >     > > > > >     > > >     > order to
>> > > >     > > > > >     > > >     >     > determine
>> > > >     > > > > >     > > >     >     >         >> if it
>> > > >     > > > > >     > > >     >     >         >> > > is
>> > > >     > > > > >     > > >     >     >         >> > > >> a
>> > > >     > > > > >     > > >     >     >         >> > > >> >
>> tombstone.
>> > The
>> > > > same
>> > > >     > > logic
>> > > >     > > > > has
>> > > >     > > > > > to be
>> > > >     > > > > >     > > put
>> > > >     > > > > >     > > > on the
>> > > >     > > > > >     > > >     >     > consumer as
>> > > >     > > > > >     > > >     >     >         >> well
>> > > >     > > > > >     > > >     >     >         >> > > >> because
>> > > >     > > > > >     > > >     >     >         >> > > >> > the
>> > > >     > > > > >     > > >     >     >         >> > > >> >    consumer
>> > does
>> > > > not know
>> > > >     > > if
>> > > >     > > > > the
>> > > >     > > > > >     > message
>> > > >     > > > > >     > > > has
>> > > >     > > > > >     > > >     > been up
>> > > >     > > > > >     > > >     >     > converted or
>> > > >     > > > > >     > > >     >     >         >> > not.
>> > > >     > > > > >     > > >     >     >         >> > > >> >       - If
>> we
>> > > > upconvert
>> > > >     > > while
>> > > >     > > > > >     > appending,
>> > > >     > > > > >     > > > this is
>> > > >     > > > > >     > > >     > not
>> > > >     > > > > >     > > >     >     > the case,
>> > > >     > > > > >     > > >     >     >         >> > right?
>> > > >     > > > > >     > > >     >     >         >> > > >>
>> > > >     > > > > >     > > >     >     >         >> > > >>
>> > > >     > > > > >     > > >     >     >         >> > > >> If I
>> understand
>> > you
>> > > >     > > correctly,
>> > > >     > > > > > this is
>> > > >     > > > > >     > not
>> > > >     > > > > >     > > >     > sufficient
>> > > >     > > > > >     > > >     >     > because the
>> > > >     > > > > >     > > >     >     >         >> log
>> > > >     > > > > >     > > >     >     >         >> > > may
>> > > >     > > > > >     > > >     >     >         >> > > >> have messages
>> > > > appended
>> > > >     > before
>> > > >     > > > it
>> > > >     > > > > > was
>> > > >     > > > > >     > > > upgraded to
>> > > >     > > > > >     > > >     > include
>> > > >     > > > > >     > > >     >     > KIP-87.
>> > > >     > > > > >     > > >     >     >         >> > > >>
>> > > >     > > > > >     > > >     >     >         >> > > >> Ismael
>> > > >     > > > > >     > > >     >     >         >> > > >>
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > > > --
>> > > >     > > > > >     > > >     >     >         >> > > > -Regards,
>> > > >     > > > > >     > > >     >     >         >> > > > Mayuresh R.
>> Gharat
>> > > >     > > > > >     > > >     >     >         >> > > > (862) 250-7125
>> > > >     > > > > >     > > >     >     >         >> > > >
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > > --
>> > > >     > > > > >     > > >     >     >         >> > > -Regards,
>> > > >     > > > > >     > > >     >     >         >> > > Mayuresh R.
>> Gharat
>> > > >     > > > > >     > > >     >     >         >> > > (862) 250-7125
>> > > >     > > > > >     > > >     >     >         >> > >
>> > > >     > > > > >     > > >     >     >         >> > 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.
>> > > >     > > > > >     > > >     >     >         >> >
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >> --
>> > > >     > > > > >     > > >     >     >         >> -Regards,
>> > > >     > > > > >     > > >     >     >         >> Mayuresh R. Gharat
>> > > >     > > > > >     > > >     >     >         >> (862) 250-7125
>> > > >     > > > > >     > > >     >     >         >> 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.
>> > > >     > > > > >     > > >     >     >         >>
>> > > >     > > > > >     > > >     >     >         >
>> > > >     > > > > >     > > >     >     >         >
>> > > >     > > > > >     > > >     >     >         >
>> > > >     > > > > >     > > >     >     >         > --
>> > > >     > > > > >     > > >     >     >         > -Regards,
>> > > >     > > > > >     > > >     >     >         > Mayuresh R. Gharat
>> > > >     > > > > >     > > >     >     >         > (862) 250-7125
>> > > >     > > > > >     > > >     >     >         >
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >         --
>> > > >     > > > > >     > > >     >     >         -Regards,
>> > > >     > > > > >     > > >     >     >         Mayuresh R. Gharat
>> > > >     > > > > >     > > >     >     >         (862) 250-7125
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >
>> > > >     > > > > >     > > >     >     >     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
>> > > >     > <020%207896%200011>) 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
>> > > >     > <020%207896%200011>) 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
>> > > >     > <020%207896%200011>) 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
>> > > >     > <020%207896%200011>) 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
>> > > >     > <020%207896%200011>) 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
>> > > > <020%207896%200011>)
>> > > >     > 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
>> > > > <020%207896%200011>)
>> > > >     > 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
>> > > > <020%207896%200011>)
>> > > >     > 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.
>> > > >
>> > > 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.
>> >
>>
>
>

Reply via email to