Today I started updating the version of Liquibase we build against. We had been building
off of a fork that had my changes that were needed to move forward with Cassandra. Those
changes had recently been merged in upstream. RHQ itself does not have a direct dependency
on those changes. The Liquibase extensions that add support for Cassandra require those
changes. Those extension live at
https://github.com/jsanda/cassandra-liquibase-ext. Since
the Liquibase changes are not yet in a released version, we have to build Liquibase from
source. Once I updated the scripts to build from upstream, I was no longer able to build
cassandra-liquibase-ext. I started getting a number of compiler errors. I spent a good
deal of time this afternoon trying to reconcile the changes. Some classes that we were
using and even extending have been completely removed from the Liquibase core. I posted a
question about it on the Liquibase developer forum. There has yet to be a response.
Taking everything into consideration, I think it is time to cut our losses with Liquibase
and pursue another option. It is unsettling at best that classes and APIs that are
intended to be used for extending Liquibase have been completely removed, and I
haven't been able to find so much as a mention of it in the git history, let alone a
note on the developer forum. Aside from that, we are using the Cassandra JDBC driver in
cassandra-liquibase-ext. As best I can tell, the driver project has been abandoned. There
haven't been any commits since November. If we continue down the Liquibase path, then
we pretty much have to assume ownership of the JDBC driver. The driver is far from fully
implemented, and it was implemented using Thrift APIs. Everywhere else we are using the
DataStax driver which is actively maintained and already had a larger community than the
JDBC driver had. The DataStax driver is not a JDBC driver, but it makes a lot more sense
to be using it. It is worth noting that the Liquibase/Cassandra JDBC driver proof of
concept was already done before the DataStax driver was even announced. If the DataStax
driver was available when I started this work, we might have gone down a different path
from the get go.
For the short term (next couple days), I am going to take out the Liquibase stuff, and
implement minimal support for installing the Cassandra schema so we are not blocked on
this any longer than we have to. Going forward we can figure out the long term solution.
- John