3

我们将集群迁移到 Cassandra 1.2(从 1.1.7),并尝试在迁移后运行修复(我们定期运行它们,如建议的那样)。

由于SSTable版本不同导致修复失败,所以我们使用并重nodetool upgradesstablesnodetool 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...

任何的想法?

4

1 回答 1

2

该问题是由 Cassandra 1.2 中的一个错误引起的,该错误影响了节点之间压缩列族的传输。它已在 1.2.2 => Jira 条目中修复此错误

于 2013-02-27T08:17:58.240 回答