在电源故障后的一些查询中抛出Cassandra EOFException [英] Cassandra EOFException thrown on some queries after a power failure

查看:692
本文介绍了在电源故障后的一些查询中抛出Cassandra EOFException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  `INFO 11:44:29,874 Listening for thrift clients...
ERROR 11:47:01,471 Exception in thread Thread[ReadStage:33,5,main]
java.lang.RuntimeException: org.apache.cassandra.io.sstable.CorruptSSTableExcept
ion: java.io.EOFException: EOF after 2 bytes out of 29545
        at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(Stora
geProxy.java:1582)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(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.EOFE
xception: EOF after 2 bytes out of 29545
        at org.apache.cassandra.db.columniterator.SimpleSliceReader.<init>(Simpl
eSliceReader.java:89)
        at org.apache.cassandra.db.columniterator.SSTableSliceIterator.createRea
der(SSTableSliceIterator.java:68)
        at org.apache.cassandra.db.columniterator.SSTableSliceIterator.<init>(SS
TableSliceIterator.java:44)
        at org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnItera
tor(SliceQueryFilter.java:101)
        at org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(Q
ueryFilter.java:68)
        at org.apache.cassandra.db.CollationController.collectAllData(CollationC
ontroller.java:275)
        at org.apache.cassandra.db.CollationController.getTopLevelColumns(Collat
ionController.java:65)
        at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFa
milyStore.java:1363)
        at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamil
yStore.java:1220)
        at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamil
yStore.java:1132)
        at org.apache.cassandra.db.Table.getRow(Table.java:355)
        at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadComm
and.java:70)
        at org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThr
ow(StorageProxy.java:1052)
        at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(Stora
geProxy.java:1578)
        ... 3 more
Caused by: java.io.EOFException: EOF after 2 bytes out of 29545
        at org.apache.cassandra.io.util.FileUtils.skipBytesFully(FileUtils.java:
350)
        at org.apache.cassandra.utils.ByteBufferUtil.skipShortLength(ByteBufferU
til.java:382)
        at org.apache.cassandra.db.columniterator.SimpleSliceReader.<init>(Simpl
eSliceReader.java:71)
        ... 16 more
ERROR 11:47:12,900 Exception in thread Thread[ReadStage:35,5,main]
java.lang.RuntimeException: org.apache.cassandra.io.sstable.CorruptSSTableExcept
ion: java.io.EOFException: EOF after 2 bytes out of 29545
        at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(Stora
geProxy.java:1582)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(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.EOFE
xception: EOF after 2 bytes out of 29545
        at org.apache.cassandra.db.columniterator.SimpleSliceReader.<init>(Simpl
eSliceReader.java:89)
        at org.apache.cassandra.db.columniterator.SSTableSliceIterator.createRea
der(SSTableSliceIterator.java:68)
        at org.apache.cassandra.db.columniterator.SSTableSliceIterator.<init>(SS
TableSliceIterator.java:44)
        at org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnItera
tor(SliceQueryFilter.java:101)
        at org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(Q
ueryFilter.java:68)
        at org.apache.cassandra.db.CollationController.collectAllData(CollationC
ontroller.java:275)
        at org.apache.cassandra.db.CollationController.getTopLevelColumns(Collat
ionController.java:65)
        at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFa
milyStore.java:1363)
        at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamil
yStore.java:1220)
        at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamil
yStore.java:1132)
        at org.apache.cassandra.db.Table.getRow(Table.java:355)
        at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadComm
and.java:70)
        at org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThr
ow(StorageProxy.java:1052)
        at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(Stora
geProxy.java:1578)
        ... 3 more
Caused by: java.io.EOFException: EOF after 2 bytes out of 29545
        at org.apache.cassandra.io.util.FileUtils.skipBytesFully(FileUtils.java:
350)
        at org.apache.cassandra.utils.ByteBufferUtil.skipShortLength(ByteBufferU
til.java:382)
        at org.apache.cassandra.db.columniterator.SimpleSliceReader.<init>(Simpl
eSliceReader.java:71)
        ... 16 more`

在Hector HTimedOutException 我假设是因为Cassandra的SSTable腐败,因为它在电源故障前工作良好。如何解决这个问题?这也是开发数据库,​​我已经有这个问题之前,最终删除一些列家庭,但我不希望这是每次断电或系统崩溃时唯一的解决方案。我使用cassandra 1.2.2

And in Hector i get a HTimedOutException which I am assuming is because of the SSTable corruption in cassandra because it was working well before the power failure. How do I fix this? Also this is development database and I have had this problem before and ended up dropping some Column Families but I don't want this to be the only solution every time power cuts or system crashes. I am using cassandra 1.2.2

推荐答案

而不是删除整个CF,你可以只删除损坏的SSTable然后运行修复从副本恢复数据。问题是错误不打印日志中的文件名,所以很难找出哪个文件被损坏。你可以通过在调试模式下运行Cassandra来获得它(编辑log4j-server.properties)。查看此其他SO职位:

Instead of deleting the whole CF, you can just delete the corrupt SSTable then run repair to recover the data from the replicas. The problem is the error doesn't print the filename in the log so it's hard to find out which file is corrupt. You can get it though by running Cassandra in debug mode (edit log4j-server.properties). See this other SO post:

启动Cassandra节点时出现错误

如何操作。

这篇关于在电源故障后的一些查询中抛出Cassandra EOFException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