Secondary index data gone after restart (1.1.1)

2012-06-26 Thread Ivo Meißner
Hi,

I am running into some problems with secondary indexes that I am unable to 
track down. When I restart the cassandra service, the secondary index data 
won't load and I get the following error during startup: 

INFO 08:29:42,127 Opening 
/var/myproject/cassandra/data/mykeyspace/group_admin/mykeyspace-group_admin.group_admin_groupId_idx-hd-1
 (20808 bytes)
ERROR 08:29:42,159 Exception in thread Thread[SSTableBatchOpen:1,5,main]
java.lang.ClassCastException: java.math.BigInteger cannot be cast to 
java.nio.ByteBuffer
at 
org.apache.cassandra.db.marshal.TimeUUIDType.compare(TimeUUIDType.java:37)
at org.apache.cassandra.dht.LocalToken.compareTo(LocalToken.java:45)
at org.apache.cassandra.db.DecoratedKey.compareTo(DecoratedKey.java:89)
at org.apache.cassandra.db.DecoratedKey.compareTo(DecoratedKey.java:38)
at java.util.TreeMap.getEntry(TreeMap.java:328)
at java.util.TreeMap.containsKey(TreeMap.java:209)
at java.util.TreeSet.contains(TreeSet.java:217)
at 
org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:396)
at 
org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:187)
at 
org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:225)
at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

When the service starts I can still select data from the column family, but not 
using the secondary index. 
After I execute nodetool rebuild_index the secondary index works fine again 
until the next restart. 

The error only seems to occur on the column groupId (TimeUUIDType). The other 
index on userId seems to work. 

I have the following column family definition: 

create column family group_admin with
  comparator = UTF8Type and
  key_validation_class = UTF8Type and
  column_metadata = [
{column_name: id, validation_class: UTF8Type},
{column_name: added, validation_class: LongType},
{column_name: userId, validation_class: BytesType, index_type: KEYS},
{column_name: requestMessage, validation_class: UTF8Type},
{column_name: status, validation_class: LongType},
{column_name: groupId, validation_class: TimeUUIDType, index_type: KEYS}
  ];

Thank you very much for your help!

Ivo

Re: Secondary index data gone after restart (1.1.1)

2012-06-26 Thread Ivo Meißner
Hi,

but if the data must be converted, this is something that should be fixed 
inside cassandra… Is this a bug, should I file a bug report?
Or is there some kind of setting I can change to make it work for now?

Maybe it is related to this issue, but this should have been fixed in 1.1.0:

https://issues.apache.org/jira/browse/CASSANDRA-3954

Thanks
Ivo


Am 26.06.2012 um 09:26 schrieb Fei Shan:

 Hi
 
please refer JDK nio package's ByteBuffer, I don't think that ByteBuffer 
 can be cast from the BigInteger directly, 
 it seems you need make some conversion before put it into a ByteBuffer.
 
 Thanks
 Fei
 
 On Tue, Jun 26, 2012 at 12:07 AM, Ivo Meißner i...@overtronic.com wrote:
 Hi,
 
 I am running into some problems with secondary indexes that I am unable to 
 track down. When I restart the cassandra service, the secondary index data 
 won't load and I get the following error during startup: 
 
 INFO 08:29:42,127 Opening 
 /var/myproject/cassandra/data/mykeyspace/group_admin/mykeyspace-group_admin.group_admin_groupId_idx-hd-1
  (20808 bytes)
 ERROR 08:29:42,159 Exception in thread Thread[SSTableBatchOpen:1,5,main]
 java.lang.ClassCastException: java.math.BigInteger cannot be cast to 
 java.nio.ByteBuffer
   at 
 org.apache.cassandra.db.marshal.TimeUUIDType.compare(TimeUUIDType.java:37)
   at org.apache.cassandra.dht.LocalToken.compareTo(LocalToken.java:45)
   at org.apache.cassandra.db.DecoratedKey.compareTo(DecoratedKey.java:89)
   at org.apache.cassandra.db.DecoratedKey.compareTo(DecoratedKey.java:38)
   at java.util.TreeMap.getEntry(TreeMap.java:328)
   at java.util.TreeMap.containsKey(TreeMap.java:209)
   at java.util.TreeSet.contains(TreeSet.java:217)
   at 
 org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:396)
   at 
 org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:187)
   at 
 org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:225)
   at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
   at java.lang.Thread.run(Thread.java:662)
 
 When the service starts I can still select data from the column family, but 
 not using the secondary index. 
 After I execute nodetool rebuild_index the secondary index works fine again 
 until the next restart. 
 
 The error only seems to occur on the column groupId (TimeUUIDType). The other 
 index on userId seems to work. 
 
 I have the following column family definition: 
 
 create column family group_admin with
   comparator = UTF8Type and
   key_validation_class = UTF8Type and
   column_metadata = [
 {column_name: id, validation_class: UTF8Type},
 {column_name: added, validation_class: LongType},
 {column_name: userId, validation_class: BytesType, index_type: KEYS},
 {column_name: requestMessage, validation_class: UTF8Type},
 {column_name: status, validation_class: LongType},
 {column_name: groupId, validation_class: TimeUUIDType, index_type: KEYS}
   ];
 
 Thank you very much for your help!
 
 Ivo