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