On Tue, Mar 13, 2018 at 6:30 PM, 张铎(Duo Zhang) <palomino...@gmail.com> wrote:
> I would be interested to be the RM for 2.1 :) > > I could help. S > Stack <st...@duboce.net>于2018年3月14日 周三02:48写道: > > > I took a look. Its great. Our replication is in bad need of loving. The > > patch does a refactor/revamp/fix of an internal facility putting our peer > > management up on a Pv2 basis. It also moves forward the long-rumored > > distributed procedure project. > > > > Its a big change though. Would have been great to have it make 2.0.0 but > it > > didn't. I'd be up for it in a minor release rather than wait on 3.0.0 > given > > we allow ourselves some leeway adding facility on minors and that it is > at > > core a solidifying fix. Needs to be doc'd and tested, verified on a > deploy > > beyond unit test. I could help test. Is it proven compatible with > existing > > replication deploys? > > > > Who's the 3.0.0 RM? When is it going to roll? Having this in place is > best > > argument if folks propose back-ports. Without, we are doomed to repeat > the > > 2.0.0 experience. > > > > Thanks, > > St.Ack > > > > > > > > On Tue, Mar 13, 2018 at 3:44 AM, 张铎(Duo Zhang) <palomino...@gmail.com> > > wrote: > > > > > I've already merged it to branch-2... > > > > > > And for the procedure based replication peer modification, the feature > > has > > > been finished, at least no critical TODOs. I will not say it has no > bugs > > > but I do not think it will block the 2.1 or 3.0 release too much. > > > > > > And please trust my judgement, I'm not a man who only want to show off. > > For > > > example I just reverted the serial replication feature from branch-2 > > before > > > we release beta2 and tried to redo it on master because we found some > > > critical problems. And since the basic idea has not been changed so we > > > decided to do it on master because it will not spend too much time to > > > finish. And for HBASE-19064 it is a big feature so we decided to do it > > on a > > > feature branch. We will select the branches which we want to merge back > > at > > > the time we finish the feature. > > > > > > For the CP cleanup, I think the problem is we started too late, and in > > the > > > past we made mistakes and let the related projects inject too much into > > the > > > internal of HBase. And for B&R, it is something like the serial > > replication > > > feature. For serial replication feature is that we tested it and found > > some > > > critical problems, and for B&R it was not well tested(IIRC) so we were > > > afraid of there will be critical problems. And for the AMv2, I think > the > > > problem is premature optimization. We even implemented our own AvlTree, > > and > > > also a very complicated scheduler which always makes us dead lock... > > > > > > These are all very good cases for software engineering in the real > > world... > > > Should be avoided in the future... That's also my duty... > > > > > > Thanks. > > > > > > 2018-03-13 17:50 GMT+08:00 Apekshit Sharma <a...@cloudera.com>: > > > > > > > I thought the problem with releasing 2.0 was that there were too many > > > open > > > > features dragging along not coming to finish- AMv2 (biggest one), CP > > > > cleanup, B&R, etc. > > > > If it was not the case, it wouldn't have been 1 year between first > > alpha > > > > and GA, rather just few months. > > > > > > > > That said, i don't mind new but hardened features which are already > > ready > > > > to ship (implementation only or not) going in minor version, but > that's > > > my > > > > personal opinion. But going too aggressive on that can indeed lead to > > the > > > > trap Josh mentioned above. > > > > > > > > For this particular change, my +1 was based on following aspects: > > > > - it's internal > > > > - moving ops procv2 framework (gives failure recovery, locking, etc) > > > > - Duo's reasoning - "....the synchronous guarantee is really a good > > thing > > > > for our replication related UTs..." and "For the replication peer > > > tracking, > > > > it is the same problem. It is hard to do fencing with zk watcher > since > > it > > > > is asynchronous, so the UTs are always kind of flakey in > theoretical." > > > > > > > > That said, it's pending review. > > > > @Duo: As you know it's not possible to spend cycles on it right now - > > > > pending 2.0GA - can you please hold it off for few weeks (ideally, > > until > > > GA > > > > + 2-3 weeks) which will give community (whoever interested, at least > > > > me..smile) a decent change to review it. > > > > Thanks > > > > > > > > -- Appy > > > > > > > > > > > > On Tue, Mar 13, 2018 at 1:02 AM, Josh Elser <els...@apache.org> > wrote: > > > > > > > > > (Sorry for something other than just a vote) > > > > > > > > > > I worry seeing a "big" feature branch merge as us falling back into > > the > > > > > 1.x trap. Starting to backport features into 2.x will keep us > > delaying > > > > 3.0 > > > > > as we have less and less incentive to push to release 3.0 in a > timely > > > > > manner. > > > > > > > > > > That said, I also don't want my worries to bar a feature which > > appears > > > to > > > > > be related to implementation only (based on one high-level read of > > the > > > > > changes). Perhaps we need to re-think what is allowable for a Y > > release > > > > in > > > > > x.y.z... > > > > > > > > > > +1 for master (which already happened, maybe?) > > > > > +0 for branch-2 (simply because I haven't looked closely enough at > > > > > changes, can read through and try to change to +1 if you need the > > > votes) > > > > > > > > > > > > > > > On 3/9/18 2:41 AM, 张铎(Duo Zhang) wrote: > > > > > > > > > >> Since branch-2.0 has been cut and branch-2 is now 2.1.0-SNAPSHOT, > > will > > > > >> merge branch HBASE-19397-branch-2 back to branch-2. > > > > >> > > > > >> 2018-01-10 9:20 GMT+08:00 张铎(Duo Zhang) <palomino...@gmail.com>: > > > > >> > > > > >> If branch-2.0 will be out soon then let's target this to 2.1. No > > > > problem. > > > > >>> > > > > >>> Thanks. > > > > >>> > > > > >>> 2018-01-10 1:28 GMT+08:00 Stack <st...@duboce.net>: > > > > >>> > > > > >>> On Mon, Jan 8, 2018 at 8:19 PM, 张铎(Duo Zhang) < > > palomino...@gmail.com > > > > > > > > >>>> wrote: > > > > >>>> > > > > >>>> OK, let me merge it master first. And then create a > > > > HBASE-19397-branch-2 > > > > >>>>> which will keep rebasing with the newest branch-2 to see if it > is > > > > >>>>> stable > > > > >>>>> enough. Since we can define this as a bug fix/refactoring > rather > > > > than a > > > > >>>>> > > > > >>>> big > > > > >>>> > > > > >>>>> new feature, it is OK to integrate it at any time. If we think > it > > > is > > > > >>>>> > > > > >>>> stable > > > > >>>> > > > > >>>>> enough before cutting branch-2.0 then we can include it in the > > > 2.0.0 > > > > >>>>> release, else let's include it in 2.1(Maybe we can backport it > to > > > 2.0 > > > > >>>>> later?). > > > > >>>>> > > > > >>>>> > > > > >>>>> > > > > >>>> I need to cut the Appy-suggested branch-2.0. Shout if > > > > >>>> HBASE-19397-branch-2 > > > > >>>> gets to be too much work and I'll do it sooner rather than > later. > > > Or, > > > > if > > > > >>>> easier on you, just say and I'll make the branch-2.0 now so you > > can > > > > just > > > > >>>> commit to branch-2 (branch-2.0 will become hbase2.0, branch-2 > will > > > > >>>> become > > > > >>>> hbase2.1...). > > > > >>>> > > > > >>>> St.Ack > > > > >>>> > > > > >>>> > > > > >>>> > > > > >>>> > > > > >>>> Thanks all here. > > > > >>>>> > > > > >>>>> 2018-01-09 12:06 GMT+08:00 ashish singhi < > > ashish.sin...@huawei.com > > > >: > > > > >>>>> > > > > >>>>> +1 to merge on master and 2.1. > > > > >>>>>> Great work. > > > > >>>>>> > > > > >>>>>> Thanks, > > > > >>>>>> Ashish > > > > >>>>>> > > > > >>>>>> -----Original Message----- > > > > >>>>>> From: 张铎(Duo Zhang) [mailto:palomino...@gmail.com] > > > > >>>>>> Sent: Tuesday, January 09, 2018 6:53 AM > > > > >>>>>> To: dev@hbase.apache.org > > > > >>>>>> Subject: Re: [VOTE] Merge branch HBASE-19397 back to master > and > > > > >>>>>> > > > > >>>>> branch-2. > > > > >>>> > > > > >>>>> > > > > >>>>>> Anyway, if no objections on merging this into master, let's do > > it? > > > > So > > > > >>>>>> > > > > >>>>> that > > > > >>>>> > > > > >>>>>> we can start working on the follow-on features, such as table > > > based > > > > >>>>>> replication storage, and synchronous replication, etc. > > > > >>>>>> > > > > >>>>>> Thanks. > > > > >>>>>> > > > > >>>>>> 2018-01-09 7:19 GMT+08:00 Stack <st...@duboce.net>: > > > > >>>>>> > > > > >>>>>> On Mon, Jan 8, 2018 at 2:50 PM, 张铎(Duo Zhang) < > > > > >>>>>>> > > > > >>>>>> palomino...@gmail.com> > > > > >>>> > > > > >>>>> wrote: > > > > >>>>>>> > > > > >>>>>>> This 'new' feature only changes DDL part, not the core part > of > > > > >>>>>>>> > > > > >>>>>>> replication, > > > > >>>>>>> > > > > >>>>>>>> i.e, how to read wal entries and how to replicate it to the > > > remote > > > > >>>>>>>> > > > > >>>>>>> cluster, > > > > >>>>>>> > > > > >>>>>>>> etc. And also there is no pb message/storage layout change, > > you > > > > >>>>>>>> > > > > >>>>>>> can > > > > >>>> > > > > >>>>> think of this as a big refactoring. Theoretically we even do > not > > > > >>>>>>>> need to add > > > > >>>>>>>> > > > > >>>>>>> new > > > > >>>>>>> > > > > >>>>>>>> UTs for this feature, i.e, no extra stability works. The > only > > > > >>>>>>>> visible change to users is that it may require more time on > > > > >>>>>>>> modifying peers in shell. So in general I think it is less > > hurt > > > to > > > > >>>>>>>> include it in the coming release? > > > > >>>>>>>> > > > > >>>>>>>> And why I think it SHOULD be included in our 2.0 release is > > > that, > > > > >>>>>>>> the synchronous guarantee is really a good thing for our > > > > >>>>>>>> > > > > >>>>>>> replication > > > > >>>> > > > > >>>>> related UTs. The correctness of the current Test***Replication > > > > >>>>>>>> usually depends > > > > >>>>>>>> > > > > >>>>>>> on a > > > > >>>>>>> > > > > >>>>>>>> flakey condition - we will not do a log rolling between the > > > > >>>>>>>> modification > > > > >>>>>>>> > > > > >>>>>>> on > > > > >>>>>>> > > > > >>>>>>>> zk and the actual loading of the modification on RS. And we > > have > > > > >>>>>>>> also > > > > >>>>>>>> > > > > >>>>>>> done > > > > >>>>>>> > > > > >>>>>>>> a hard work to cleanup the lockings in > > ReplicationSourceManager > > > > >>>>>>>> > > > > >>>>>>> and > > > > >>>> > > > > >>>>> add a fat comment to say why it should be synchronized in this > > > > >>>>>>>> > > > > >>>>>>> way. > > > > >>>> > > > > >>>>> In general, the new code is much easier to read, test and > debug, > > > > >>>>>>>> > > > > >>>>>>> and > > > > >>>> > > > > >>>>> also reduce the possibility of flakeyness, which could help us > a > > > > >>>>>>>> > > > > >>>>>>> lot > > > > >>>> > > > > >>>>> when we start to stabilize our build. > > > > >>>>>>>> > > > > >>>>>>>> Thanks. > > > > >>>>>>>> > > > > >>>>>>>> > > > > >>>>>>>> You see it as a big bug fix Duo? > > > > >>>>>>> > > > > >>>>>>> Kind of. Just like the AM v1, we can do lots of fix to make > it > > > more > > > > >>>>>> stable, but we know that we can not fix all the problems since > > we > > > > >>>>>> > > > > >>>>> store > > > > >>>> > > > > >>>>> state in several places and it is a 'mission impossible' to > make > > > all > > > > >>>>>> > > > > >>>>> the > > > > >>>> > > > > >>>>> states stay in sync under every situation... So we introduce AM > > v2. > > > > >>>>>> For the replication peer tracking, it is the same problem. It > is > > > > hard > > > > >>>>>> > > > > >>>>> to > > > > >>>> > > > > >>>>> do fencing with zk watcher since it is asynchronous, so the UTs > > are > > > > >>>>>> > > > > >>>>> always > > > > >>>>> > > > > >>>>>> kind of flakey in theoretical. And we depend on replication > > > heavily > > > > at > > > > >>>>>> Xiaomi, it is always a pain for us. > > > > >>>>>> > > > > >>>>>> > > > > >>>>>>> I'm late to review. Will have a look after beta-1 goes out. > > This > > > > >>>>>>> > > > > >>>>>> stuff > > > > >>>> > > > > >>>>> looks great from outside, especially distributed procedure > > > framework > > > > >>>>>>> which we need all over the place. > > > > >>>>>>> > > > > >>>>>>> In general I have no problem w/ this in master and an hbase > 2.1 > > > > (2.1 > > > > >>>>>>> could be soon after 2.0). Its late for big stuff in 2.0.... > but > > > let > > > > >>>>>>> > > > > >>>>>> me > > > > >>>> > > > > >>>>> take a looksee sir. > > > > >>>>>>> > > > > >>>>>>> Thanks sir. All the concerns here about whether we should > merge > > > > this > > > > >>>>>> > > > > >>>>> into > > > > >>>> > > > > >>>>> 2.0 are reasonable, I know. Although I really want this in 2.0 > > > > >>>>>> > > > > >>>>> because I > > > > >>>> > > > > >>>>> believe it will help a lot for stabilizing, I'm OK with merge > it > > > to > > > > >>>>>> > > > > >>>>> 2.1 > > > > >>>> > > > > >>>>> only if you guys all think so. > > > > >>>>>> > > > > >>>>>> > > > > >>>>>>> St.Ack > > > > >>>>>>> > > > > >>>>>>> > > > > >>>>>>> > > > > >>>>>>> > > > > >>>>>>> > > > > >>>>>>> 2018-01-09 4:53 GMT+08:00 Apekshit Sharma <a...@cloudera.com > >: > > > > >>>>>>>> > > > > >>>>>>>> Same questions as Josh's. > > > > >>>>>>>>> 1) We have RCs for beta1 now, which means only commits that > > can > > > > >>>>>>>>> > > > > >>>>>>>> go > > > > >>>> > > > > >>>>> in > > > > >>>>>>>>> > > > > >>>>>>>> are > > > > >>>>>>> > > > > >>>>>>>> bug fixes only. This change - although important, needed > from > > > > >>>>>>>>> > > > > >>>>>>>> long > > > > >>>> > > > > >>>>> time > > > > >>>>>>>>> > > > > >>>>>>>> and > > > > >>>>>>>> > > > > >>>>>>>>> well done (testing, summary, etc) - seems rather very large > > to > > > > >>>>>>>>> > > > > >>>>>>>> get > > > > >>>> > > > > >>>>> into > > > > >>>>>>>>> > > > > >>>>>>>> 2.0 > > > > >>>>>>>> > > > > >>>>>>>>> now. Needs good justification why it has to be 2.1 instead > of > > > > >>>>>>>>> > > > > >>>>>>>> 2.0. > > > > >>>> > > > > >>>>> > > > > >>>>>>>>> -- Appy > > > > >>>>>>>>> > > > > >>>>>>>>> > > > > >>>>>>>>> On Mon, Jan 8, 2018 at 8:34 AM, Josh Elser < > > els...@apache.org> > > > > >>>>>>>>> > > > > >>>>>>>> wrote: > > > > >>>>>> > > > > >>>>>>> > > > > >>>>>>>>> -0 From a general project planning point-of-view (not based > > on > > > > >>>>>>>>>> the technical merit of the code) I am uncomfortable about > > > > >>>>>>>>>> pulling in a > > > > >>>>>>>>>> > > > > >>>>>>>>> brand > > > > >>>>>>>> > > > > >>>>>>>>> new feature after we've already made one beta RC. > > > > >>>>>>>>>> > > > > >>>>>>>>>> Duo -- can you expand on why this feature is so important > > that > > > > >>>>>>>>>> we > > > > >>>>>>>>>> > > > > >>>>>>>>> should > > > > >>>>>>>> > > > > >>>>>>>>> break our release plan? Are there problems that would make > > > > >>>>>>>>>> including > > > > >>>>>>>>>> > > > > >>>>>>>>> this > > > > >>>>>>>> > > > > >>>>>>>>> in a 2.1/3.0 unnecessarily difficult? Any kind of color you > > > > >>>>>>>>>> > > > > >>>>>>>>> can > > > > >>>> > > > > >>>>> provide > > > > >>>>>>> > > > > >>>>>>>> on > > > > >>>>>>>>> > > > > >>>>>>>>>> "why does this need to go into 2.0?" would be helpful. > > > > >>>>>>>>>> > > > > >>>>>>>>>> > > > > >>>>>>>>>> On 1/6/18 1:54 AM, Duo Zhang wrote: > > > > >>>>>>>>>> > > > > >>>>>>>>>> https://issues.apache.org/jira/browse/HBASE-19397 > > > > >>>>>>>>>>> > > > > >>>>>>>>>>> We aim to move the peer modification framework from zk > > > > >>>>>>>>>>> > > > > >>>>>>>>>> watcher > > > > >>>> > > > > >>>>> to procedure > > > > >>>>>>>>>>> v2 in this issue and the work is done now. > > > > >>>>>>>>>>> > > > > >>>>>>>>>>> Copy the release note here: > > > > >>>>>>>>>>> > > > > >>>>>>>>>>> Introduce 5 procedures to do peer modifications: > > > > >>>>>>>>>>> > > > > >>>>>>>>>>> AddPeerProcedure > > > > >>>>>>>>>>>> RemovePeerProcedure > > > > >>>>>>>>>>>> UpdatePeerConfigProcedure > > > > >>>>>>>>>>>> EnablePeerProcedure > > > > >>>>>>>>>>>> DisablePeerProcedure > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>>> The procedures are all executed with the following > stage: > > > > >>>>>>>>>>>> 1. Call pre CP hook, if an exception is thrown then give > > up > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> 2. > > > > >>>> > > > > >>>>> Check whether the operation is valid, if not then give up 3. > > > > >>>>>>>>>>>> Update peer storage. Notice that if we have entered this > > > > >>>>>>>>>>>> stage, > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> then > > > > >>>>>>>> > > > > >>>>>>>>> we > > > > >>>>>>>>>>>> can not rollback any more. > > > > >>>>>>>>>>>> 4. Schedule sub procedures to refresh the peer config on > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> every > > > > >>>> > > > > >>>>> RS. > > > > >>>>>> > > > > >>>>>>> 5. Do post cleanup if any. > > > > >>>>>>>>>>>> 6. Call post CP hook. The exception thrown will be > ignored > > > > >>>>>>>>>>>> since we > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> have > > > > >>>>>>>>> > > > > >>>>>>>>>> already done the work. > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>>> The procedure will hold an exclusive lock on the peer > id, > > so > > > > >>>>>>>>>>>> now > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> there > > > > >>>>>>>> > > > > >>>>>>>>> is > > > > >>>>>>>>> > > > > >>>>>>>>>> no concurrent modifications on a single peer. > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>>> And now it is guaranteed that once the procedure is > done, > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> the > > > > >>>> > > > > >>>>> peer modification has already taken effect on all RSes. > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>>> Abstracte a storage layer for replication peer/queue > > > > >>>>>>>>>>>> manangement, > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> and > > > > >>>>>>> > > > > >>>>>>>> refactored the upper layer to remove zk related > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> naming/code/comment. > > > > >>>>>>> > > > > >>>>>>>> > > > > >>>>>>>>>>>> Add pre/postExecuteProcedures CP hooks to > > > > >>>>>>>>>>>> RegionServerObserver, and > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> add > > > > >>>>>>>> > > > > >>>>>>>>> permission check for executeProcedures method which > requires > > > > >>>>>>>>>>>> the > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> caller > > > > >>>>>>>> > > > > >>>>>>>>> to > > > > >>>>>>>>>>>> be system user or super user. > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>>> On rolling upgrade: just do not do any replication peer > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> modifications > > > > >>>>>>> > > > > >>>>>>>> during the rolling upgrading. There is no pb/layout changes > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>> on > > > > >>>> > > > > >>>>> the peer/queue storage on zk. > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>>> > > > > >>>>>>>>>>>> And there are other benefits. > > > > >>>>>>>>>>> First, we have introduced a general procedure framework > to > > > > >>>>>>>>>>> > > > > >>>>>>>>>> send > > > > >>>> > > > > >>>>> tasks > > > > >>>>>>> > > > > >>>>>>>> to > > > > >>>>>>>> > > > > >>>>>>>>> RS > > > > >>>>>>>>>>> and report the report back to Master. It can be used to > > > > >>>>>>>>>>> implement > > > > >>>>>>>>>>> > > > > >>>>>>>>>> other > > > > >>>>>>>> > > > > >>>>>>>>> operations such as ACL change. > > > > >>>>>>>>>>> Second, zk is used as a external storage now since we do > > not > > > > >>>>>>>>>>> depend > > > > >>>>>>>>>>> > > > > >>>>>>>>>> on > > > > >>>>>>> > > > > >>>>>>>> zk > > > > >>>>>>>>> > > > > >>>>>>>>>> watcher any more, it will be much easier to implement a > > > > >>>>>>>>>>> > > > > >>>>>>>>>> 'table > > > > >>>> > > > > >>>>> based' > > > > >>>>>>> > > > > >>>>>>>> replication peer/queue storage. > > > > >>>>>>>>>>> > > > > >>>>>>>>>>> Please vote: > > > > >>>>>>>>>>> [+1] Agree > > > > >>>>>>>>>>> [-1] Disagree > > > > >>>>>>>>>>> [0] Neutral > > > > >>>>>>>>>>> > > > > >>>>>>>>>>> Thanks. > > > > >>>>>>>>>>> > > > > >>>>>>>>>>> > > > > >>>>>>>>>>> > > > > >>>>>>>>> > > > > >>>>>>>>> -- > > > > >>>>>>>>> > > > > >>>>>>>>> -- Appy > > > > >>>>>>>>> > > > > >>>>>>>>> > > > > >>>>>>>> > > > > >>>>>>> > > > > >>>>>> > > > > >>>>> > > > > >>>> > > > > >>> > > > > >>> > > > > >> > > > > > > > > > > > > -- > > > > > > > > -- Appy > > > > > > > > > >