【发布时间】:2017-01-17 02:18:03
【问题描述】:
我正在使用 cassandra 在我的应用程序中存储数据。一切都很好,直到我试图阻止它。停止时,有时我会收到如下 NullPointerException 异常:
15:58:56.869 ERROR [Thread-2] [CassandraDaemon.java:185] Exception in thread Thread[Thread-2,5,main]
java.lang.NullPointerException: null
at org.apache.cassandra.thrift.ThriftServer.stop(ThriftServer.java:70) [cassandra-all-2.2.6-E001.jar:2.2.6-E001]
at org.apache.cassandra.service.CassandraDaemon.stop(CassandraDaemon.java:452) [cassandra-all-2.2.6-E001.jar:2.2.6-E001]
at org.apache.cassandra.service.CassandraDaemon.deactivate(CassandraDaemon.java:564) [cassandra-all-2.2.6-E001.jar:2.2.6-E001]
at mypackage.CassandraDaemonForTest$1.run(CassandraDaemonForTest.java:96) [testutils-6.3.0.jar:na]
根据类源,这就是问题发生的地方:
public void stop()
{
if (server != null)
{
server.stopServer();
try
{
server.join();
}
catch (InterruptedException e)
{
logger.error("Interrupted while waiting thrift server to stop", e);
}
server = null;
}
}
显然,同一个 ThriftServer 的多个实例正在运行,当我尝试停用时,一些实例通过了 null 检查并导致在实例上调用 next 方法时出现问题。我的调试器在同一个实例上至少显示了三个对该方法的调用:
关于如何解决这个问题的任何建议?
【问题讨论】:
标签: java nullpointerexception cassandra