Re: Moving Phoenix master to Hbase 2.2

2020-02-04 Thread Josh Elser
Thanks for sending out the reminder, Istvan! Those interested: please take a look ASAP or give a shout for more time to review. On it's current trajectory, I think the PR will be in a place to merge tomorrow (2020/02/05, US times). On 1/30/20 2:49 PM, Istvan Toth wrote: I have received a

Re: Moving Phoenix master to Hbase 2.2

2020-01-30 Thread Istvan Toth
I have received a ton of invaluable feedback from Josh, and some good questions from Guanghao Zhang. I am at the point where I am polishing the whitespaces and preparing to update the documentation. It would be great to hear some reviews from the SFDC side as well. (even/especially if it is "this

Re: Moving Phoenix master to Hbase 2.2

2020-01-23 Thread Istvan Toth
I have updated https://github.com/apache/phoenix/pull/687 I consider this version mostly finished. (Still only for HBase 2.x) I have abandoned the idea of a runtime compatibility solution, as the all-important shaded thick client would become unmanageable with two different HBase client

Re: Moving Phoenix master to Hbase 2.2

2020-01-22 Thread István Tóth
Hi! In case not everyone on thread watches the ticket, I have put up a POC PR for the build-time compatibility module solution. It is for master/HBase 2.x. I did not investigate how well this approach would fit incorporating HBase 1.x compatibility. I also plan to investigate how easily this

Re: Moving Phoenix master to Hbase 2.2

2020-01-15 Thread Andrew Purtell
I suppose so, but release building is scripted. The build script can iterate over a set of desired HBase version targets and drive the build by setting parameters on the maven command line. > On Jan 15, 2020, at 2:01 AM, Guanghao Zhang wrote: > >  >> >> >> Anyway let’s assume for now you

Re: Moving Phoenix master to Hbase 2.2

2020-01-15 Thread Guanghao Zhang
> > Anyway let’s assume for now you want to unify all the branches for HBase > 1.x. Start with the lowest HBase version you want to support. Then iterate > up to the highest HBase version you want to support. Whenever you run into > compile problems, make a new version specific maven module, add

Re: Moving Phoenix master to Hbase 2.2

2020-01-14 Thread Andrew Purtell
Take PhoenixAccessController as an example. Over time the HBase interfaces change in minor ways. You’ll need different compilation units for this class to be able to compile it across a wide range of 1.x. However the essential Phoenix functionality does not change. The logic that makes up the

Re: Moving Phoenix master to Hbase 2.2

2020-01-14 Thread Andrew Purtell
It’s not necessary to abstract the HBase interfaces into a compatibility layer, at least not to start. At each bump from one minor release to another a fix up typically touches a handful of files. The jump from 1.x to 2.x is a bigger deal but maybe there should still be separate branches for

Re: Moving Phoenix master to Hbase 2.2

2020-01-14 Thread Josh Elser
Still not having looked at what Tephra does -- I'm intrigued by what Istvan has in-progress. Waiting to see what he comes up with would be my suggestion :) On 1/14/20 1:12 PM, la...@apache.org wrote: Does somebody volunteer to take this up? I can see whether I can a resource where I work,

Re: Moving Phoenix master to Hbase 2.2

2020-01-14 Thread la...@apache.org
Does somebody volunteer to take this up? I can see whether I can a resource where I work, but it's highly uncertain. It would need a bit of digging and design work to see how we would abstract the HBase interface in the most effective way. As mentioned below, Tephra did a good job at this and

Re: Moving Phoenix master to Hbase 2.2

2020-01-14 Thread István Tóth
Yes, the HBase API signatures change between versions, so we need to compile each compat module against a specific HBase. Whether I can define an internal compatibility API that is switchable at run (startup) time without a performance hit remains to be seen. István On Tue, Jan 14, 2020 at 3:21

Re: Moving Phoenix master to Hbase 2.2

2020-01-13 Thread Josh Elser
Agree that trying to wrangle branches is just too frustrating and error-prone. It would also be great if we could have a single Phoenix jar that works across HBase versions, but would not die on that hill :) On 12/20/19 5:04 AM, la...@apache.org wrote: I said _provided_ they can be

Re: Moving Phoenix master to Hbase 2.2

2020-01-13 Thread Josh Elser
A solution sounds great! Thanks for working on that. By compile-time, I assume that means, unless we get lucky with compatible bytecode, we'd have to have a Phoenix which is compiled against a specific HBase version? On 1/13/20 2:25 AM, István Tóth wrote: Hi! (Sorry for not replying

Re: Moving Phoenix master to Hbase 2.2

