One more question: do generated jars (phoenix-client and phoenix-server)
follow the same naming conventions after this change? Perhaps this is
already answered somewhere, I hope I can take a thorough look at the Jira
discussions and the change soon :)


Thanks,
Viraj


On Tue, Dec 12, 2023 at 8:59 PM Viraj Jasani <vjas...@apache.org> wrote:

> Thank you for starting this thread Istvan!
>
> This is really nice change and I can see how porting to 5.1 could be
> beneficial as well as disastrous for a maintenance release. One question:
> how confident are we from backward compatibility viewpoint? specifically
> 5.1 client against current master branch based server.
>
> IMHO, we should keep this for major/minor release only. It would also
> enforce us to create 2 PRs going forward (one for master/5.2 and another
> for 5.1) but this is still better in case something gets broken in the
> future. Fixing it on maintenance release would also be nightmare.
>
> This is really good improvement. I also wonder what should be our path
> forward beyond 5.1. Shall we still stick to 5.2.0 or move to 6.0.0?
>
> master branch is becoming extremely heavy day by day with many features
> still being lined up for merging very soon. Json support is almost ready I
> believe. We have data integrity issues and many behavioural changes that
> are non-compatible (but necessary to implement heavy feature like ViewTTL)
> in the queue. Many committed features like Partial Index, Uncovered Index,
> MasterRegistry compatible JDBC connection etc are ready for rollout as soon
> as we cut release branch from master. It does seem quite a massive list for
> a minor release, but this is just my opinion. I am not against 5.2.0
> release, would be open for more opinions.
>
> Thanks,
> Viraj
>
>
> On Mon, Dec 11, 2023 at 11:31 PM Istvan Toth <st...@apache.org> wrote:
>
>> Hi!
>>
>> First of all, a heads up that I have merged the Client-Server code
>> separation (PHOENIX-6053) patch a few minutes ago.
>>
>> A huge thanks to Aron for turning my two years old POC patch into a
>> merge-ready patch, and handling all the change requests and numerous
>> rebases.
>>
>> The patch has been discussed on the ticket
>> <https://issues.apache.org/jira/browse/PHOENIX-6053>
>> and in the 2021
>> <https://lists.apache.org/thread/hs4klbc04n4gh62z17pznc0rkspjg6jx> and
>> the
>> recent
>> <
>> https://lists.apache.org/list?dev@phoenix.apache.org:2023-10:PHOENIX-6053
>> >
>> email threads.
>>
>>
>> *A very quick recap:*
>> *phoenix-core* has been split into two modules* phoenix-core-client* and
>> *phoenix-core-server*.
>> *Phoenix-core-server* depends on* phoenix-core-client*, as we more or less
>> need the full client code on the server side.
>> phoenix-core includes all the code needed the JDBC driver, but does not
>> include anything that is used exclusively on the server side
>> (coprocessors,
>> split policies, etc)
>>
>> *phoenix-core* is still around, it retains all the tests (as the majority
>> of them ), and it also acts as a compatibility dependency, which
>> transitively depends on both client and server.
>>
>>
>> *Backporting to 5.1:*
>> We need to make a decision on whether to backport this change into 5.1 or
>> not.
>>
>> Against:
>>
>>    - It is a huge patch by file count
>>    - maven module structure changes
>>
>> For:
>>
>>    - Backports to 5.1 will be a *nightmare* if we don't backport this
>> change
>>    - The actual code changes are minimal, and the behavioural changes
>>    should be non-existent.
>>    - Dependency compatibility should be handled by the phoenix-core
>> package
>>    - Users get the advantages without having to wait for 5.2.
>>
>> We have three options:
>>
>>    - Backport to 5.1.4
>>    - Backport post 5.1.4
>>    - Do not backport
>>
>>
>> *I really need to hear your take on this.*
>>
>> *Next steps:*
>> This change in itself does little apart from cleaning up the code, but it
>> enables a number of important new features (these were originally planned
>> to be included in PHOENIX-6053, but I decided to split them to separate
>> tickets to keep the scope manageable):
>>
>>
>>    - PHOENIX-7137 <https://issues.apache.org/jira/browse/PHOENIX-7137>
>>    Create *phoenix-client-lite* shaded JAR without server-side
>> dependencies
>>       - This adds a new shaded client variant, *phoenix-client-lite
>> *(names
>>       are up for discussion), which omits the server-side code and its
>>       dependencies. It is ~20 MB smaller, and pollutes the classpath less.
>>    - PHOENIX-7139 <https://issues.apache.org/jira/browse/PHOENIX-7139>
>>    Create *phoenix-mapreduce-byo-shaded-hbase* artifact for use by
>>    connectors
>>       - This allows using the hbase-shaded-client and phoenix on the same
>>       classpath. Up until now, you had to do that by using the
>> phoenix-core
>>       dependency from Maven, or by using the HBase libraries shaded into
>>       phoenix-client.
>>       The current phoenix-client will fail hard with any other Hbase
>>       libraries on the classpath due to relocation conflicts.
>>       - Allows updating the hbase client code without rebuilding Phoenix
>>       - Solves the protobuf 2.5.0 woes, which make it impossible to use
>>       code/libraries using unshaded protobuf 3.0 together with
>> Phoenix. This was,
>>       and remains the original driver behind PHOENIX-6053.
>>       - Allows using Hadoop extensions with Phoenix. Being able to use the
>>       various cloud connectors like AWS S3a without shading hundreds
>> of megabytes
>>       of additional code into phoenix-client was another driver for this
>> change.
>>       - This is the same shading setup already used by the shaded Hive and
>>       Spark connector artifacts.
>>    - Create a phoenix-client-byo-shaded-hbase which would be the same as
>>    *phoenix-mapreduce-byo-shaded-hbase*, but omit the phoenix server-side
>>    code.
>>       - I'm on the fence about this. phoenix-mapreduce-byo-shaded-hbase
>>       should be usable for this purpose. The server-side phoenix code
>> is not that
>>       big, and *phoenix-mapreduce-byo-shaded-hbase *already omits any
>>       server-side dependencies which could cause conflicts.
>>       - Will need to run to see if this is needed / useful.
>>
>

Reply via email to