我们的应用程序使用EmbeddedCassandraService进行单元测试。我们正在使用Cassandra 3.11和Datastax 3.3.0中的Java驱动程序。
EmbeddedCassandraService cassandraService = new EmbeddedCassandraService();
cassandraService.start();
测试我们的域类时,我们能够完美地使用嵌入式cassandra。但是,将其与我们的API测试(具有不同的依赖性集)一起使用时,会引发以下异常:
Caused by: org.apache.cassandra.exceptions.InvalidRequestException: unconfigured table schema_keyspaces
at org.apache.cassandra.thrift.ThriftValidation.validateColumnFamily(ThriftValidation.java:115)
at org.apache.cassandra.cql3.statements.SelectStatement$RawStatement.prepare(SelectStatement.java:920)
at org.apache.cassandra.cql3.statements.SelectStatement$RawStatement.prepare(SelectStatement.java:915)
at org.apache.cassandra.cql3.QueryProcessor.getStatement(QueryProcessor.java:557)
at org.apache.cassandra.cql3.QueryProcessor.parseStatement(QueryProcessor.java:253)
at org.apache.cassandra.cql3.QueryProcessor.executeOnceInternal(QueryProcessor.java:354)
at org.apache.cassandra.schema.LegacySchemaMigrator.query(LegacySchemaMigrator.java:1044)
at org.apache.cassandra.schema.LegacySchemaMigrator.readSchema(LegacySchemaMigrator.java:173)
at org.apache.cassandra.schema.LegacySchemaMigrator.migrate(LegacySchemaMigrator.java:77)
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:256)
at org.apache.cassandra.service.CassandraDaemon.init(CassandraDaemon.java:503)
at org.apache.cassandra.service.EmbeddedCassandraService.start(EmbeddedCassandraService.java:51)
at com.company.project.schema.cassandra.config.EmbeddedCassandraConfiguration.session(EmbeddedCassandraConfiguration.java:24)
我们不确定为什么一个模块可以工作,而另一个模块不能工作,因为cassandra依赖项是相同的。此外,两个模块都不依赖spring-data-cassandra,并且两个模块都使用datastax's 3.3.0 driver。我对为什么在LegacySchemaMigrator中发生此问题感到困惑,因为此EmbeddedCassandraService每次启动时都应从头开始创建系统表(并且不应有任何架构可以迁移)。是否有人对导致此问题的原因有任何见解?
最佳答案
问题实际上是EmbeddedCassandraService被启动了两次。