반응형
Cassandra 서버에서 java.lang.AssertionError : DecoratedKey (…)! = DecoratedKey 발생
저는 현재 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 (...) 부분의 키-값이 페이지를 차지합니다.
누구든지 내가 뭘 잘못하고 있는지 힌트. 또는이 문제를 조사하는 방법.
감사.
이것은 https://issues.apache.org/jira/browse/CASSANDRA-4687 또는 https://issues.apache.org/jira/browse/CASSANDRA-5202 입니다. 모든 시스템에서 "nodetool invalidatekeycache"명령을 실행할 수 있습니다. 오류를 표시하는 서버. 계속 돌아 오면 키 캐시를 비활성화 할 수 있습니다. 5202 인 경우 동일한 이름을 사용하여 column family를 삭제하고 다시 만든 후에 만 발생해야합니다.
나에게 그것은 버그 인 것 같습니다.
이후 버전 (1.1.5)에서는 오류가 사라졌습니다. 적어도 나에게는.
이것은 https://issues.apache.org/jira/browse/CASSANDRA-4687 처럼 보이지만 아직 수정되지 않았습니다. 해결 방법은 키 캐시를 비활성화하는 것입니다.
반응형
'development' 카테고리의 다른 글
getToken ()이 실패했습니다. (0) | 2020.12.09 |
---|---|
런타임에 결정된 대형 구조체 유형을 반환하는 IMP 함수를 구현하는 방법은 무엇입니까? (0) | 2020.12.09 |
다시 시작할 때 조각 내부의 GLSurfaceView가 렌더링되지 않음 (0) | 2020.12.09 |
내 구조체 배열이 왜 그렇게 많은 메모리를 차지합니까? (0) | 2020.12.09 |
취소 후 이벤트 전파를 계속하는 방법은 무엇입니까? (0) | 2020.12.09 |