cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Abraham Sanderson <asander...@lingotek.com>
Subject Re: Problems with subcolumn retrieval after upgrade from 0.6 to 0.7
Date Tue, 19 Apr 2011 17:49:23 GMT
Ok, set up a unit test for the supercolumns which seem to have problems, I
posted a few examples below.  As I mentioned, the retrieved bytes for the
name and value appear to have additional data; in previous tests the
buffer's position, mark, and limit have been verified, and when I call
column.getName(), just the bytes for the name itself are properly
retrieved(if not I should be getting validation errors for the custom uuid
types, correct?).

Abe Sanderson

get_slice for key: 80324d09-302b-4093-9708-e509091e5d8f supercolumn:
0faced00057372002a6c696e676f74656b2e646f6373746f72652e43617373616e647261446f63756d656e74245461726765749d0b9f071f4cb0410200024900076d5f70686173654c00066d5f6c616e677400124c6a6176612f6c616e672f537472696e673b78700000000174000564655f4445
subcolumn: [ cf="TranslationsByTarget"
name="78cfd525-a520-458e-8584-259415b88405"]
colParent:ColumnParent(column_family:TranslationsByTarget, super_column:0F
AC ED 00 05 73 72 00 2A 6C 69 6E 67 6F 74 65 6B 2E 64 6F 63 73 74 6F 72 65
2E 43 61 73 73 61 6E 64 72 61 44 6F 63 75 6D 65 6E 74 24 54 61 72 67 65 74
9D 0B 9F 07 1F 4C B0 41 02 00 02 49 00 07 6D 5F 70 68 61 73 65 4C 00 06 6D
5F 6C 61 6E 67 74 00 12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67
3B 78 70 00 00 00 01 74 00 05 64 65 5F 44 45)
predicate:SlicePredicate(column_names:[java.nio.HeapByteBuffer[pos=0 lim=17
cap=17]])
col: ColumnOrSuperColumn(column:Column(name:80 01 00 02 00 00 00 09 67 65 74
5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 04 0C 00 01 0B 00 01 00
00 00 11 10 49 5D 01 32 73 0D 48 03 85 09 CA F1 AF 6F 60 63, value:80 01 00
02 00 00 00 09 67 65 74 5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00
04 0C 00 01 0B 00 01 00 00 00 11 10 49 5D 01 32 73 0D 48 03 85 09 CA F1 AF
6F 60 63 0B 00 02 00 00 00 11 10 FC 0A 0D 43 B1 E0 44 F9 96 AA FC EE 41 EC
40 7E, timestamp:1301327609539))
col: ColumnOrSuperColumn(column:Column(name:80 01 00 02 00 00 00 09 67 65 74
5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 04 0C 00 01 0B 00 01 00
00 00 11 10 49 5D 01 32 73 0D 48 03 85 09 CA F1 AF 6F 60 63 0B 00 02 00 00
00 11 10 FC 0A 0D 43 B1 E0 44 F9 96 AA FC EE 41 EC 40 7E 0A 00 03 00 00 01
2E FD 2B 7E C3 00 00 0C 00 01 0B 00 01 00 00 00 11 10 78 CF D5 25 A5 20 45
8E 85 84 25 94 15 B8 84 05, value:80 01 00 02 00 00 00 09 67 65 74 5F 73 6C
69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 04 0C 00 01 0B 00 01 00 00 00 11
10 49 5D 01 32 73 0D 48 03 85 09 CA F1 AF 6F 60 63 0B 00 02 00 00 00 11 10
FC 0A 0D 43 B1 E0 44 F9 96 AA FC EE 41 EC 40 7E 0A 00 03 00 00 01 2E FD 2B
7E C3 00 00 0C 00 01 0B 00 01 00 00 00 11 10 78 CF D5 25 A5 20 45 8E 85 84
25 94 15 B8 84 05 0B 00 02 00 00 00 11 10..., timestamp:1301327602293))
col: ColumnOrSuperColumn(column:Column(name:80 01 00 02 00 00 00 09 67 65 74
5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 04 0C 00 01 0B 00 01 00
00 00 11 10 49 5D 01 32 73 0D 48 03 85 09 CA F1 AF 6F 60 63 0B 00 02 00 00
00 11 10 FC 0A 0D 43 B1 E0 44 F9 96 AA FC EE 41 EC 40 7E 0A 00 03 00 00 01
2E FD 2B 7E C3 00 00 0C 00 01 0B 00 01 00 00 00 11 10 78 CF D5 25 A5 20 45
8E 85 84 25 94 15 B8 84 05 0B 00 02 00 00 00 11 10..., value:80 01 00 02 00
00 00 09 67 65 74 5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 04 0C
00 01 0B 00 01 00 00 00 11 10 49 5D 01 32 73 0D 48 03 85 09 CA F1 AF 6F 60
63 0B 00 02 00 00 00 11 10 FC 0A 0D 43 B1 E0 44 F9 96 AA FC EE 41 EC 40 7E
0A 00 03 00 00 01 2E FD 2B 7E C3 00 00 0C 00 01 0B 00 01 00 00 00 11 10 78
CF D5 25 A5 20 45 8E 85 84 25 94 15 B8 84 05 0B 00 02 00 00 00 11 10...,
timestamp:1301327589704))
col: ColumnOrSuperColumn(column:Column(name:80 01 00 02 00 00 00 09 67 65 74
5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 04 0C 00 01 0B 00 01 00
00 00 11 10 49 5D 01 32 73 0D 48 03 85 09 CA F1 AF 6F 60 63 0B 00 02 00 00
00 11 10 FC 0A 0D 43 B1 E0 44 F9 96 AA FC EE 41 EC 40 7E 0A 00 03 00 00 01
2E FD 2B 7E C3 00 00 0C 00 01 0B 00 01 00 00 00 11 10 78 CF D5 25 A5 20 45
8E 85 84 25 94 15 B8 84 05 0B 00 02 00 00 00 11 10..., value:80 01 00 02 00
00 00 09 67 65 74 5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 04 0C
00 01 0B 00 01 00 00 00 11 10 49 5D 01 32 73 0D 48 03 85 09 CA F1 AF 6F 60
63 0B 00 02 00 00 00 11 10 FC 0A 0D 43 B1 E0 44 F9 96 AA FC EE 41 EC 40 7E
0A 00 03 00 00 01 2E FD 2B 7E C3 00 00 0C 00 01 0B 00 01 00 00 00 11 10 78
CF D5 25 A5 20 45 8E 85 84 25 94 15 B8 84 05 0B 00 02 00 00 00 11 10...,
timestamp:1301327594118))


