Наше приложение использует EmbeddedCassandraService для модульного тестирования. Мы используем Cassandra 3.11 и java-драйвер от Datastax 3.3.0.
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 3.3.0. Я не понимаю, почему проблема возникает в LegacySchemaMigrator, поскольку этот EmbeddedCassandraService должен создавать системные таблицы с нуля каждый раз, когда он запускается (и не должно быть никакой схемы для миграции). Кто-нибудь знает, что может быть причиной этой проблемы?