Background: IstvanT has done a lot of really great work to clean up the HBase 2.x compatibility issues for us. This lets us move away from the HBase-version-tagged releases of Phoenix (e.g. HBase-1.3, HBase-1.4, etc), and keep a single branch which can build all of these.

Building master locally, I noticed the following in my tarball, specifically the jars

<snip>
phoenix-5.1.0-SNAPSHOT-hbase-2.2-client.jar -> phoenix-client-5.1.0-SNAPSHOT-hbase-2.2.jar
  phoenix-5.1.0-SNAPSHOT-hbase-2.2-server.jar
  phoenix-5.1.0-SNAPSHOT-server.jar
  phoenix-client-5.1.0-SNAPSHOT-hbase-2.2.jar
</snip>

I think there are two things happening here. One is that the phoenix-5.1.0-SNAPSHOT-server.jar is "empty" -- it's not the shaded server jar, but the hbase-2.2-server.jar is the correct jar. I think this is just a bug (you agree, Istvan?)

The other thing I notice is that it feels like Istvan was try to simplify some things via symlinks. My feeling was that we could take this a step further. What if, instead of just having "hbase-x.y" named jars, we give symlinked jars as well. Creating something like...

<snip>
phoenix-5.1.0-SNAPSHOT-client.jar -> phoenix-client-5.1.0-SNAPSHOT-hbase-2.2-client.jar
  phoenix-client-5.1.0-SNAPSHOT-hbase-2.2-client.jar
phoenix-5.1.0-SNAPSHOT-server.jar -> phoenix-server-5.1.0-SNAPSHOT-hbase-2.2-server.jar
  phoenix-server-5.1.0-SNAPSHOT-hbase-2.2-server.jar
</snip>

This would make downstream applications/users a little more simple -- not having to worry about the HBase version in use (since their concerns are what version of Phoenix is being used, instead). We could even introduce non-Phoenix-versioned symlinks for these jars (e.g. phoenix-client.jar and phoenix-server.jar). I think this also moves us a little closer to what we used to have.

Sounds like a good idea to others?

Reply via email to