Note: This is a re-start of a thread by Villo, which most people probably
haven't seen, because Gmail has flagged it as spam.

Hi,

Omid still uses Protobuf 2.5 for its internal communications with the TSO,
which we obviously want to fix.

The problem is that protobuf has become much like Guava, and protoc
compiled code is incompatible with the protobuf java versions across major
versions (i.e. protobuf 3/4/5).

There is also the problem of shaded protobuf breaking some Netty protobuf
classes, but those can probably be just copied into Omid.

We could in theory keep using unshaded protobuf, but then we would be super
likely to conflict with a lot of libraries which do the same thing, without
shading protobuf, so I don't think that's a good solution.

We could use hbase's thirdparty-protobuf, but then we are tied to the the
hbase thirdparty protobuf's major version, which can change without notice
(as it's an Hbase implementation detail (though I suspect there may be
problems with custom HBase endpoints)

We could add our own thirdparty protobuf to phoenix-thirdparty, which would
only be used for Phoenix.

We could create a separate Omid thirdparty repo, and put protobuf there.

Or we could somehow shade protobuf into the appropriate Omid JAR.

I am leaning towards adding a thirdparty protobuf to Phoenix-thirdparty, as
that doesn't require setting up a new repo, while avoiding another uberjar
in the ecosystem.

Last time I checked, creating and using pre-shaded jars in the same maven
repo was not possible.

WDYT ?

best regards
Istvan

Reply via email to