我们将集群迁移到 Cassandra 1.2(从 1.1.7),并尝试在迁移后运行修复(我们定期运行它们,如建议的那样)。
由于SSTable版本不同导致修复失败,所以我们使用并重nodetool upgradesstables
试nodetool scrub
。
但随后修复失败,出现此异常:
java.io.IOException: Broken pipe
at com.google.common.base.Throwables.propagate(Throwables.java:160)
at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:32)
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: java.io.IOException: Broken pipe
at sun.nio.ch.FileChannelImpl.transferTo0(Native Method)
at sun.nio.ch.FileChannelImpl.transferToDirectly(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferTo(Unknown Source)
at org.apache.cassandra.streaming.compress.CompressedFileStreamTask.stream(CompressedFileStreamTask.java:90)
at org.apache.cassandra.streaming.FileStreamTask.runMayThrow(FileStreamTask.java:91)
at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)
我们还注意到,在死亡之前,会nodetool netstats
显示奇怪的统计数据(SSTable 传输率为 756845%...)。
编辑
compressend SSTables 的传输似乎有问题,我将尝试禁用此 ColumnFamily 上的压缩并重试。
重新编辑
禁用压缩解决了这个问题,所以我们尝试重新启用它并得到一个
java.lang.RuntimeException:
Last written key DecoratedKey(97115[...]3136) >= current key DecoratedKey(8...
任何的想法?