Cassandra 从 2.2.1 升级到 3.0.0 失败并出现 NullPointerException

标签 cassandra upgrade cassandra-3.0

我尝试将 Cassandra 从 2.2.1 升级到 3.0.0,但 Cassandra 无法启动:

ERROR [main] 2015-11-30 15:44:50,164 CassandraDaemon.java:702 - Exception encountered during startup
java.lang.NullPointerException: null
    at org.apache.cassandra.io.util.FileUtils.delete(FileUtils.java:374) ~[apache-cassandra-3.0.0.jar:3.0.0]
    at org.apache.cassandra.db.SystemKeyspace.migrateDataDirs(SystemKeyspace.java:1341) ~[apache-cassandra-3.0.0.jar:3.0.0]
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:180) [apache-cassandra-3.0.0.jar:3.0.0]
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:561) [apache-cassandra-3.0.0.jar:3.0.0]
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:689) [apache-cassandra-3.0.0.jar:3.0.0]

还有人遇到这个问题吗? 我在这里也提出了一个问题: https://issues.apache.org/jira/browse/CASSANDRA-10788

这是 TRACE 级别的日志记录:

TRACE [MemtablePostFlush:1] 2015-12-01 16:47:52,675 ColumnFamilyStore.java:868 - forceFlush requested but everything is clean in schema_columns
TRACE [main] 2015-12-01 16:47:52,675 ColumnFamilyStore.java:1563 - Snapshot for Keyspace(name='system') keyspace data file /data/system/schema_columns-296e9c049bec3085827dc17d3df2122a/la-46-big-Data.db created in /data/system/schema_columns-296e9c049bec3085827dc17d3df2122a/snapshots/1448984872341-upgrade-2.2.1-3.0.0
TRACE [main] 2015-12-01 16:47:52,676 ColumnFamilyStore.java:1563 - Snapshot for Keyspace(name='system') keyspace data file /data/system/schema_columns-296e9c049bec3085827dc17d3df2122a/la-45-big-Data.db created in /data/system/schema_columns-296e9c049bec3085827dc17d3df2122a/snapshots/1448984872341-upgrade-2.2.1-3.0.0
TRACE [main] 2015-12-01 16:47:52,676 ColumnFamilyStore.java:1563 - Snapshot for Keyspace(name='system') keyspace data file /data/system/schema_columns-296e9c049bec3085827dc17d3df2122a/la-47-big-Data.db created in /data/system/schema_columns-296e9c049bec3085827dc17d3df2122a/snapshots/1448984872341-upgrade-2.2.1-3.0.0
TRACE [main] 2015-12-01 16:47:52,676 SystemKeyspace.java:1327 - Checking directory /data for old files
ERROR [main] 2015-12-01 16:47:52,751 CassandraDaemon.java:702 - Exception encountered during startup
java.lang.NullPointerException: null
    at org.apache.cassandra.io.util.FileUtils.delete(FileUtils.java:374) ~[apache-cassandra-3.0.0.jar:3.0.0]
    at org.apache.cassandra.db.SystemKeyspace.migrateDataDirs(SystemKeyspace.java:1341) ~[apache-cassandra-3.0.0.jar:3.0.0]
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:180) [apache-cassandra-3.0.0.jar:3.0.0]
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:561) [apache-cassandra-3.0.0.jar:3.0.0]
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:689) [apache-cassandra-3.0.0.jar:3.0.0]

看起来代码应该是/data 目录下的旧文件,但它找不到任何文件并调用 FileUtils.delete(null)。

最佳答案

可能影响您迁移的一件事是 2.1.x 到 3.0 的转换是 not recommended由 Datastax 提供。

Cassandra 3.0.x restrictions

Upgrade from Cassandra 2.1 versions greater or equal to 2.1.9 or from Cassandra 2.2 versions greater or equal to 2.2.2.

*Emphasis added

空指针可能是由于不存在的文件或重复的删除调用而发生的。

在 3.0 迁移之前,我会尝试至少升级到 2.2.2。

关于Cassandra 从 2.2.1 升级到 3.0.0 失败并出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001694/

相关文章:

angularjs - 将 Angular 2.0.0 升级到 2.x.x

database - Cassandra 节点硬件 : 2 vs 4 of double specs?

terminal - dpkg: 警告: 缺少包 'x' 的文件列表文件;假设软件包当前没有安装在 Ubuntu 16.04 中的文件

cassandra - 在 cassandra 上禁用压缩和 gc 宽限期

kubernetes - "kubeadm upgrade apply v1.18.0-00"好像没有升级master节点

cassandra - Datastax驱动程序连接异常DSE 5.0、CASSANDRA 3.0.7、spark

linux - 从 5.0.7 升级到 dse 6.7.5 后索引分区出错

java - Cassandra 的 EmbeddedCassandraService 抛出 InvalidRequestException : unconfigured table schema_keyspaces

cassandra - keyspace system_auth 不存在?

spring-boot - 用于启用 SSL 的 Spring Boot Cassandra 配置