Le serveur Cassandra lance java.lang.AssertionError: DecoratedKey (…)! = DecoratedKey

J’expérimente actuellement avec Cassandra.

Côté client (avec Hector), je recherche quelques clés comme ceci:

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

La plupart du temps, cela semble fonctionner. Mais d’autres fois, j’obtiens une exception de délai d’attente sur le client:

 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) 

Et sur le serveur, cette exception apparaît:

 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.(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) 

Parfois, les valeurs-clés de la partie DecoratedKey (…) prennent des pages.

Quelqu’un un indice de ce que je fais mal. Ou comment enquêter sur ce problème.

Merci.

Ceci est soit https://issues.apache.org/jira/browse/CASSANDRA-4687 ou https://issues.apache.org/jira/browse/CASSANDRA-5202 vous pouvez exécuter la commande “nodetool invalidatekeycache” sur tous les le serveur affichant l’erreur. Si elle revient, vous pouvez désactiver le cache de clé. Si c’est 5202, cela ne devrait arriver qu’après avoir déposé et recréé une famille de colonnes avec le même nom.

Pour moi, cela ressemble à un bug.

Avec la version ultérieure (1.1.5), l’erreur a disparu. Au moins pour moi.

Cela ressemble à https://issues.apache.org/jira/browse/CASSANDRA-4687 , qui n’est pas encore corrigé. Une solution consiste à désactiver le cache de clés.