4

我有一个简单的单节点 cassandra 设置(1.1.0)(默认设置)。每当我尝试在 cassandra-cli 中创建密钥空间时,都会收到错误消息:[default@unknown] create keyspace tax; org.apache.thrift.transport.TTransportException

在 cassandra 服务器日志中,异常堆栈跟踪:ERROR 12:15:04,722 Exception in thread Thread[MigrationStage:1,5,main]

java.lang.AssertionError
    at org.apache.cassandra.db.DefsTable.updateKeyspace(DefsTable.java:441)
    at org.apache.cassandra.db.DefsTable.mergeKeyspaces(DefsTable.java:339)
    at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:269)
    at org.apache.cassandra.service.MigrationManager$1.call(MigrationManager.java:214)

我尝试删除 ./var/lib/cassandra/data 中的内容并重新启动服务器和我的 Mac,但仍然遇到同样的问题。

4

2 回答 2

5

看起来系统密钥空间已损坏。从中删除数据文件

  • /var/lib/cassandra/数据
  • /var/lib/cassandra/commitlog
  • /var/lib/cassandra/saved_caches

并重新启动 cassandra 服务器解决了这个问题。(以上目录定义在$CASSANDRA_HOME/conf/cassandra.yaml)

于 2012-06-04T09:06:41.480 回答
3

以下是向 Cassandra 添加键空间时的流程。(根据 Cassandrda 源代码中的评论。如果我弄错了,请纠正我)

1)第一步,它检查是否添加了任何新的键空间。

2)在第二步,我们检查是否重新创建了任何键空间,在这种情况下,重新创建意味着它们先前已被删除但仍作为空键存在于低级模式中

3)在最后一步,我们更新修改的键空间并保存键空间,稍后将它们删除。

在修改键空间时,它调用函数“updateKeyspace”,在这里,如果键空间元数据已损坏,它似乎会引发断言错误。

因此,在您的情况下,您可能已经删除了相同的密钥空间并尝试重新创建导致此问题的原因,或者正如您提到的那样,这是元数据损坏。

于 2012-06-04T09:51:22.893 回答