我们在 1.2.3/1.2.4(Datastax 社区版)中遇到随机 SSTable 损坏,在具有混合读/写负载的单节点开发机器上使用具有来自多列 POV 的宽行的数据模型。但是,写入比读取更频繁。问题体现在堆栈跟踪中,例如:
ERROR [ReadStage:13899] 2013-04-24 07:09:00,770 CassandraDaemon.java (line 132) Exception in thread Thread[ReadStage:13899,5,main]
java.lang.RuntimeException: org.apache.cassandra.io.sstable.CorruptSSTableException: java.io.EOFException
at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1582)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.cassandra.io.sstable.CorruptSSTableException: java.io.EOFException
at org.apache.cassandra.db.columniterator.SimpleSliceReader.computeNext(SimpleSliceReader.java:106)
... many more
Caused by: java.io.EOFException
at java.io.RandomAccessFile.readFully(Unknown Source)
... many more
或者
java.lang.RuntimeException: org.apache.cassandra.io.sstable.CorruptSSTableException: org.apache.cassandra.db.ColumnSerializer$CorruptColumnException: invalid column name length 0
不幸的是,我们还没有可重现的测试用例,因为这是随机发生的(例如几天后),而不是立即发生。
我还在这个/其他论坛中研究了与 1.2 类似的问题。
问题是:您在生产中使用 Cassandra 1.2 有什么经验,或者您会推荐 1.1 作为 1.2.4 是 1.2 系列迄今为止的最新版本吗?
虽然我们在单节点开发环境中遇到了这些问题,但在由多个节点服务的集群中运行整个东西时,事情可能会得到备份,但我们认为事情也应该在单个节点上运行而不会损坏。
非常感谢任何提示。谢谢。