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

Please review and comment!

On Wed, Jan 22, 2020 at 12:41 PM István Tóth <st...@cloudera.com> wrote:

> 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 can be converted to selecting
> the compatibility layer implementation at runtime, and have a single
> artifact.
>
> On Wed, Jan 15, 2020 at 6:22 PM Andrew Purtell <andrew.purt...@gmail.com>
> wrote:
>
>> 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 <zghao...@gmail.com> wrote:
>> >
>> > 
>> >>
>> >>
>> >> 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 logic
>> to
>> >> the parent POM that chooses the right one. Then for each implicated
>> file,
>> >> move it into the version specific maven modules, duplicating as
>> needed, and
>> >> finally fixing up where needed.
>> >>
>> > +1. So we want to use one branch to handle all hbase branches? But we
>> still
>> > need to release multi src/bin tar for multi hbase versions?
>> >
>> > Andrew Purtell <andrew.purt...@gmail.com> 于2020年1月15日周三 上午10:55写道:
>> >
>> >> 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 method bodies can be factored into a class that groups together
>> static
>> >> helper methods which come to contain this common logic. The common
>> class
>> >> can remain in the core module. Then all you have in the version
>> specific
>> >> modules is scaffolding. In that scaffolding, calls to the static
>> methods in
>> >> core. It’s not a clever refactor but is DRY. Over time this can be made
>> >> cleaner case by case where the naive transformation has a distasteful
>> >> result.
>> >>
>> >>
>> >>> On Jan 14, 2020, at 6:40 PM, Andrew Purtell <andrew.purt...@gmail.com
>> >
>> >> wrote:
>> >>>
>> >>
>>
>
>
> --
> *István Tóth* | Sr. Software Engineer
> t. (36) 70 283-1788
> st...@cloudera.com <https://www.cloudera.com>
> [image: Cloudera] <https://www.cloudera.com/>
> [image: Cloudera on Twitter] <https://twitter.com/cloudera> [image:
> Cloudera on Facebook] <https://www.facebook.com/cloudera> [image:
> Cloudera on LinkedIn] <https://www.linkedin.com/company/cloudera>
> <https://www.cloudera.com/>
> ------------------------------
>

Reply via email to