【问题标题】:Cassandra server throws java.lang.AssertionError: DecoratedKey(...) != DecoratedKeyCassandra 服务器抛出 java.lang.AssertionError: DecoratedKey(...) != DecoratedKey
【发布时间】:2012-07-22 07:52:03
【问题描述】:

我目前正在尝试使用 Cassandra。

在客户端(与 Hector 一起),我查找了如下几个键:

ColumnFamilyResult<String, String> result = template.queryColumns(Arrays.asList("key1","key2","key3"));

大多数时候它似乎工作。但其他时候我在客户端上遇到超时异常:

Caused by: me.prettyprint.hector.api.exceptions.HTimedOutException: TimedOutException()
    at me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:35)
    at me.prettyprint.cassandra.service.template.ThriftColumnFamilyTemplate$1.execute(ThriftColumnFamilyTemplate.java:100)
    at me.prettyprint.cassandra.service.template.ThriftColumnFamilyTemplate$1.execute(ThriftColumnFamilyTemplate.java:88)
    at me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:103)
    at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:258)
    at me.prettyprint.cassandra.model.ExecutingKeyspace.doExecuteOperation(ExecutingKeyspace.java:97)
    at me.prettyprint.cassandra.service.template.ThriftColumnFamilyTemplate.sliceInternal(ThriftColumnFamilyTemplate.java:88)
    at me.prettyprint.cassandra.service.template.ThriftColumnFamilyTemplate.doExecuteSlice(ThriftColumnFamilyTemplate.java:46)
    at me.prettyprint.cassandra.service.template.ColumnFamilyTemplate.queryColumns(ColumnFamilyTemplate.java:113)
    at info.gamlor.experiments.Cassandra.readObjectByKey(ComplexCassandra.java:255)

Caused by: TimedOutException()
    at org.apache.cassandra.thrift.Cassandra$get_slice_result.read(Cassandra.java:7772)
    at org.apache.cassandra.thrift.Cassandra$Client.recv_get_slice(Cassandra.java:570)
    at org.apache.cassandra.thrift.Cassandra$Client.get_slice(Cassandra.java:542)
    at me.prettyprint.cassandra.service.template.ThriftColumnFamilyTemplate$1.execute(ThriftColumnFamilyTemplate.java:95)

并且在服务器上出现了这个异常:

ERROR 11:33:55,312 Exception in thread Thread[ReadStage:91,5,main]
java.lang.AssertionError: DecoratedKey(4948402862350542345439897754126541659, 6932) != DecoratedKey(132475956107784875457507977471906551877, 726f6f74) in C:\tem
p\cassandra\lib\cassandra\data\CassandraPolepos\ComplexObjects\CassandraPolepos-ComplexObjects-hd-2-Data.db
        at org.apache.cassandra.db.columniterator.SSTableSliceIterator.<init>(SSTableSliceIterator.java:58)
        at org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:66)
        at org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:78)
        at org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:256)
        at org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:63)
        at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1331)
        at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1193)
        at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1128)
        at org.apache.cassandra.db.Table.getRow(Table.java:378)
        at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:69)
        at org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:816)
        at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1250)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)

有时 DecoratedKey(...) 部分中的键值会占用页面。

任何人都提示我做错了什么。或者如何调查这个问题。

谢谢。

【问题讨论】:

  • 这看起来像是很久以前修复的错误:issues.apache.org/jira/browse/CASSANDRA-866 你能用现代版本的 Cassandra 重现吗? (1.0.10 或 1.1.2)
  • 是的,我可以在 Windows 机器上使用 Cassandra 1.1.2 重现它。我将尝试提出一个简单的示例,这会产生这个问题。
  • 是的,这里与最新的 Cassandra 和 Hector 1.0-5 相同。错误 [ReplicateOnWriteStage:537] 2012-08-16 13:10:15,673 AbstractCassandraDaemon.java(第 134 行)线程异常 [ReplicateOnWriteStage:537,5,main]
  • @Gamlor,你解决过这个问题吗?我遇到了同样的问题。
  • @JasonAxelson 不......从来没有解决它。对我来说,它只发生在一个测试套件中,在那里我删除并重新创建了用于测试运行的键空间。该套件的解决方法是为测试运行创建具有唯一名称的新命名空间。这对我有用,但不是真正的解决方案。真的应该为此写一个很好的测试用例......该死的我很懒。

标签: cassandra hector


【解决方案1】:

在我看来,这似乎是一个错误。

在更高版本 (1.1.5) 中,错误消失了。至少对我来说。

【讨论】:

  • 遗憾的是,我仍然在 linux 上的 1.1.8 中看到了这一点。重新启动 cassandra 服务会消除错误...(出于谷歌搜索的目的放在这里)
【解决方案2】:

这看起来像https://issues.apache.org/jira/browse/CASSANDRA-4687,尚未修复。一种解决方法是禁用密钥缓存。

【讨论】:

    【解决方案3】:

    这是https://issues.apache.org/jira/browse/CASSANDRA-4687https://issues.apache.org/jira/browse/CASSANDRA-5202 您可以在所有显示错误的服务器上运行命令“nodetool invalidatekeycache”。如果它不断出现,您可能需要禁用密钥缓存。 如果是 5202,它应该只发生在使用相同名称删除并重新创建列族之后。

    【讨论】:

      猜你喜欢
      • 2019-03-29
      • 2016-06-23
      • 1970-01-01
      • 2017-01-30
      • 2015-05-18
      • 2015-11-23
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      相关资源
      最近更新 更多