异常或错误导致运行中止:无法启动EmbeddedCassandra [name ='cassandra-2',version ='3.11.6']

问题描述

我在单元测试(embedded-cassandra)中使用Scalatest。当我尝试批量运行所有测试用例时,出现错误

An exception or error caused a run to abort: Unable to start EmbeddedCassandra[name='cassandra-2',version='3.11.6']
...
Caused by: java.io.IOException: 'WindowsCassandraNode[pid='-1',exitValue='0']' is not alive. Please see logs for more details
    Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file C:\Users\manuc\AppData\Local\Temp\apache-cassandra-3.11.6-5333812070060739596/logs/gc.log due to No such file or directory
...
ava.net.BindException: Address already in use: JVM_Bind
        java.net.BindException: Address already in use: JVM_Bind
    ERROR [main] 2020-09-17 06:27:11,872 CassandraDaemon.java:774 - Port already in use: 7199; nested exception is:

我可能做错了什么?正如跟踪显示的cassandra-2一样,似乎cassandra的另一个实例已经在运行?可能测试同时进行了吗?在Intellij/Scalatest中串行运行测试的方式是什么?

此答案提到Scalatest将并行运行,这可能会导致端口冲突问题。有没有办法避免embedded-cassandra中的端口冲突或串行运行套件? -How to run tests in a class sequentially in ScalaTest?

解决方法

您可以尝试使用随机端口来解决问题:

EmbeddedCassandraFactory cassandraFactory = new EmbeddedCassandraFactory();
cassandraFactory.setPort(0);
cassandraFactory.setSslPort(0); // if SSL client options enabled
cassandraFactory.setRpcPort(0);
cassandraFactory.setJmxLocalPort(0);
cassandraFactory.setStoragePort(0);
cassandraFactory.setSslStoragePort(0); // // if SSL server options enabled

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...