2017-07-24 24 views
1

我们的应用程序使用EmbeddedCassandraService进行单元测试。我们使用Cassandra 3.11和Datastax 3.3.0的java驱动程序。Cassandra的EmbeddedCassandraService抛出InvalidRequestException:未配置的表schema_keyspaces

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) 

我们不知道为什么一个模块的作品,但其他的不一样的卡桑德拉依赖关系相同。另外,两个模块都不使用spring-data-cassandra,两个模块都使用datastax's 3.3.0 driver。我很困惑为什么问题出现在LegacySchemaMigrator中,因为此EmbeddedCassandraService应该在每次启动时从头开始创建系统表(并且应该没有任何模式迁移)。有没有人对导致此问题的原因有所了解?

回答

0

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

相关问题