get_slice for key: d1c7f6b9-1425-4fab-b074-5574c54cae08 supercolumn:
0faced00057372002a6c696e676f74656b2e646f6373746f72652e43617373616e647261446f63756d656e74245461726765749d0b9f071f4cb0410200024900076d5f70686173654c00066d5f6c616e677400124c6a6176612f6c616e672f537472696e673b78700000000174000564655f4445
subcolumn: [ cf="TranslationsByTarget"
name="b2f33b97-69f4-45ec-ad87-dd14ee60d719"]
colParent:ColumnParent(column_family:TranslationsByTarget, super_column:0F
AC ED 00 05 73 72 00 2A 6C 69 6E 67 6F 74 65 6B 2E 64 6F 63 73 74 6F 72 65
2E 43 61 73 73 61 6E 64 72 61 44 6F 63 75 6D 65 6E 74 24 54 61 72 67 65 74
9D 0B 9F 07 1F 4C B0 41 02 00 02 49 00 07 6D 5F 70 68 61 73 65 4C 00 06 6D
5F 6C 61 6E 67 74 00 12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67
3B 78 70 00 00 00 01 74 00 05 64 65 5F 44 45)
predicate:SlicePredicate(column_names:[java.nio.HeapByteBuffer[pos=0 lim=17
cap=17]])
col: ColumnOrSuperColumn(column:Column(name:80 01 00 02 00 00 00 09 67 65 74
5F 73 6C 69 63 65 00 00 00 04 0F 00 00 0C 00 00 00 02 0C 00 01 0B 00 01 00
00 00 11 10 7C 2F 5D 5B B3 70 42 E1 A6 A2 77 FC 72 14 40 FE, value:80 01 00
02 00 00 00 09 67 65 74 5F 73 6C 69 63 65 00 00 00 04 0F 00 00 0C 00 00 00
02 0C 00 01 0B 00 01 00 00 00 11 10 7C 2F 5D 5B B3 70 42 E1 A6 A2 77 FC 72
14 40 FE 0B 00 02 00 00 00 11 10 B4 64 74 19 F9 44 4E A3 A5 F9 06 32 67 DB
33 19, timestamp:1301324860465))
col: ColumnOrSuperColumn(column:Column(name:80 01 00 02 00 00 00 09 67 65 74
5F 73 6C 69 63 65 00 00 00 04 0F 00 00 0C 00 00 00 02 0C 00 01 0B 00 01 00
00 00 11 10 7C 2F 5D 5B B3 70 42 E1 A6 A2 77 FC 72 14 40 FE 0B 00 02 00 00
00 11 10 B4 64 74 19 F9 44 4E A3 A5 F9 06 32 67 DB 33 19 0A 00 03 00 00 01
2E FD 01 8C 31 00 00 0C 00 01 0B 00 01 00 00 00 11 10 B2 F3 3B 97 69 F4 45
EC AD 87 DD 14 EE 60 D7 19, value:80 01 00 02 00 00 00 09 67 65 74 5F 73 6C
69 63 65 00 00 00 04 0F 00 00 0C 00 00 00 02 0C 00 01 0B 00 01 00 00 00 11
10 7C 2F 5D 5B B3 70 42 E1 A6 A2 77 FC 72 14 40 FE 0B 00 02 00 00 00 11 10
B4 64 74 19 F9 44 4E A3 A5 F9 06 32 67 DB 33 19 0A 00 03 00 00 01 2E FD 01
8C 31 00 00 0C 00 01 0B 00 01 00 00 00 11 10 B2 F3 3B 97 69 F4 45 EC AD 87
DD 14 EE 60 D7 19 0B 00 02 00 00 00 11 10..., timestamp:1301325719735))


