I would be interested to be the RM for 2.1 :) 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 > > > > > >