Eric Evans created CASSANDRA-5353: ------------------------------------- Summary: abstract for client/driver reuse Key: CASSANDRA-5353 URL: https://issues.apache.org/jira/browse/CASSANDRA-5353 Project: Cassandra Issue Type: Bug Components: API, Core, Drivers Affects Versions: 1.2.2 Reporter: Eric Evans
The native transport CQL driver ["Java Driver"|https://github.com/datastax/java-driver] has a maven pom which declares a dependency on the {{cassandra-all}} artifact (aka Everything). This is Bad because Cassandra makes use of many common libraries, making conflicts with client applications inevitable. Some of [java-driver|https://github.com/datastax/java-driver]'s uses can be avoided, I think. For example, it seems to use the {{AbstractType}} extending classes in {{org.apache.cassandra.db.marshal}} instead of the classes included in the {{cassandra-clientutil}} artifact ({{org.apache.cassandra.cql.jdbc}}). I will file a separate Github issue for that. The rest of its usage looks something like the following: * org.apache.cassandra.db.marshal.* * org.apache.cassandra.exceptions.* * org.apache.cassandra.transport.Message; * org.apache.cassandra.transport.messages.ErrorMessage * org.apache.cassandra.transport.messages.ExecuteMessage * org.apache.cassandra.transport.messages.PrepareMessage * org.apache.cassandra.transport.messages.QueryMessage * org.apache.cassandra.transport.messages.ResultMessage * org.apache.cassandra.service.ClientState * org.apache.cassandra.transport.* ?? * org.apache.cassandra.transport.ConsistencyLevel ?? * org.apache.cassandra.transport.Event ?? * org.apache.cassandra.cql3.ColumnSpecification * org.apache.cassandra.utils.MD5Digest Ostensibly the solution would be to move what's needed into clientutil jar, but this will likely require significantly more. For example, grepping imports on the {{o.a.c.transport}} package yields the following: * org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor * org.apache.cassandra.concurrent.NamedThreadFactory * org.apache.cassandra.config.DatabaseDescriptor * org.apache.cassandra.config.EncryptionOptions * org.apache.cassandra.cql3.ColumnSpecification * org.apache.cassandra.cql3.CQLStatement * org.apache.cassandra.cql3.QueryProcessor * org.apache.cassandra.cql3.ResultSet * org.apache.cassandra.db.ConsistencyLevel * org.apache.cassandra.db.marshal.* * org.apache.cassandra.db.marshal.Int32Type * org.apache.cassandra.db.marshal.TypeParser * org.apache.cassandra.db.marshal.UTF8Type * org.apache.cassandra.db.WriteType * org.apache.cassandra.exceptions.* * org.apache.cassandra.exceptions.AuthenticationException * org.apache.cassandra.exceptions.ExceptionCode * org.apache.cassandra.exceptions.InvalidRequestException * org.apache.cassandra.exceptions.PreparedQueryNotFoundException * org.apache.cassandra.exceptions.RequestValidationException * org.apache.cassandra.exceptions.TransportException * org.apache.cassandra.security.SSLFactory * org.apache.cassandra.service.CassandraDaemon * org.apache.cassandra.service.ClientState * org.apache.cassandra.service.IEndpointLifecycleSubscriber * org.apache.cassandra.service.IMigrationListener * org.apache.cassandra.service.MigrationManager * org.apache.cassandra.service.QueryState * org.apache.cassandra.service.StorageService * org.apache.cassandra.tracing.Tracing * org.apache.cassandra.utils.FBUtilities * org.apache.cassandra.utils.MD5Digest * org.apache.cassandra.utils.Pair * org.apache.cassandra.utils.SemanticVersion And it's probably much worse once transitive dependencies are taken into account. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira