[
https://issues.apache.org/jira/browse/CASSANDRA-5353?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Evans updated CASSANDRA-5353:
----------------------------------
Description:
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.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.
was:
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.
> 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
> Labels: cql3, native_protocol
>
> 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.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