Cassandra的EmbeddedCassandraService抛出InvalidRequestException:unconfigured table schema_keyspaces

时间:2017-07-24 19:59:44

标签: java cassandra datastax-java-driver cassandra-3.0

我们的应用程序使用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应该在每次启动时从头开始创建系统表(并且不应该有任何架构,好吧,迁移)。有没有人对可能导致这个问题的原因有任何见解?

1 个答案:

答案 0 :(得分:1)

问题实际上是EmbeddedCassandraService正在启动两次。