2020-01-12 Thread István Tóth
Hi! (Sorry for not replying earlier, I'll need to revisit my mail filters) I do have a half-baked patch with the lightweight isolation in modules case. In its current form it's more ugly than complex, but some ugliness is a small price to pay for not having to maintain multiple branches. (And

Re: Moving Phoenix master to Hbase 2.2

2019-12-20 Thread la...@apache.org
Yep that. For the record... I do not think this is simple. But it is possible. On Thursday, December 19, 2019, 8:37:37 PM GMT+1, Andrew Purtell wrote: I can't answer for Lars but whenever version incompatibilities come up usually only a handful of files are impacted. In the last

Re: Moving Phoenix master to Hbase 2.2

2019-12-20 Thread la...@apache.org
I said _provided_ they can be isolated easily :) (I meant it in the sense of assuming it's easy). As I said though, Tephra has a similar problem and they did a really good job isolating HBase versions. We can learn from them. Sometimes they isolate the change only, and sometimes the class

Re: Moving Phoenix master to Hbase 2.2

2019-12-19 Thread Andrew Purtell
I can't answer for Lars but whenever version incompatibilities come up usually only a handful of files are impacted. In the last round, the Phoenix access controller, a related file in the same directory, and the RPC scheduler. If you cloned these into separate version specific maven modules case

Re: Moving Phoenix master to Hbase 2.2

2019-12-19 Thread Geoffrey Jacoby
Lars, I'm curious why you say the differences are easily isolated -- many of the core classes of Phoenix either directly inherit HBase classes or implement HBase interfaces, and those can vary between minor versions. (See my above example of a new coprocessor hook on BaseRegionObserver.)

Re: Moving Phoenix master to Hbase 2.2

2019-12-19 Thread Andrew Purtell
I've done a fair amount of porting Phoenix among HBase versions. There are a couple of ways to pull out differences. If you take the rather heavyweight approach HBase does where there's a factory for compatibility glue, and a facade for the essential functions, and then instantiations of that

Re: Moving Phoenix master to Hbase 2.2

2019-12-19 Thread la...@apache.org
Yep. The differences are pretty minimal - provided they can be isolated easily. Tephra might be a pretty good model. It supports various versions of HBase in a single branch and has similar issues as Phoenix (coprocessors, etc). -- Lars On Thursday, December 19, 2019, 7:07:51 PM GMT+1, Josh

Re: Moving Phoenix master to Hbase 2.2

2019-12-19 Thread Josh Elser
To clarify, you think that compat modules are better than that separate-branches model in 4.x? On 12/18/19 11:29 AM, la...@apache.org wrote: This is really hard to follow. I think we should do the same with HBase dependencies in Phoenix that HBase does with Hadoop dependencies. That is:  We

Re: Moving Phoenix master to Hbase 2.2

2019-12-18 Thread la...@apache.org
This is really hard to follow. I think we should do the same with HBase dependencies in Phoenix that HBase does with Hadoop dependencies. That is:  We could have a maven module with the specific HBase version dependent code. Btw. Tephra does the same... A module for HBase version specific

Re: Moving Phoenix master to Hbase 2.2

2019-12-17 Thread Istvan Toth
What do you think about tying the minor releases to Hbase minor releases (not necessarily one-to-one) for example (provided 5.1 is 2020H1) 5.0.0 -> HB 2.0 5.1.0 -> HB 2.2.2 (and whatever 2.1 is API compatible with it) 5.1.x -> HB 2.2.x (treat as maintenance branch, no major new features) 5.2.0

Re: Moving Phoenix master to Hbase 2.2

2019-12-12 Thread Geoffrey Jacoby
Since HBase 2.0 is EOM'ed, I'm +1 for not worrying about 2.0.x compatibility with the 5.x branch going forward. Given how coupled Phoenix is to the implementation details of HBase though, I'm not sure trying to abstract those away to keep one Phoenix branch per HBase major version is practical,

Re: Moving Phoenix master to Hbase 2.2

2019-12-12 Thread Josh Elser
As much as possible, I'd like to avoid us getting into another situation with 5.x where we have multiple branches. My hope was/is that we can keep one Phoenix5 branch that works against an acceptable set of HBase branches. To me, that acceptable set of HBase branches is _a_ 2.1 and 2.2

Moving Phoenix master to Hbase 2.2

2019-12-11 Thread Istvan Toth
Hi! I'd like to start a conversation about supporting HBase 2.2. in the master branch. https://issues.apache.org/jira/browse/PHOENIX-5268 has a slightly out of date, but functional PR for HBase 2.2 support on master. (Please review and comment if you have the time, I'll try to update the PR in