Opened  PHOENIX-7504 to track this.

On Tue, Nov 5, 2024 at 6:18 AM Istvan Toth <st...@apache.org> wrote:

> Hi!
>
> The issue of slf4j 1.x vs 2.x compatibility has recently come up on
> Avatica.
>
> While 1.x and 2.x are compatible as far as the logging API is concerned,
> they are incompatible on the backend / adapter side.
>
> Traditionally, the (discontinued) hbase-client uberjar has shipped both
> slf4j, the adapter, and the logging backend.
>
> With hbase-embedded-client, we've removed the adapter and the backend from
> the uberjar, but we kept slf4j-api in it.
>
> The lesser problem is that we may effectively replace the application's
> slf4-api 1.x library with ours, which may be older and buggier.
>
> The bigger problem is that we are locking users to slf4j1.x, as having
> both slf4j 1.x and 2.x libraries on the classpath does not work reliably.
> See https://www.slf4j.org/faq.html#changesInVersion200 for details.
>
> The solution is very simple, we simply need to provide an uberjar which
> does not include slf4j-api.
>
> We can do it in one of two ways, neither is ideal:
>
> - Add a new uberjar, which is the same as an existing one (say,
> hbase-client-lite), but does not include the slf4j API. The problem with
> this is that even the "lite' uberjar is 140MB, and we already build three
> of them, each taking ~10 minutes to build, so this would bloat our
> assembly, and build times.
>
> - Change one of the existing uberjars, preferably phoenix-client-lite, and
> remove slf4j-api from it.
> This would be an incompatible change, but we avoid bloating the assembly
> and the build time.
> I feel that phoenix-client-lite is new enough (and few enough people
> know that it even exists) that this probably won't break a lot of existing
> use cases, (also the fix is as easy as adding slfj4-api to the classpath).
>
> I'm leaning towards the second option.
>
> WDYT ?
>
>

Reply via email to