get_slice for key: 18b4acd1-5491-44d3-aaa1-b725f51d1c3b supercolumn:
0faced00057372002a6c696e676f74656b2e646f6373746f72652e43617373616e647261446f63756d656e74245461726765749d0b9f071f4cb0410200024900076d5f70686173654c00066d5f6c616e677400124c6a6176612f6c616e672f537472696e673b787000000001740005706c5f504c
subcolumn: [ cf="TranslationsByTarget"
name="3da78c49-a8aa-4fdb-8238-1ade458426b5"]
colParent:ColumnParent(column_family:TranslationsByTarget, super_column:0F
AC ED 00 05 73 72 00 2A 6C 69 6E 67 6F 74 65 6B 2E 64 6F 63 73 74 6F 72 65
2E 43 61 73 73 61 6E 64 72 61 44 6F 63 75 6D 65 6E 74 24 54 61 72 67 65 74
9D 0B 9F 07 1F 4C B0 41 02 00 02 49 00 07 6D 5F 70 68 61 73 65 4C 00 06 6D
5F 6C 61 6E 67 74 00 12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67
3B 78 70 00 00 00 01 74 00 05 70 6C 5F 50 4C)
predicate:SlicePredicate(column_names:[java.nio.HeapByteBuffer[pos=0 lim=17
cap=17]])
col: ColumnOrSuperColumn(column:Column(name:80 01 00 02 00 00 00 09 67 65 74
5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 03 0C 00 01 0B 00 01 00
00 00 11 10 24 D4 2C 7F 2D C3 4A 80 B3 FF 5B A3 77 AF 2E BD, value:80 01 00
02 00 00 00 09 67 65 74 5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00
03 0C 00 01 0B 00 01 00 00 00 11 10 24 D4 2C 7F 2D C3 4A 80 B3 FF 5B A3 77
AF 2E BD 0B 00 02 00 00 00 11 10 62 58 73 23 CB 37 4F B5 BD DD BC F5 1E 7F
E7 65, timestamp:1301000346861))
col: ColumnOrSuperColumn(column:Column(name:80 01 00 02 00 00 00 09 67 65 74
5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 03 0C 00 01 0B 00 01 00
00 00 11 10 24 D4 2C 7F 2D C3 4A 80 B3 FF 5B A3 77 AF 2E BD 0B 00 02 00 00
00 11 10 62 58 73 23 CB 37 4F B5 BD DD BC F5 1E 7F E7 65 0A 00 03 00 00 01
2E E9 A9 DC ED 00 00 0C 00 01 0B 00 01 00 00 00 11 10 3D A7 8C 49 A8 AA 4F
DB 82 38 1A DE 45 84 26 B5, value:80 01 00 02 00 00 00 09 67 65 74 5F 73 6C
69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 03 0C 00 01 0B 00 01 00 00 00 11
10 24 D4 2C 7F 2D C3 4A 80 B3 FF 5B A3 77 AF 2E BD 0B 00 02 00 00 00 11 10
62 58 73 23 CB 37 4F B5 BD DD BC F5 1E 7F E7 65 0A 00 03 00 00 01 2E E9 A9
DC ED 00 00 0C 00 01 0B 00 01 00 00 00 11 10 3D A7 8C 49 A8 AA 4F DB 82 38
1A DE 45 84 26 B5 0B 00 02 00 00 00 11 10..., timestamp:1301000346885))
col: ColumnOrSuperColumn(column:Column(name:80 01 00 02 00 00 00 09 67 65 74
5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 03 0C 00 01 0B 00 01 00
00 00 11 10 24 D4 2C 7F 2D C3 4A 80 B3 FF 5B A3 77 AF 2E BD 0B 00 02 00 00
00 11 10 62 58 73 23 CB 37 4F B5 BD DD BC F5 1E 7F E7 65 0A 00 03 00 00 01
2E E9 A9 DC ED 00 00 0C 00 01 0B 00 01 00 00 00 11 10 3D A7 8C 49 A8 AA 4F
DB 82 38 1A DE 45 84 26 B5 0B 00 02 00 00 00 11 10..., value:80 01 00 02 00
00 00 09 67 65 74 5F 73 6C 69 63 65 00 00 00 02 0F 00 00 0C 00 00 00 03 0C
00 01 0B 00 01 00 00 00 11 10 24 D4 2C 7F 2D C3 4A 80 B3 FF 5B A3 77 AF 2E
BD 0B 00 02 00 00 00 11 10 62 58 73 23 CB 37 4F B5 BD DD BC F5 1E 7F E7 65
0A 00 03 00 00 01 2E E9 A9 DC ED 00 00 0C 00 01 0B 00 01 00 00 00 11 10 3D
A7 8C 49 A8 AA 4F DB 82 38 1A DE 45 84 26 B5 0B 00 02 00 00 00 11 10...,
timestamp:1301000346836))

