【发布时间】:2012-06-21 04:34:58
【问题描述】:
我创建了一个 cassandra 的多节点集群:node0 和 node1(cassandra 版本 1.1.1),然后我使用 cassandra-cli 连接到 node0 并创建了一个列族。 node0 的信息没问题,但是它在 node1 上抛出了一个异常,如下所示:
错误 18:22:48,486 线程 Thread[MigrationStage:1,5,main] 中的异常 org.apache.cassandra.db.marshal.MarshalException:无效的 UTF8 字节 4fd5c745 在 org.apache.cassandra.db.marshal.UTF8Type.getString(UTF8Type.java:56) 在 org.apache.cassandra.cql3.ColumnIdentifier.(ColumnIdentifier.java:47) 在 org.apache.cassandra.cql3.CFDefinition.getKeyId(CFDefinition.java:125) 在 org.apache.cassandra.cql3.CFDefinition.(CFDefinition.java:59) 在 org.apache.cassandra.config.CFMetaData.updateCfDef(CFMetaData.java:1303) 在 org.apache.cassandra.config.CFMetaData.keyAlias(CFMetaData.java:224) 在 org.apache.cassandra.config.CFMetaData.fromSchemaNoColumns(CFMetaData.java:1187) 在 org.apache.cassandra.config.CFMetaData.fromSchema(CFMetaData.java:1215) 在 org.apache.cassandra.config.KSMetaData.deserializeColumnFamilies(KSMetaData.java:291) 在 org.apache.cassandra.db.DefsTable.mergeColumnFamilies(DefsTable.java:396) 在 org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:271) 在 org.apache.cassandra.db.DefsTable.mergeRemoteSchema(DefsTable.java:249) 在 org.apache.cassandra.db.DefinitionsUpdateVerbHandler$1.runMayThrow(DefinitionsUpdateVerbHandler.java:48) 在 org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30) 在 java.util.concurrent.Executors$RunnableAdapter.call(未知来源) 在 java.util.concurrent.FutureTask$Sync.innerRun(未知来源) 在 java.util.concurrent.FutureTask.run(未知来源) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(未知来源)然后我将数据存储到node0的列族中,我可以在node0处获取数据,并且node1表示未找到列族。重启node1后,就可以像node0一样获取node1的数据了。
我该如何解决这个问题?
【问题讨论】:
-
完整的异常堆栈跟踪将更有利于调试此问题。可能在重新启动 node1 之前它没有响应,并且您创建的架构未在此节点上复制。重新启动后,它实际上可能已经响应并且您得到了正确的结果。
-
感谢 node1 从日志中恢复数据。如果我在重新启动 node1 之前删除了提交日志,我将无法启动 node1 并抛出异常:org.apache.cassandra.db.marshal.MarshalException: invalid UTF8 bytes 4fd5c5c2
-
之前我通过命令“create column family Users;”创建了 CF,现在我通过“create column family Users with contrast=UTF8Type and key_validation_class=UTF8Type;”创建了 CF看起来还可以