Sounds good Michael. Thanks,
Mayuresh On Fri, Nov 11, 2016 at 12:48 AM, Michael Pearce <michael.pea...@ig.com> wrote: > @Mayuresh i don't think you've missed anything - > > as per earlier in the discussion. > > We're providing new api versions, but not planning on bumping the magic > number as there is no structural changes, we are simply using up a new > attribute bit (as like adding new compression support just uses up > additional attribute bits) > > > I think also difference between null vs 0 length byte array is covered. > > @Becket, > > The two stage approach is because we want to end up just supporting > tombstone marker (not both) > > But we accept we need to allow organisations and systems a period of > transition (this is what stage 1 provides) > > > > > ________________________________________ > From: Mayuresh Gharat <gharatmayures...@gmail.com> > Sent: Thursday, November 10, 2016 8:57 PM > To: dev@kafka.apache.org > Subject: Re: [DISCUSS] KIP-87 - Add Compaction Tombstone Flag > > I am not sure if we are bumping magicByte value as the KIP does not mention > it (If I didn't miss anything). > > @Nacho : I did not understand what you meant by : Conversion from one to > the other may be possible but I would rather not have to do it. > > You will have to do the conversion for the scenario that Becket has > mentioned above where an old consumer talks to the new broker, right? > > Thanks, > > Mayuresh > > > On Thu, Nov 10, 2016 at 11:54 AM, Becket Qin <becket....@gmail.com> wrote: > > > Nacho, > > > > In Kafka protocol, a negative length is null, a zero length means empty > > byte array. > > > > I am still confused about the two stages. It seems that the broker only > > needs to understand three versions of messages. > > 1. MagicValue=0 - no timestamp, absolute offset, no tombstone flag > > 2. MagicValue=1 - with timestamp, relative offsets, no tombstone flag > (null > > value = tombstone) > > 3. MagicValue=2 - with timestamp, relative offsets, tombstone flag > > > > We are talking about two flavors for 3: > > 3.1 tombstone flag set = tombstone (Allows a key with null value in the > > compacted topics) > > 3.2 tombstone flag set OR null value = tombstone ( Do not allow a key > with > > null value in the compacted topics) > > > > No matter which flavor we choose, we just need to stick to that way of > > interpretation, right? Why would we need a second stage? > > > > Jiangjie (Becket) Qin > > > > On Thu, Nov 10, 2016 at 10:37 AM, Ignacio Solis <iso...@igso.net> wrote: > > > > > A quick differentiation I would like to make is null is not the same as > > > size 0. > > > > > > Many times these are made equal, but they're not. When serializing > data, > > > we have to make a choice in null values and many times these are > > translated > > > to zero length blobs. This is not really the same thing. > > > > > > From this perspective, what can Kafka represent and what is considered > a > > > valid value? > > > > > > If the user sends a byte array of length 0, or if the serializer sends > > > something of length 0, this should be a valid value. It is not kafka's > > job > > > to determine what the user is trying to send. For all we know, the user > > has > > > a really good compression serializer that sends 0 bytes when nothing > has > > > changed. > > > > > > If the user is allowed to send null then some behavior should be > defined. > > > However, this should semantically be different than sending a command. > It > > > is possible for a null value could signify some form of delete, like > > > "delete all messages with this key". However, if kafka has a goal to > > write > > > good, readable code, then this should not be allowed. > > > > > > A delete or a purge is a call that can have certain side effects or > > > encounter errors that are unrelated to a send call. > > > > > > A couple of bullets from the Kafka style guide ( > > > http://kafka.apache.org/coding-guide.html ): > > > > > > - Clear code is preferable to comments. When possible make your naming > so > > > good you don't need comments. > > > - Logging, configuration, and public APIs are our "UI". Make them > pretty, > > > consistent, and usable. > > > > > > If you want sendTombstone() functionality make the protocol reflect > that. > > > > > > Right now we're struggling because we did not have a clear separation > of > > > concerns. > > > > > > I don't have a good solution for deployment. I'm in favor of a harsh > > road: > > > - Add the flag/variable/header for tombstone > > > - Add an API for tombstone behavior if needed > > > - Error if somebody tries to API send null > > > - Accept if somebody tries to API send byte[] length 0 > > > - Rev broker version > > > - broker accept flag/variable/header as tombstone > > > - broker accept zero length values as normal messages > > > > > > The more gentle road would be: > > > - Add the flag/variable/header for tombstone > > > - Add an API for tombstone behavior if needed > > > - warn/deprecate/etc if somebody sends null > > > - broker accepts flags/variable/headers and zero length values as > > > tombstones > > > > > > Conversion from one to the other may be possible but I would rather > not > > > have to do it. > > > > > > Nacho > > > > > > > > > On Wed, Nov 9, 2016 at 9:03 PM, radai <radai.rosenbl...@gmail.com> > > wrote: > > > > > > > my personal opinion - a log compacted topic is basically a kv-store, > > so a > > > > map API. > > > > map.put(key, null) is not the same as map.remove(key), which to me > > means > > > a > > > > null value should not represent a delete. a delete should be explicit > > > > (meaning flag). > > > > > > > > > > > > On Wed, Nov 9, 2016 at 11:01 AM, Mayuresh Gharat < > > > > gharatmayures...@gmail.com > > > > > wrote: > > > > > > > > > I see the reasoning and might be inclined to agree a bit : > > > > > If we go to stage 2, the only difference is that we can > theoretically > > > > > support a null value non-tombstone message in a log compacted > topic, > > > but > > > > I > > > > > am not sure if that has any use case. > > > > > > > > > > But as an end goal I see that kafka should clearly specify what it > > > means > > > > by > > > > > a tombstone : is it the attribute flag OR is it the null value. If > we > > > > just > > > > > do stage 1, I don't think we are defining the end-goal completely. > > > > > Again this is more about semantics of correctness of end state. > > > > > > > > > > Thanks, > > > > > > > > > > Mayuresh > > > > > > > > > > On Wed, Nov 9, 2016 at 10:49 AM, Becket Qin <becket....@gmail.com> > > > > wrote: > > > > > > > > > > > I am not sure if we need the second stage. Wouldn't it be enough > to > > > say > > > > > > that a message is a tombstone if one of the following is true? > > > > > > 1. tombstone flag is set. > > > > > > 2. value is null. > > > > > > > > > > > > If we go to stage 2, the only difference is that we can > > theoretically > > > > > > support a null value non-tombstone message in a log compacted > > topic, > > > > but > > > > > I > > > > > > am not sure if that has any use case. > > > > > > > > > > > > Thanks, > > > > > > > > > > > > Jiangjie (Becket) Qin > > > > > > > > > > > > > > > > > > On Wed, Nov 9, 2016 at 9:23 AM, Mayuresh Gharat < > > > > > > gharatmayures...@gmail.com> > > > > > > wrote: > > > > > > > > > > > > > I think it will be a good idea. +1 > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > Mayuresh > > > > > > > > > > > > > > On Wed, Nov 9, 2016 at 9:13 AM, Michael Pearce < > > > > michael.pea...@ig.com> > > > > > > > wrote: > > > > > > > > > > > > > > > +1 Mayuresh, I think this is a good solution/strategy. > > > > > > > > > > > > > > > > Shall we update the KIP with this? Becket/Jun/Joel any > comments > > > to > > > > > add > > > > > > > > before we do? > > > > > > > > > > > > > > > > On 08/11/2016, 17:29, "Mayuresh Gharat" < > > > > gharatmayures...@gmail.com> > > > > > > > > wrote: > > > > > > > > > > > > > > > > I think the migration can be done in 2 stages : > > > > > > > > > > > > > > > > 1) In first stage the broker should understand the > > attribute > > > > flag > > > > > > as > > > > > > > > well > > > > > > > > as Null for the value for log compaction. > > > > > > > > 2) In second stage we move on to supporting only the > > > attribute > > > > > flag > > > > > > > > for log > > > > > > > > compaction. > > > > > > > > > > > > > > > > I agree with Becket that for older clients (consumers) > the > > > > broker > > > > > > > might > > > > > > > > have to down convert a message that has the attribute > flag > > > set > > > > > for > > > > > > > log > > > > > > > > compacting but has a non null value. But this should be > in > > > > first > > > > > > > stage. > > > > > > > > Once all the clients have upgraded (clients start > > recognizing > > > > the > > > > > > > > attribute > > > > > > > > flag), we can move the broker to stage 2. > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > Mayuresh > > > > > > > > > > > > > > > > On Tue, Nov 8, 2016 at 12:06 AM, Michael Pearce < > > > > > > > michael.pea...@ig.com > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > Also we can add further guidance: > > > > > > > > > > > > > > > > > > To avoid the below caveat to organisations by > promoting > > of > > > > > > > > upgrading all > > > > > > > > > consumers first before relying on producing tombstone > > > > messages > > > > > > with > > > > > > > > data > > > > > > > > > > > > > > > > > > Sent using OWA for iPhone > > > > > > > > > ________________________________________ > > > > > > > > > From: Michael Pearce > > > > > > > > > Sent: Tuesday, November 8, 2016 8:03:32 AM > > > > > > > > > To: dev@kafka.apache.org > > > > > > > > > Subject: Re: [DISCUSS] KIP-87 - Add Compaction > Tombstone > > > Flag > > > > > > > > > > > > > > > > > > Thanks Jun on the feedback, I think I understand the > > > > > issue/point > > > > > > > now. > > > > > > > > > > > > > > > > > > We def can add that on older client version if > tombstone > > > > marker > > > > > > > make > > > > > > > > the > > > > > > > > > value null to preserve behaviour. > > > > > > > > > > > > > > > > > > There is one caveats to this: > > > > > > > > > > > > > > > > > > * we have to be clear that data is lost if reading via > > old > > > > > > > > client/message > > > > > > > > > format - I don't think this is a big issue as mostly > the > > > > > idea/use > > > > > > > > case is > > > > > > > > > around meta data transport as such would only be as bad > > as > > > > > > current > > > > > > > > situation > > > > > > > > > > > > > > > > > > Re having configurable broker this was to handle cases > > like > > > > you > > > > > > > > described > > > > > > > > > but in another way by allowing organisation choose the > > > > > behaviour > > > > > > of > > > > > > > > the > > > > > > > > > compaction per broker or per topic so they could manage > > > their > > > > > > > > transition to > > > > > > > > > using tombstone markers. > > > > > > > > > > > > > > > > > > On hind sight it maybe easier to just upgrade and > > downgrade > > > > the > > > > > > > > messages > > > > > > > > > on version as you propose. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sent using OWA for iPhone > > > > > > > > > ________________________________________ > > > > > > > > > From: Jun Rao <j...@confluent.io> > > > > > > > > > Sent: Tuesday, November 8, 2016 12:34:41 AM > > > > > > > > > To: dev@kafka.apache.org > > > > > > > > > Subject: Re: [DISCUSS] KIP-87 - Add Compaction > Tombstone > > > Flag > > > > > > > > > > > > > > > > > > For the use case, one potential use case is for schema > > > > > > > registration. > > > > > > > > For > > > > > > > > > example, in Avro, a null value corresponds to a Null > > > schema. > > > > > So, > > > > > > if > > > > > > > > you > > > > > > > > > want to be able to keep the schema id in a delete > > message, > > > > the > > > > > > > value > > > > > > > > can't > > > > > > > > > be null. We could get around this issue by specializing > > > null > > > > > > value > > > > > > > > during > > > > > > > > > schema registration though. > > > > > > > > > > > > > > > > > > Now for the proposed changes. We probably should > preserve > > > > > client > > > > > > > > > compatibility. If a client application is sending a > null > > > > value > > > > > > to a > > > > > > > > > compacted topic, ideally, it should work the same after > > the > > > > > > client > > > > > > > > > upgrades. > > > > > > > > > > > > > > > > > > I am not sure about making the tombstone marker > > > configurable, > > > > > > > > especially at > > > > > > > > > the topic level. Should we allow users to change the > > config > > > > > > values > > > > > > > > back and > > > > > > > > > forth, and what would be the implication? > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > Jun > > > > > > > > > > > > > > > > > > On Mon, Nov 7, 2016 at 10:48 AM, Becket Qin < > > > > > > becket....@gmail.com> > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > Hi Michael, > > > > > > > > > > > > > > > > > > > > Yes, changing the logic in the log cleaner makes > sense. > > > > There > > > > > > > > could be > > > > > > > > > some > > > > > > > > > > other thing worth thinking (e.g. the message size > > change > > > > > after > > > > > > > > > conversion), > > > > > > > > > > though. > > > > > > > > > > > > > > > > > > > > The scenario I was thinking is the following: > > > > > > > > > > Imagine a distributed caching system built on top of > > > > Kafka. A > > > > > > > user > > > > > > > > is > > > > > > > > > > consuming from a topic and it is guaranteed that if > the > > > > user > > > > > > > > consume to > > > > > > > > > the > > > > > > > > > > log end it will get the latest value for all the > keys. > > > > > > Currently > > > > > > > > if the > > > > > > > > > > consumer sees a null value it knows the key has been > > > > removed. > > > > > > Now > > > > > > > > let's > > > > > > > > > say > > > > > > > > > > we rolled out this change. And the producer applies a > > > > message > > > > > > > with > > > > > > > > the > > > > > > > > > > tombstone flag set, but the value was not null. When > we > > > > > append > > > > > > > that > > > > > > > > > message > > > > > > > > > > to the log I suppose we will not do the down > conversion > > > if > > > > > the > > > > > > > > broker has > > > > > > > > > > set the message.format.version to the latest. Because > > the > > > > log > > > > > > > > cleaner > > > > > > > > > won't > > > > > > > > > > touch the active log segment, so that message will be > > > > sitting > > > > > > in > > > > > > > > the > > > > > > > > > active > > > > > > > > > > segment as is. Now when a consumer that hasn't > upgraded > > > yet > > > > > > > > consumes that > > > > > > > > > > tombstone message in the active segment, it seems > that > > > the > > > > > > broker > > > > > > > > will > > > > > > > > > need > > > > > > > > > > to down convert that message to remove the value, > > right? > > > In > > > > > > this > > > > > > > > case, we > > > > > > > > > > cannot wait for the log cleaner to do the down > > conversion > > > > > > because > > > > > > > > that > > > > > > > > > > message may have already been consumed before the log > > > > > > compaction > > > > > > > > happens. > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > > > Jiangjie (Becket) Qin > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Nov 7, 2016 at 9:59 AM, Michael Pearce < > > > > > > > > michael.pea...@ig.com> > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > Hi Becket, > > > > > > > > > > > > > > > > > > > > > > We were thinking more about having the logic that’s > > in > > > > the > > > > > > > method > > > > > > > > > > > shouldRetainMessage configurable via > > > > > > http://kafka.apache.org/ > > > > > > > > > > > documentation.html#brokerconfigs at a > broker/topic > > > > level. > > > > > > And > > > > > > > > then > > > > > > > > > > scrap > > > > > > > > > > > auto converting the message, and allow > organisations > > to > > > > > > manage > > > > > > > > the > > > > > > > > > > rollout > > > > > > > > > > > of enabling of the feature. > > > > > > > > > > > (this isn’t in documentation but in response to the > > > > > > discussion > > > > > > > > thread > > > > > > > > > as > > > > > > > > > > > an alternative approach to roll out the feature) > > > > > > > > > > > > > > > > > > > > > > Does this make any more sense? > > > > > > > > > > > > > > > > > > > > > > Thanks > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > On 11/3/16, 2:27 PM, "Becket Qin" < > > > becket....@gmail.com> > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > Hi Michael, > > > > > > > > > > > > > > > > > > > > > > Do you mean using a new configuration it is > just > > > the > > > > > > > exiting > > > > > > > > > > > message.format.version config? It seems the > > > > > > > > message.format.version > > > > > > > > > > > config > > > > > > > > > > > is enough in this case. And the default value > > would > > > > > > always > > > > > > > > be the > > > > > > > > > > > latest > > > > > > > > > > > version. > > > > > > > > > > > > > > > > > > > > > > > Message version migration would be handled as > > > like > > > > in > > > > > > > > KIP-32 > > > > > > > > > > > > > > > > > > > > > > Also just want to confirm on this. Today if an > > old > > > > > > consumer > > > > > > > > > consumes > > > > > > > > > > a > > > > > > > > > > > log > > > > > > > > > > > compacted topic and sees an empty value, it > knows > > > > that > > > > > > is a > > > > > > > > > > tombstone. > > > > > > > > > > > After we start to use the attribute bit, a > > > tombstone > > > > > > > message > > > > > > > > can > > > > > > > > > > have a > > > > > > > > > > > non-empty value. So by "like in KIP-32" you > mean > > we > > > > > will > > > > > > > > remove the > > > > > > > > > > > value > > > > > > > > > > > to down convert the message if the consumer > > version > > > > is > > > > > > old, > > > > > > > > right? > > > > > > > > > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > > > > > Jiangjie (Becket) Qin > > > > > > > > > > > > > > > > > > > > > > On Wed, Nov 2, 2016 at 1:37 AM, Michael Pearce > < > > > > > > > > > > michael.pea...@ig.com> > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > Hi Joel , et al. > > > > > > > > > > > > > > > > > > > > > > > > Any comments on the below idea to handle roll > > > out / > > > > > > > > compatibility > > > > > > > > > > of > > > > > > > > > > > this > > > > > > > > > > > > feature, using a configuration? > > > > > > > > > > > > > > > > > > > > > > > > Does it make sense/clear? > > > > > > > > > > > > Does it add value? > > > > > > > > > > > > Do we want to enforce flag by default, or > value > > > by > > > > > > > > default, or > > > > > > > > > > both? > > > > > > > > > > > > > > > > > > > > > > > > Cheers > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 10/27/16, 4:47 PM, "Michael Pearce" < > > > > > > > > michael.pea...@ig.com> > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > Thanks, James, I think this is a really > > good > > > > > > addition > > > > > > > > to the > > > > > > > > > > KIP > > > > > > > > > > > > details, please feel free to amend the > wiki/add > > > the > > > > > use > > > > > > > > cases, > > > > > > > > > also > > > > > > > > > > > if any > > > > > > > > > > > > others you think of. I definitely think its > > > > > worthwhile > > > > > > > > > documenting. > > > > > > > > > > > If you > > > > > > > > > > > > can’t let me know ill add them next week > (just > > > > > leaving > > > > > > > for > > > > > > > > a long > > > > > > > > > > > weekend > > > > > > > > > > > > off) > > > > > > > > > > > > > > > > > > > > > > > > Re Joel and others comments about upgrade > > and > > > > > > > > compatibility. > > > > > > > > > > > > > > > > > > > > > > > > Rather than trying to auto manage this. > > > > > > > > > > > > > > > > > > > > > > > > Actually maybe we make a configuration > > > option, > > > > > both > > > > > > > at > > > > > > > > server > > > > > > > > > > > and per > > > > > > > > > > > > topic level to control the behavior of how > the > > > > server > > > > > > > logic > > > > > > > > > should > > > > > > > > > > > work out > > > > > > > > > > > > if the record, is a tombstone record . > > > > > > > > > > > > > > > > > > > > > > > > e.g. > > > > > > > > > > > > > > > > > > > > > > > > key = compation.tombstone.marker > > > > > > > > > > > > > > > > > > > > > > > > value options: > > > > > > > > > > > > > > > > > > > > > > > > value (continues to use null value as > > > > tombstone > > > > > > > > marker) > > > > > > > > > > > > flag (expects to use the tombstone flag) > > > > > > > > > > > > value_or_flag (if either is true it > treats > > > the > > > > > > record > > > > > > > > as a > > > > > > > > > > > tombstone) > > > > > > > > > > > > > > > > > > > > > > > > This way on upgrade users can keep > current > > > > > > behavior, > > > > > > > > and > > > > > > > > > slowly > > > > > > > > > > > > migrate to the new. Having a transition > period > > of > > > > > using > > > > > > > > > > > value_or_flag, > > > > > > > > > > > > finally having flag only if an organization > > > wishes > > > > to > > > > > > use > > > > > > > > null > > > > > > > > > > values > > > > > > > > > > > > without it being treated as a tombstone > marker > > > (use > > > > > > case > > > > > > > > noted > > > > > > > > > > below) > > > > > > > > > > > > > > > > > > > > > > > > Having it both global broker level and > > topic > > > > > > override > > > > > > > > also > > > > > > > > > > > allows some > > > > > > > > > > > > flexibility here. > > > > > > > > > > > > > > > > > > > > > > > > Cheers > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 10/27/16, 8:03 AM, "James Cheng" < > > > > > > > > wushuja...@gmail.com> > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > This KIP would definitely address a > gap > > > in > > > > > the > > > > > > > > current > > > > > > > > > > > > functionality, where you currently can't > have a > > > > > > tombstone > > > > > > > > with > > > > > > > > > any > > > > > > > > > > > > associated content. > > > > > > > > > > > > > > > > > > > > > > > > That said, I'd like to talk about use > > > > cases, > > > > > to > > > > > > > > make sure > > > > > > > > > > > that > > > > > > > > > > > > this is in fact useful. The KIP should be > > updated > > > > > with > > > > > > > > whatever > > > > > > > > > use > > > > > > > > > > > cases > > > > > > > > > > > > we come up with. > > > > > > > > > > > > > > > > > > > > > > > > First of all, an observation: When we > > > speak > > > > > > about > > > > > > > > log > > > > > > > > > > > compaction, > > > > > > > > > > > > we typically think of "the latest message > for a > > > key > > > > > is > > > > > > > > retained". > > > > > > > > > > In > > > > > > > > > > > that > > > > > > > > > > > > respect, a delete tombstone (i.e. a message > > with > > > a > > > > > null > > > > > > > > payload) > > > > > > > > > is > > > > > > > > > > > treated > > > > > > > > > > > > the same as any other Kafka message: the > latest > > > > > message > > > > > > > is > > > > > > > > > > retained. > > > > > > > > > > > It > > > > > > > > > > > > doesn't matter whether the latest message is > > > null, > > > > or > > > > > > if > > > > > > > > the > > > > > > > > > latest > > > > > > > > > > > message > > > > > > > > > > > > has actual content. In all cases, the last > > > message > > > > is > > > > > > > > retained. > > > > > > > > > > > > > > > > > > > > > > > > The only way a delete tombstone is > > > treated > > > > > > > > differently > > > > > > > > > from > > > > > > > > > > > other > > > > > > > > > > > > Kafka messages is that it automatically > > > disappears > > > > > > after > > > > > > > a > > > > > > > > while. > > > > > > > > > > > The time > > > > > > > > > > > > of deletion is specified using > > > delete.retention.ms > > > > . > > > > > > > > > > > > > > > > > > > > > > > > So what we're really talking about > is, > > do > > > > we > > > > > > want > > > > > > > > to > > > > > > > > > > support > > > > > > > > > > > > messages in a log-compacted topic that > > > auto-delete > > > > > > > > themselves > > > > > > > > > after > > > > > > > > > > > a while? > > > > > > > > > > > > > > > > > > > > > > > > In a thread from 2015, there was a > > > > discussion > > > > > > on > > > > > > > > > > first-class > > > > > > > > > > > > support of headers between Roger Hoover, > Felix > > > GV, > > > > > Jun > > > > > > > > Rao, and > > > > > > > > > I. > > > > > > > > > > > See > > > > > > > > > > > > thread at https://groups.google.com/d/ > > > > > > > > msg/confluent-platform/ > > > > > > > > > > > > 8xPbjyUE_7E/yQ1AeCufL_gJ < > > > > > https://groups.google.com/d/ > > > > > > > > > > > > msg/confluent-platform/ > > 8xPbjyUE_7E/yQ1AeCufL_gJ> > > > . > > > > > In > > > > > > > that > > > > > > > > > thread, > > > > > > > > > > > Jun > > > > > > > > > > > > raised a good question that I didn't have a > > good > > > > > answer > > > > > > > > for at > > > > > > > > > the > > > > > > > > > > > time: If > > > > > > > > > > > > a message is going to auto-delete itself > after > > a > > > > > while, > > > > > > > how > > > > > > > > > > > important was > > > > > > > > > > > > the message? That is, what information did > the > > > > > message > > > > > > > > contain > > > > > > > > > that > > > > > > > > > > > was > > > > > > > > > > > > important *for a while* but not so important > > that > > > > it > > > > > > > > needed to be > > > > > > > > > > > kept > > > > > > > > > > > > around forever? > > > > > > > > > > > > > > > > > > > > > > > > Some use cases that I can think of: > > > > > > > > > > > > > > > > > > > > > > > > 1) Tracability. I would like to know > > who > > > > > issued > > > > > > > > this > > > > > > > > > delete > > > > > > > > > > > > tombstone. It might include the hostname, IP > of > > > the > > > > > > > > producer of > > > > > > > > > the > > > > > > > > > > > delete. > > > > > > > > > > > > 2) Timestamps. I would like to know > > when > > > > this > > > > > > > > delete was > > > > > > > > > > > issued. > > > > > > > > > > > > This use case is already addressed by the > > > > > availability > > > > > > of > > > > > > > > > > per-message > > > > > > > > > > > > timestamps that came in 0.10.0 > > > > > > > > > > > > 3) Data provenance. I hope I'm using > > this > > > > > > phrase > > > > > > > > > correctly, > > > > > > > > > > > but > > > > > > > > > > > > what I mean is, where did this delete come > > from? > > > > What > > > > > > > > processing > > > > > > > > > > job > > > > > > > > > > > > emitted it? What input to the processing job > > > caused > > > > > > this > > > > > > > > delete > > > > > > > > > to > > > > > > > > > > be > > > > > > > > > > > > produced? For example, if a record in topic A > > was > > > > > > > > processed and > > > > > > > > > > > caused a > > > > > > > > > > > > delete tombstone to be emitted to topic B, I > > > might > > > > > like > > > > > > > the > > > > > > > > > offset > > > > > > > > > > > of the > > > > > > > > > > > > topic A message to be attached to the topic B > > > > > message. > > > > > > > > > > > > 4) Distributed tracing for stream > > > > topologies. > > > > > > > This > > > > > > > > might > > > > > > > > > > be a > > > > > > > > > > > > slight repeat of the above use cases. In the > > > > > > > microservices > > > > > > > > world, > > > > > > > > > > we > > > > > > > > > > > can > > > > > > > > > > > > generate call-graphs of webservices using > tools > > > > like > > > > > > > > Zipkin/ > > > > > > > > > > > opentracing.io > > > > > > > > > > > > <http://opentracing.io/>, or something > > homegrown > > > > > like > > > > > > > > > > > > https://engineering.linkedin. > > > > > > > com/distributed-service-call- > > > > > > > > > > > > graph/real-time-distributed- > > > > > > tracing-website-performance- > > > > > > > > > > and-efficiency > > > > > > > > > > > < > > > > > > > > > > > > https://engineering.linkedin. > > > > > > > com/distributed-service-call- > > > > > > > > > > > > graph/real-time-distributed- > > > > > > tracing-website-performance- > > > > > > > > > > > and-efficiency>. > > > > > > > > > > > > I can imagine that you might want to do > > something > > > > > > similar > > > > > > > > for > > > > > > > > > > stream > > > > > > > > > > > > processing topologies, where stream > processing > > > jobs > > > > > > carry > > > > > > > > along > > > > > > > > > and > > > > > > > > > > > forward > > > > > > > > > > > > along a globally unique identifier, and a > > > > distributed > > > > > > > > topology > > > > > > > > > > graph > > > > > > > > > > > is > > > > > > > > > > > > generated. > > > > > > > > > > > > 5) Cases where processing a delete > > > requires > > > > > > data > > > > > > > > that is > > > > > > > > > > not > > > > > > > > > > > > available in the message key. I'm not sure I > > > have a > > > > > > good > > > > > > > > example > > > > > > > > > of > > > > > > > > > > > this, > > > > > > > > > > > > though. One hand-wavy example might be where > I > > am > > > > > > > > publishing > > > > > > > > > > > documents into > > > > > > > > > > > > Kafka where the documentId is the message > key, > > > and > > > > > the > > > > > > > text > > > > > > > > > > contents > > > > > > > > > > > of the > > > > > > > > > > > > document are in the message body. And I have > a > > > > > > consuming > > > > > > > > job that > > > > > > > > > > > does some > > > > > > > > > > > > analytics on the message body. If that > document > > > > gets > > > > > > > > deleted, > > > > > > > > > then > > > > > > > > > > > the > > > > > > > > > > > > consuming job might need the original message > > > body > > > > in > > > > > > > > order to > > > > > > > > > > > "delete" > > > > > > > > > > > > that message's impact from the analytics. But > > I'm > > > > not > > > > > > > sure > > > > > > > > that > > > > > > > > > is > > > > > > > > > > a > > > > > > > > > > > great > > > > > > > > > > > > example. If the consumer was worried about > > that, > > > > the > > > > > > > > consumer > > > > > > > > > would > > > > > > > > > > > > probably keep the original message around, > > stored > > > > by > > > > > > > > primary key. > > > > > > > > > > > And then > > > > > > > > > > > > all it would need from a delete message would > > be > > > > the > > > > > > > > primary key > > > > > > > > > of > > > > > > > > > > > the > > > > > > > > > > > > message. > > > > > > > > > > > > > > > > > > > > > > > > Do people think these are valid use > > > cases? > > > > > > > > > > > > > > > > > > > > > > > > What are other use cases that people > > can > > > > > think > > > > > > > of? > > > > > > > > > > > > > > > > > > > > > > > > -James > > > > > > > > > > > > > > > > > > > > > > > > > On Oct 26, 2016, at 3:46 PM, > Mayuresh > > > > > Gharat > > > > > > < > > > > > > > > > > > > gharatmayures...@gmail.com> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > +1 @Joel. > > > > > > > > > > > > > I think a clear migration plan of > > > > upgrading > > > > > > and > > > > > > > > > > > downgrading of > > > > > > > > > > > > server and > > > > > > > > > > > > > clients along with handling of > issues > > > > that > > > > > > Joel > > > > > > > > > > mentioned, > > > > > > > > > > > on > > > > > > > > > > > > the KIP would > > > > > > > > > > > > > be really great. > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > > > > > > > > > Mayuresh > > > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Oct 26, 2016 at 3:31 PM, > Joel > > > > > Koshy < > > > > > > > > > > > jjkosh...@gmail.com> > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > >> I'm not sure why it would be > useful, > > > but > > > > > it > > > > > > > > should be > > > > > > > > > > > > theoretically > > > > > > > > > > > > >> possible if the attribute bit > alone > > is > > > > > > enough > > > > > > > > to mark > > > > > > > > > a > > > > > > > > > > > > tombstone. OTOH, we > > > > > > > > > > > > >> could consider that as invalid if > we > > > > wish. > > > > > > > > These are > > > > > > > > > > > relevant > > > > > > > > > > > > details that > > > > > > > > > > > > >> I think should be added to the > KIP. > > > > > > > > > > > > >> > > > > > > > > > > > > >> Also, in the few odd scenarios > that > > I > > > > > > > mentioned > > > > > > > > we > > > > > > > > > > should > > > > > > > > > > > also > > > > > > > > > > > > consider > > > > > > > > > > > > >> that fetches could be coming from > > > other > > > > > > > > > > yet-to-be-upgraded > > > > > > > > > > > > brokers in a > > > > > > > > > > > > >> cluster that is being upgraded. So > > we > > > > > would > > > > > > > > probably > > > > > > > > > > want > > > > > > > > > > > to > > > > > > > > > > > > continue to > > > > > > > > > > > > >> support nulls as tombstones or > > > > > down-convert > > > > > > in > > > > > > > > a way > > > > > > > > > > that > > > > > > > > > > > we > > > > > > > > > > > > are sure works > > > > > > > > > > > > >> with least surprise to fetchers. > > > > > > > > > > > > >> > > > > > > > > > > > > >> There is a slightly vague > statement > > > > under > > > > > > > > > > "Compatibility, > > > > > > > > > > > > Deprecation, and > > > > > > > > > > > > >> Migration Plan" that could benefit > > > more > > > > > > > details: > > > > > > > > > *Logic > > > > > > > > > > > would > > > > > > > > > > > > base on > > > > > > > > > > > > >> current behavior of null value or > if > > > > > > tombstone > > > > > > > > flag > > > > > > > > > set > > > > > > > > > > to > > > > > > > > > > > > true, as such > > > > > > > > > > > > >> wouldn't impact any existing flows > > > > simply > > > > > > > allow > > > > > > > > new > > > > > > > > > > > producers > > > > > > > > > > > > to make use > > > > > > > > > > > > >> of the feature*. It is unclear to > me > > > > based > > > > > > on > > > > > > > > that > > > > > > > > > > > whether you > > > > > > > > > > > > would > > > > > > > > > > > > >> interpret null as a tombstone if > the > > > > > > tombstone > > > > > > > > > attribute > > > > > > > > > > > bit is > > > > > > > > > > > > off. > > > > > > > > > > > > >> > > > > > > > > > > > > >> On Wed, Oct 26, 2016 at 3:10 PM, > > > Xavier > > > > > > > Léauté < > > > > > > > > > > > > xav...@confluent.io> > > > > > > > > > > > > >> wrote: > > > > > > > > > > > > >> > > > > > > > > > > > > >>> Does this mean that starting with > > V4 > > > > > > requests > > > > > > > > we > > > > > > > > > would > > > > > > > > > > > allow > > > > > > > > > > > > storing null > > > > > > > > > > > > >>> messages in compacted topics? The > > KIP > > > > > > should > > > > > > > > probably > > > > > > > > > > > clarify > > > > > > > > > > > > the > > > > > > > > > > > > >> behavior > > > > > > > > > > > > >>> for null messages where the > > tombstone > > > > > flag > > > > > > is > > > > > > > > not > > > > > > > > > net. > > > > > > > > > > > > >>> > > > > > > > > > > > > >>> On Wed, Oct 26, 2016 at 1:32 AM > > > Magnus > > > > > > > > Edenhill < > > > > > > > > > > > > mag...@edenhill.se> > > > > > > > > > > > > >>> wrote: > > > > > > > > > > > > >>> > > > > > > > > > > > > >>>> 2016-10-25 21:36 GMT+02:00 Nacho > > > Solis > > > > > > > > > > > > <nso...@linkedin.com.invalid>: > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>>>> I think you probably require a > > > > > MagicByte > > > > > > > > bump if > > > > > > > > > you > > > > > > > > > > > expect > > > > > > > > > > > > correct > > > > > > > > > > > > >>>>> behavior of the system as a > > whole. > > > > > > > > > > > > >>>>> > > > > > > > > > > > > >>>>> From a client perspective you > > want > > > to > > > > > > make > > > > > > > > sure > > > > > > > > > that > > > > > > > > > > > when you > > > > > > > > > > > > >> deliver a > > > > > > > > > > > > >>>>> message that the broker > supports > > > the > > > > > > > feature > > > > > > > > you're > > > > > > > > > > > expecting > > > > > > > > > > > > >>>>> (compaction). So, depending on > > the > > > > > > > behavior > > > > > > > > of the > > > > > > > > > > > broker on > > > > > > > > > > > > >>>> encountering > > > > > > > > > > > > >>>>> a previously undefined bit > flag I > > > > would > > > > > > > > suggest > > > > > > > > > > making > > > > > > > > > > > some > > > > > > > > > > > > change to > > > > > > > > > > > > >>>> make > > > > > > > > > > > > >>>>> certain that flag-based > > compaction > > > is > > > > > > > > supported. > > > > > > > > > I'm > > > > > > > > > > > going > > > > > > > > > > > > to guess > > > > > > > > > > > > >>> that > > > > > > > > > > > > >>>>> the MagicByte would do this. > > > > > > > > > > > > >>>>> > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>>> I dont believe this is needed > > since > > > it > > > > > is > > > > > > > > already > > > > > > > > > > > attributed > > > > > > > > > > > > through > > > > > > > > > > > > >> the > > > > > > > > > > > > >>>> request's API version. > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>>> Producer: > > > > > > > > > > > > >>>> * if a client sends > ProduceRequest > > > V4 > > > > > then > > > > > > > > > > > attributes.bit5 > > > > > > > > > > > > indicates a > > > > > > > > > > > > >>>> tombstone > > > > > > > > > > > > >>>> * if a clients sends > > ProduceRequest > > > > <V4 > > > > > > then > > > > > > > > > > > attributes.bit5 > > > > > > > > > > > > is > > > > > > > > > > > > >> ignored > > > > > > > > > > > > >>>> and value==null indicates a > > > tombstone > > > > > > > > > > > > >>>> * in both cases the on-disk > > messages > > > > are > > > > > > > > stored with > > > > > > > > > > > > attributes.bit5 > > > > > > > > > > > > >> (I > > > > > > > > > > > > >>>> assume?) > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>>> Consumer: > > > > > > > > > > > > >>>> * if a clients sends > FetchRequest > > V4 > > > > > > > messages > > > > > > > > are > > > > > > > > > > > > sendfile():ed > > > > > > > > > > > > >> directly > > > > > > > > > > > > >>>> from disk (with attributes.bit5) > > > > > > > > > > > > >>>> * if a client sends FetchRequest > > <V4 > > > > > > > messages > > > > > > > > are > > > > > > > > > > > slowpathed > > > > > > > > > > > > and > > > > > > > > > > > > >>>> translated from attributes.bit5 > to > > > > > > > value=null > > > > > > > > as > > > > > > > > > > > required. > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>>> That's my understanding anyway, > > > please > > > > > > > > correct me if > > > > > > > > > > I'm > > > > > > > > > > > > wrong. > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>>> /Magnus > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>>>> On Tue, Oct 25, 2016 at 10:17 > AM, > > > > > Magnus > > > > > > > > Edenhill < > > > > > > > > > > > > >> mag...@edenhill.se> > > > > > > > > > > > > >>>>> wrote: > > > > > > > > > > > > >>>>> > > > > > > > > > > > > >>>>>> It is safe to assume that a > > > > previously > > > > > > > > undefined > > > > > > > > > > > attributes > > > > > > > > > > > > bit > > > > > > > > > > > > >> will > > > > > > > > > > > > >>> be > > > > > > > > > > > > >>>>>> unset in protocol requests > from > > > > > existing > > > > > > > > clients, > > > > > > > > > if > > > > > > > > > > > not, > > > > > > > > > > > > such a > > > > > > > > > > > > >>> client > > > > > > > > > > > > >>>>> is > > > > > > > > > > > > >>>>>> already violating the protocol > > and > > > > > needs > > > > > > > to > > > > > > > > be > > > > > > > > > > fixed. > > > > > > > > > > > > >>>>>> > > > > > > > > > > > > >>>>>> So I dont see a need for a > > > MagicByte > > > > > > bump, > > > > > > > > both > > > > > > > > > > > broker and > > > > > > > > > > > > client > > > > > > > > > > > > >> has > > > > > > > > > > > > >>>> the > > > > > > > > > > > > >>>>>> information it needs to > > construct > > > or > > > > > > parse > > > > > > > > the > > > > > > > > > > message > > > > > > > > > > > > according to > > > > > > > > > > > > >>>>> request > > > > > > > > > > > > >>>>>> version. > > > > > > > > > > > > >>>>>> > > > > > > > > > > > > >>>>>> > > > > > > > > > > > > >>>>>> 2016-10-25 18:48 GMT+02:00 > > Michael > > > > > > Pearce > > > > > > > < > > > > > > > > > > > > michael.pea...@ig.com>: > > > > > > > > > > > > >>>>>> > > > > > > > > > > > > >>>>>>> Hi Magnus, > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> I was wondering if I even > > needed > > > to > > > > > > > change > > > > > > > > those > > > > > > > > > > > also, as > > > > > > > > > > > > >>> technically > > > > > > > > > > > > >>>>>>> we’re just making use of a > non > > > used > > > > > > > > attribute > > > > > > > > > bit, > > > > > > > > > > > but im > > > > > > > > > > > > not > > > > > > > > > > > > >> 100% > > > > > > > > > > > > >>>> that > > > > > > > > > > > > >>>>>> it > > > > > > > > > > > > >>>>>>> be always false currently. > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> If someone can say 100% it > will > > > > > already > > > > > > > be > > > > > > > > set > > > > > > > > > > false > > > > > > > > > > > with > > > > > > > > > > > > current > > > > > > > > > > > > >>> and > > > > > > > > > > > > >>>>>>> historic bit wise masking > > > > techniques > > > > > > used > > > > > > > > over > > > > > > > > > the > > > > > > > > > > > time, > > > > > > > > > > > > we could > > > > > > > > > > > > >>> do > > > > > > > > > > > > >>>>> away > > > > > > > > > > > > >>>>>>> with both, and simply just > > start > > > to > > > > > use > > > > > > > it. > > > > > > > > > > > Unfortunately > > > > > > > > > > > > I don’t > > > > > > > > > > > > >>>> have > > > > > > > > > > > > >>>>>> that > > > > > > > > > > > > >>>>>>> historic knowledge so was > > hoping > > > it > > > > > > would > > > > > > > > be > > > > > > > > > > flagged > > > > > > > > > > > up in > > > > > > > > > > > > this > > > > > > > > > > > > >>>>>> discussion > > > > > > > > > > > > >>>>>>> thread ? > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> Cheers > > > > > > > > > > > > >>>>>>> Mike > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> On 10/25/16, 5:36 PM, "Magnus > > > > > > Edenhill" < > > > > > > > > > > > > mag...@edenhill.se> > > > > > > > > > > > > >>> wrote: > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> Hi Michael, > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> With the version bumps for > > > > Produce > > > > > > and > > > > > > > > Fetch > > > > > > > > > > > requests, > > > > > > > > > > > > do you > > > > > > > > > > > > >>>>> really > > > > > > > > > > > > >>>>>>> need > > > > > > > > > > > > >>>>>>> to bump MagicByte too? > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> Regards, > > > > > > > > > > > > >>>>>>> Magnus > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> 2016-10-25 18:09 GMT+02:00 > > > > Michael > > > > > > > > Pearce < > > > > > > > > > > > > >>> michael.pea...@ig.com > > > > > > > > > > > > >>>>> : > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>>> Hi All, > > > > > > > > > > > > >>>>>>>> > > > > > > > > > > > > >>>>>>>> I would like to discuss the > > > > > following > > > > > > > KIP > > > > > > > > > > proposal: > > > > > > > > > > > > >>>>>>>> https://cwiki.apache.org/ > > > > > > > > > > > confluence/display/KAFKA/KIP- > > > > > > > > > > > > >>>>>>>> > 87+-+Add+Compaction+Tombstone+ > > > > Flag > > > > > > > > > > > > >>>>>>>> > > > > > > > > > > > > >>>>>>>> This is off the back of the > > > > > discussion > > > > > > > on > > > > > > > > KIP-82 > > > > > > > > > > / > > > > > > > > > > > KIP > > > > > > > > > > > > >>> meeting > > > > > > > > > > > > >>>>>>> where it > > > > > > > > > > > > >>>>>>>> was agreed to separate this > > > issue > > > > > and > > > > > > > > feature. > > > > > > > > > > See: > > > > > > > > > > > > >>>>>>>> http://mail-archives.apache > . > > > > > > > > > > > org/mod_mbox/kafka-dev/201610 > > > > > > > > > > > > . > > > > > > > > > > > > >>>>>>>> mbox/%3cCAJS3ho8OcR== > > > > > > > > EcxsJ8OP99pD2hz=iiGecWsv- > > > > > > > > > > > > >>>>>>>> EZsBsNyDcKr= > g...@mail.gmail.com% > > 3e > > > > > > > > > > > > >>>>>>>> > > > > > > > > > > > > >>>>>>>> Thanks > > > > > > > > > > > > >>>>>>>> Mike > > > > > > > > > > > > >>>>>>>> > > > > > > > > > > > > >>>>>>>> The information contained in > > > this > > > > > > email > > > > > > > is > > > > > > > > > > strictly > > > > > > > > > > > > >>>> confidential > > > > > > > > > > > > >>>>>> and > > > > > > > > > > > > >>>>>>> for > > > > > > > > > > > > >>>>>>>> the use of the addressee > only, > > > > > unless > > > > > > > > otherwise > > > > > > > > > > > indicated. > > > > > > > > > > > > >> If > > > > > > > > > > > > >>>> you > > > > > > > > > > > > >>>>>>> are not > > > > > > > > > > > > >>>>>>>> the intended recipient, > please > > > do > > > > > not > > > > > > > > read, > > > > > > > > > copy, > > > > > > > > > > > use or > > > > > > > > > > > > >>>> disclose > > > > > > > > > > > > >>>>>> to > > > > > > > > > > > > >>>>>>> others > > > > > > > > > > > > >>>>>>>> this message or any > > attachment. > > > > > Please > > > > > > > > also > > > > > > > > > notify > > > > > > > > > > > the > > > > > > > > > > > > >> sender > > > > > > > > > > > > >>>> by > > > > > > > > > > > > >>>>>>> replying > > > > > > > > > > > > >>>>>>>> to this email or by > telephone > > > > > (+44(020 > > > > > > > > 7896 > > > > > > > > > 0011) > > > > > > > > > > > and then > > > > > > > > > > > > >>>> delete > > > > > > > > > > > > >>>>>>> the email > > > > > > > > > > > > >>>>>>>> and any copies of it. > > Opinions, > > > > > > > > conclusion (etc) > > > > > > > > > > > that do > > > > > > > > > > > > >> not > > > > > > > > > > > > >>>>> relate > > > > > > > > > > > > >>>>>>> to the > > > > > > > > > > > > >>>>>>>> official business of this > > > company > > > > > > shall > > > > > > > be > > > > > > > > > > > understood as > > > > > > > > > > > > >>>> neither > > > > > > > > > > > > >>>>>>> given nor > > > > > > > > > > > > >>>>>>>> endorsed by it. IG is a > > trading > > > > name > > > > > > of > > > > > > > IG > > > > > > > > > Markets > > > > > > > > > > > Limited > > > > > > > > > > > > >> (a > > > > > > > > > > > > >>>>>> company > > > > > > > > > > > > >>>>>>>> registered in England and > > Wales, > > > > > > company > > > > > > > > number > > > > > > > > > > > 04008957) > > > > > > > > > > > > >> and > > > > > > > > > > > > >>>> IG > > > > > > > > > > > > >>>>>>> Index > > > > > > > > > > > > >>>>>>>> Limited (a company > registered > > in > > > > > > England > > > > > > > > and > > > > > > > > > > Wales, > > > > > > > > > > > > company > > > > > > > > > > > > >>>>> number > > > > > > > > > > > > >>>>>>>> 01190902). Registered > address > > at > > > > > > Cannon > > > > > > > > Bridge > > > > > > > > > > > House, 25 > > > > > > > > > > > > >>>> Dowgate > > > > > > > > > > > > >>>>>>> Hill, > > > > > > > > > > > > >>>>>>>> London EC4R 2YA. Both IG > > Markets > > > > > > Limited > > > > > > > > > (register > > > > > > > > > > > number > > > > > > > > > > > > >>>> 195355) > > > > > > > > > > > > >>>>>>> and IG > > > > > > > > > > > > >>>>>>>> Index Limited (register > number > > > > > 114059) > > > > > > > are > > > > > > > > > > > authorised and > > > > > > > > > > > > >>>>> regulated > > > > > > > > > > > > >>>>>>> by the > > > > > > > > > > > > >>>>>>>> Financial Conduct Authority. > > > > > > > > > > > > >>>>>>>> > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>>> The information contained in > > this > > > > > email > > > > > > > is > > > > > > > > > strictly > > > > > > > > > > > > confidential > > > > > > > > > > > > >>> and > > > > > > > > > > > > >>>>> for > > > > > > > > > > > > >>>>>>> the use of the addressee > only, > > > > unless > > > > > > > > otherwise > > > > > > > > > > > indicated. > > > > > > > > > > > > If you > > > > > > > > > > > > >>> are > > > > > > > > > > > > >>>>> not > > > > > > > > > > > > >>>>>>> the intended recipient, > please > > do > > > > not > > > > > > > > read, copy, > > > > > > > > > > > use or > > > > > > > > > > > > disclose > > > > > > > > > > > > >>> to > > > > > > > > > > > > >>>>>> others > > > > > > > > > > > > >>>>>>> this message or any > attachment. > > > > > Please > > > > > > > also > > > > > > > > > notify > > > > > > > > > > > the > > > > > > > > > > > > sender by > > > > > > > > > > > > >>>>> replying > > > > > > > > > > > > >>>>>>> to this email or by telephone > > > > > (+44(020 > > > > > > > > 7896 0011) > > > > > > > > > > > and then > > > > > > > > > > > > delete > > > > > > > > > > > > >>> the > > > > > > > > > > > > >>>>>> email > > > > > > > > > > > > >>>>>>> and any copies of it. > Opinions, > > > > > > > conclusion > > > > > > > > (etc) > > > > > > > > > > > that do > > > > > > > > > > > > not > > > > > > > > > > > > >> relate > > > > > > > > > > > > >>>> to > > > > > > > > > > > > >>>>>> the > > > > > > > > > > > > >>>>>>> official business of this > > company > > > > > shall > > > > > > > be > > > > > > > > > > > understood as > > > > > > > > > > > > neither > > > > > > > > > > > > >>>> given > > > > > > > > > > > > >>>>>> nor > > > > > > > > > > > > >>>>>>> endorsed by it. IG is a > trading > > > > name > > > > > of > > > > > > > IG > > > > > > > > > Markets > > > > > > > > > > > Limited > > > > > > > > > > > > (a > > > > > > > > > > > > >>> company > > > > > > > > > > > > >>>>>>> registered in England and > > Wales, > > > > > > company > > > > > > > > number > > > > > > > > > > > 04008957) > > > > > > > > > > > > and IG > > > > > > > > > > > > >>>> Index > > > > > > > > > > > > >>>>>>> Limited (a company registered > > in > > > > > > England > > > > > > > > and > > > > > > > > > Wales, > > > > > > > > > > > company > > > > > > > > > > > > >> number > > > > > > > > > > > > >>>>>>> 01190902). Registered address > > at > > > > > Cannon > > > > > > > > Bridge > > > > > > > > > > > House, 25 > > > > > > > > > > > > Dowgate > > > > > > > > > > > > >>>> Hill, > > > > > > > > > > > > >>>>>>> London EC4R 2YA. Both IG > > Markets > > > > > > Limited > > > > > > > > > (register > > > > > > > > > > > number > > > > > > > > > > > > 195355) > > > > > > > > > > > > >>> and > > > > > > > > > > > > >>>>> IG > > > > > > > > > > > > >>>>>>> Index Limited (register > number > > > > > 114059) > > > > > > > are > > > > > > > > > > > authorised and > > > > > > > > > > > > >> regulated > > > > > > > > > > > > >>>> by > > > > > > > > > > > > >>>>>> the > > > > > > > > > > > > >>>>>>> Financial Conduct Authority. > > > > > > > > > > > > >>>>>>> > > > > > > > > > > > > >>>>>> > > > > > > > > > > > > >>>>> > > > > > > > > > > > > >>>>> > > > > > > > > > > > > >>>>> > > > > > > > > > > > > >>>>> -- > > > > > > > > > > > > >>>>> Nacho (Ignacio) Solis > > > > > > > > > > > > >>>>> Kafka > > > > > > > > > > > > >>>>> nso...@linkedin.com > > > > > > > > > > > > >>>>> > > > > > > > > > > > > >>>> > > > > > > > > > > > > >>> > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > -Regards, > > > > > > > > > > > > > Mayuresh R. Gharat > > > > > > > > > > > > > (862) 250-7125 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 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. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > -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 > > > > > > > > > > > > > > > > > > > > > -- > > > Nacho - Ignacio Solis - iso...@igso.net > > > > > > > > > -- > -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