On Mon, Apr 18, 2011 at 5:41 PM, aaron morton <aaron@thelastpickle.com>wrote:

> Can you could provide an example of a get_slice request that failed and the
> columns that were returned, so we can see the actual bytes for the super
> column and column names.
>
> Aaron
>
>
> On 19 Apr 2011, at 09:26, Abraham Sanderson wrote:
>
> I wish it were consistent enough that the answer were simple...  It varies
> between just the requested subcolumn to all subcolumns.  It always does
> return the columns in order, and the requested column is always one of the
> columns returned.   However, the slice start is not consistently in the same
> place(like n+1 or n-1).  For example, if I have CF['key']['supercolumn'
> ['a','b','c','d','e']], and query for 'c', sometimes i get a slice with 'a',
> 'b', 'c', other times its 'b', 'c', 'd', sometimes 'c', 'd'.  When the
> column name is closer to the end of the range('d' or 'e'), sometimes it
> justs a slice with the column.  The sporadic behavior makes me think that
> it's a race condition, but the behavior linked to the column range makes we
> think I'm overrunning the buffer somewhere.  I at first suspected that I was
> inadvertently making modifications to the buffers in application code during
> serialization/deserialization, so I did the tests in the cli.  This limits
> it to just cassandra/thrift code and my custom types.  Am I missing some
> other factor?  While debugging I have noticed that the byte buffers contain
> more than they used to; it looks to me like tokens that contain parts of the
> thrift response.  I'd see strings like
> "???get_slice???Foo??7c2f5d5b-b370-42e1-a6a2-77fc721440fe????"  Is it
> possible that I am inadvertently using a reserved token or something on my
> supercolumn name and this is screwing with the slice command?
>
> Abe
>
> On Mon, Apr 18, 2011 at 2:55 PM, aaron morton <aaron@thelastpickle.com>wrote:
>
>> When you run the get_slice which columns are returned ?
>>
>>
>> Aaron
>>
>> On 19 Apr 2011, at 04:12, Abraham Sanderson wrote:
>>
>> Ok, I made the changes and tried again.  Here is the before modifying my
>> method using a simple get, confirmed the same output in the cli:
>>
>> DEBUG [pool-1-thread-2] 2011-04-18 09:37:23,910 CassandraServer.java (line
>> 279) get
>> DEBUG [pool-1-thread-2] 2011-04-18 09:37:23,911 StorageProxy.java (line
>> 322) Command/ConsistencyLevel is SliceByNamesReadCommand(table='DocStore',
>> key=64316337663662392d313432352d346661622d623037342d353537346335346361653038,
>> columnParent='QueryPath(columnFamilyName='Tran
>> slationsByTarget', superColumnName='java.nio.HeapByteBuffer[pos=95 lim=211
>> cap=244]', columnName='null')',
>> columns=[7c2f5d5b-b370-42e1-a6a2-77fc721440fe,])/ALL
>> DEBUG [pool-1-thread-2] 2011-04-18 09:37:23,911 ReadCallback.java (line
>> 84) Blockfor/repair is 1/true; setting up requests to localhost/127.0.0.1
>> DEBUG [pool-1-thread-2] 2011-04-18 09:37:23,911 StorageProxy.java (line
>> 345) reading data locally
>> DEBUG [ReadStage:4] 2011-04-18 09:37:23,911 StorageProxy.java (line 450)
>> LocalReadRunnable reading SliceByNamesReadCommand(table='DocStore',
>> key=64316337663662392d313432352d346661622d623037342d353537346335346361653038,
>> columnParent='QueryPath(columnFamilyName='Translatio
>> nsByTarget', superColumnName='java.nio.HeapByteBuffer[pos=95 lim=211
>> cap=244]', columnName='null')',
>> columns=[7c2f5d5b-b370-42e1-a6a2-77fc721440fe,])
>> DEBUG [pool-1-thread-2] 2011-04-18 09:37:23,912 StorageProxy.java (line
>> 395) Read: 1 ms.
>> ERROR [pool-1-thread-2] 2011-04-18 09:37:23,912 Cassandra.java (line 2665)
>> Internal error processing get
>> java.lang.AssertionError
>>         at
>> org.apache.cassandra.thrift.CassandraServer.get(CassandraServer.java:300)
>>         at
>> org.apache.cassandra.thrift.Cassandra$Processor$get.process(Cassandra.java:2655)
>>         at
>> org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2555)
>>         at
>> org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:206)
>>         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:636)
>>
>> And here is the after...it succeeds here but still gives me multiple
>> subcolumns in the response.  Same behavior, it seems, I'm just sidestepping
>> the original AssertionError:
>>
>> DEBUG [pool-1-thread-6] 2011-04-18 09:50:26,617 CassandraServer.java (line
>> 232) get_slice
>> DEBUG [pool-1-thread-6] 2011-04-18 09:50:26,617 StorageProxy.java (line
>> 322) Command/ConsistencyLevel is SliceByNamesReadCommand(table='DocStore',
>> key=64316337663662392d313432352d346661622d623037342d353537346335346361653038,
>> columnParent='QueryPath(columnFamilyName='TranslationsByTarget',
>> superColumnName='java.nio.HeapByteBuffer[pos=101 lim=217 cap=259]',
>> columnName='null')', columns=[7c2f5d5b-b370-42e1-a6a2-77fc721440fe,])/ALL
>> DEBUG [pool-1-thread-6] 2011-04-18 09:50:26,617 ReadCallback.java (line
>> 84) Blockfor/repair is 1/true; setting up requests to localhost/127.0.0.1
>> DEBUG [pool-1-thread-6] 2011-04-18 09:50:26,617 StorageProxy.java (line
>> 345) reading data locally
>> DEBUG [ReadStage:3] 2011-04-18 09:50:26,618 StorageProxy.java (line 450)
>> LocalReadRunnable reading SliceByNamesReadCommand(table='DocStore',
>> key=64316337663662392d313432352d346661622d623037342d353537346335346361653038,
>> columnParent='QueryPath(columnFamilyName='TranslationsByTarget',
>> superColumnName='java.nio.HeapByteBuffer[pos=101 lim=217 cap=259]',
>> columnName='null')', columns=[7c2f5d5b-b370-42e1-a6a2-77fc721440fe,])
>> DEBUG [pool-1-thread-6] 2011-04-18 09:50:26,618 StorageProxy.java (line
>> 395) Read: 0 ms.
>>
>> My comparators are relatively simple.  Basically I have a schema that
>> required heterogenous columns, but I needed to be able to deserialize them
>> in unique ways.  So there is always a type byte that precedes the bytes of
>> the data.  The supercolumn in this case is a general data type, which
>> happens to represent a serializable object:
>>
>>   public void validate(ByteBuffer bytes)
>>     throws MarshalException
>>   {
>>     if(bytes.remaining() == 0)
>>       return;
>>
>>     validateDataType(bytes.get(bytes.position()));
>>     return;
>>   }
>>
>>   public int compare(ByteBuffer bytes1, ByteBuffer bytes2)
>>   {
>>     if (bytes1.remaining() == 0)
>>       return bytes2.remaining() == 0 ? 0 : -1;
>>     else if (bytes2.remaining() == 0)
>>       return 1;
>>     else
>>     {
>>       // compare type
>> bytes
>>
>>       byte T1 = bytes1.get(bytes1.position());
>>       byte T2 = bytes2.get(bytes2.position());
>>       if (T1 != T2)
>>         return (T1 - T2);
>>
>>       // compare
>> values
>>
>>       return ByteBufferUtil.compareUnsigned(bytes1, bytes2);
>>     }
>>   }
>>
>> The subcolumn is similar...just a UUID with a type byte prefix:
>>
>>   public void validate(ByteBuffer bytes)
>>     throws MarshalException
>>   {
>>     if(bytes.remaining() == 0)
>>       return;
>>
>>     validateDataType(bytes.get(bytes.position()));
>>     if((bytes.remaining() - 1) == 0)
>>       return;
>>     else if((bytes.remaining() - 1) != 16)
>>       throw new MarshalException("UUID value must be exactly 16 bytes");
>>   }
>>
>>   public int compare(ByteBuffer bytes1, ByteBuffer bytes2)
>>   {
>>     if (bytes1.remaining() == 0)
>>       return bytes2.remaining() == 0 ? 0 : -1;
>>     else if (bytes2.remaining() == 0)
>>       return 1;
>>     else
>>     {
>>       // compare type
>> bytes
>>
>>       byte T1 = bytes1.get(bytes1.position());
>>       byte T2 = bytes2.get(bytes2.position());
>>       if (T1 != T2)
>>         return (T1 - T2);
>>
>>       // compare
>> values
>>
>>       UUID U1 = getUUID(bytes1, bytes1.position()+1);
>>       UUID U2 = getUUID(bytes2, bytes2.position()+1);
>>       return U1.compareTo(U2);
>>     }
>>   }
>>
>>   static UUID getUUID(ByteBuffer bytes, int pos)
>>   {
>>     long msBits = bytes.getLong(pos);
>>     long lsBits = bytes.getLong(pos+8);
>>     return new UUID(msBits, lsBits);
>>   }
>>
>> All of my buffer reads are done by index, the position shouldn't be
>> changing at all.
>>
>> Abe Sanderson
>>
>> On Sat, Apr 16, 2011 at 5:38 PM, aaron morton <aaron@thelastpickle.com>wrote:
>>
>>> Can you run the same request as a get_slice naming the column in the
>>> SlicePredicate and see what comes back ?
>>>
>>> Can you reproduce the fault with logging set at DEBUG and send the logs ?
>>>
>>> Also, whats the compare function like for your custom type ?
>>>
>>> Cheers
>>> Aaron
>>>
>>>
>>> On 16 Apr 2011, at 07:34, Abraham Sanderson wrote:
>>>
>>> > I'm having some issues with a few of my ColumnFamilies after a
>>> cassandra upgrade/import from 0.6.1 to 0.7.4.  I followed the instructions
>>> to upgrade and everything seem to work OK...until I got into the application
>>> and noticed some wierd behavior.  I was getting the following stacktrace in
>>> cassandra occassionally when I did get operations for a single subcolumn for
>>> some of the Super type CFs:
>>> >
>>> > ERROR 12:56:05,669 Internal error processing get
>>> > java.lang.AssertionError
>>> >         at org.apache.cassandra.thrift.
>>> > CassandraServer.get(CassandraServer.java:300)
>>> >         at
>>> org.apache.cassandra.thrift.Cassandra$Processor$get.process(Cassandra.java:2655)
>>> >         at
>>> org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2555)
>>> >         at
>>> org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:206)
>>> >         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:636)
>>> >
>>> > The assertion that is failing is the check that only one column is
>>> retrieved by the get.  I did some debugging with the cli and a remote
>>>  debugger and found a few interesting patterns.  First, the problem does not
>>> seem consistently duplicatable.  If one supercolumn is affected though, it
>>> will happen more frequently for subcolumns that when sorted appear at the
>>> beginning of the range.  For columns near the end of the range, it seems to
>>> be more intermittent, and almost never occurs when I step through the code
>>> line by line.  The only factor I can think of that might cause issues is
>>> that I am using custom data types for all supercolumns and columns.  I
>>> originally thought I might be reading past the end of the ByteBuffer, but I
>>> have quadrupled checked that this is not the case.
>>> >
>>> > Abe Sanderson
>>>
>>>
>>
>>
>
>

Mime
View raw message