2013-12-10 95 views
2

我已經創建了下面的模式來表示一用戶和一組由他們最後的消息有序線程之間的關聯(其線程上的用戶已讀,哪些他沒有):卡桑德拉ArrayIndexOutOfBoundsException異常

CREATE TABLE table(user_id bigint, message_id bigint, thread_id bigint, read boolean, PRIMARY KEY(user_id, message_id)) WITH CLUSTERING ORDER BY (message_id DESC); 
CREATE INDEX ON table(read); 

插入一些值後,我嘗試運行此查詢來獲取最新的讀或未讀某個用戶的主題:如果通過cqlsh運行

SELECT thread_id, message_id FROM table WHERE user_id = ? AND message_id < ? AND read = ? LIMIT ? 

的查詢工作。然而,當通過datastax客戶端運行,在客戶端,我們得到一個超時異常,並在服務器端,卡桑德拉日誌顯示此異常:

ERROR [ReadStage:4190] 2013-12-10 13:18:03,579 CassandraDaemon.java (line 187) Exception in thread Thread[ReadStage:4190,5,main] 
java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: 0 
at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1940) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 
at org.apache.cassandra.db.filter.SliceQueryFilter.start(SliceQueryFilter.java:261) 
at org.apache.cassandra.db.index.composites.CompositesSearcher.makePrefix(CompositesSearcher.java:66) 
at org.apache.cassandra.db.index.composites.CompositesSearcher.getIndexedIterator(CompositesSearcher.java:101) 
at org.apache.cassandra.db.index.composites.CompositesSearcher.search(CompositesSearcher.java:53) 
at org.apache.cassandra.db.index.SecondaryIndexManager.search(SecondaryIndexManager.java:537) 
at org.apache.cassandra.db.ColumnFamilyStore.search(ColumnFamilyStore.java:1669) 
at org.apache.cassandra.db.PagedRangeCommand.executeLocally(PagedRangeCommand.java:109) 
at org.apache.cassandra.service.StorageProxy$LocalRangeSliceRunnable.runMayThrow(StorageProxy.java:1423) 
at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1936) 
... 3 more 

有誰知道問題是什麼?謝謝!

+0

跟蹤未處理的'RuntimeException'在服務器上顯示在你的代碼在服務器中的錯誤,而不是一個錯誤。 – Raedwald

+0

@ user3087110在表格聲明('network_id'字段) –

+0

@LyubenTodorov中不存在的選擇查詢中有一個字段,您是對的,這只是在此處剪切和複製代碼時的錯誤類型。 – user3087110

回答