Сервер Cassandra выдает java.lang.AssertionError: DecoratedKey() != DecoratedKey

В настоящее время я экспериментирую с Cassandra.

На стороне клиента (с Гектором) я ищу несколько таких ключей:

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(...) занимают страницы.

Любой намек, что я делаю неправильно. Или как исследовать этот вопрос.

Спасибо.


person Gamlor    schedule 24.07.2012    source источник
comment
Похоже, ошибка была исправлена ​​очень давно: issues.apache.org/ jira/browse/CASSANDRA-866 Можете ли вы воспроизвести с помощью современной версии Cassandra? (1.0.10 или 1.1.2)   -  person jbellis    schedule 27.07.2012
comment
Да, я могу воспроизвести его с помощью Cassandra 1.1.2 на компьютере с Windows. Я попытаюсь придумать минималистичный пример, который создает эту проблему.   -  person Gamlor    schedule 27.07.2012
comment
Да, то же самое с новейшими Cassandra и Hector 1.0-5. ОШИБКА [ReplicateOnWriteStage: 537] 2012-08-16 13:10:15,673 AbstractCassandraDaemon.java (строка 134) Исключение в потоке Thread [ReplicateOnWriteStage: 537,5, main]   -  person H6.    schedule 16.08.2012
comment
@Gamlor, ты когда-нибудь решал эту проблему? Я вижу ту же проблему.   -  person Jason Axelson    schedule 31.08.2012
comment
@JasonAxelson Нет ... никогда не решал эту проблему. Для меня это произошло только в наборе тестов, где я удалил и воссоздал пространство ключей для тестовых прогонов. Обходной путь для этого пакета заключался в создании нового пространства имен с уникальным именем для тестовых прогонов. Это работает для меня, но не является реальным решением. На самом деле нужно написать хороший тестовый пример для этого ... черт возьми, я ленивый.   -  person Gamlor    schedule 31.08.2012


Ответы (3)


Это либо https://issues.apache.org/jira/browse/CASSANDRA-4687, либо https://issues.apache.org/jira/browse/CASSANDRA-5202 Вы можете запустить команду " nodetool invalidatekeycache" на всех серверах с ошибкой. Если он продолжает возвращаться, вы можете отключить кеш ключей. Если это 5202, это должно произойти только после удаления и повторного создания семейства столбцов с использованием того же имени.

person Zanson    schedule 26.03.2013

Мне кажется, это был баг.

С более поздней версией (1.1.5) ошибка исчезла. По крайней мере для меня.

person Gamlor    schedule 19.11.2012
comment
К сожалению, я все еще вижу это в 1.1.8 на Linux. Перезапуск службы cassandra устраняет ошибку... (поместите сюда для целей поиска в Google) - person akaIDIOT; 06.02.2013

Это выглядит так: https://issues.apache.org/jira/browse/CASSANDRA-4687, который еще не исправлен. Обходной путь — отключить кеш ключей.

person Richard    schedule 15.02.2013