You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Timo Nentwig <ti...@toptarif.de> on 2011/06/15 17:41:54 UTC

sstable2json2sstable bug with json data stored

Hi!

Couldn't google anybody having yet experienced this, so I do (0.8):

{
   "foo":{
     "foo":{
       "foo":"bar",
       "foo":"bar",
       "foo":"bar",
       "foo":"",
       "foo":"bar",
       "foo":"bar",
       "id":123456
     }  },
   "foo":null
}

(json can likely be boiled down even more...)

[default@foo] set transactions[test][data]='{"foo":{"foo":{"foo":"bar","foo":"bar","foo":"bar","foo":"","foo":"bar","foo":"bar","id":123456}},"foo":null}';

$ ./sstable2json /var/lib/cassandra/data/foo/transactions-g-1-Data.db > /tmp/foo
$ cat /tmp/foo
{
"74657374": [["data", "{"foo":{"foo":{"foo":"bar","foo":"bar","foo":"bar","foo":"","foo":"bar","foo":"bar","id":123456}},"foo":null}", 1308152085301000]]
}

$ ./json2sstable -s -c transactions -K foo /tmp/json /tmp/ss-g-1-Data.db
Counting keys to import, please wait... (NOTE: to skip this use -n <num_keys>)
org.codehaus.jackson.JsonParseException: Unexpected character ('f' (code 102)): was expecting comma to separate ARRAY entries
  at [Source: /tmp/json; line: 2, column: 27]
	at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:929)
	at org.codehaus.jackson.impl.JsonParserBase._reportError(JsonParserBase.java:632)
	at org.codehaus.jackson.impl.JsonParserBase._reportUnexpectedChar(JsonParserBase.java:565)
	at org.codehaus.jackson.impl.Utf8StreamParser.nextToken(Utf8StreamParser.java:128)
	at org.codehaus.jackson.impl.JsonParserBase.skipChildren(JsonParserBase.java:263)
	at org.apache.cassandra.tools.SSTableImport.importSorted(SSTableImport.java:328)
	at org.apache.cassandra.tools.SSTableImport.importJson(SSTableImport.java:252)
	at org.apache.cassandra.tools.SSTableImport.main(SSTableImport.java:476)
ERROR: Unexpected character ('f' (code 102)): was expecting comma to separate ARRAY entries
  at [Source: /tmp/json; line: 2, column: 27]

create column family transactions
     with comparator = AsciiType
     and key_validation_class = AsciiType
     and default_validation_class = UTF8Type
     and keys_cached = 0
     and rows_cached = 0
     and column_metadata = [{
         column_name : uuid,
         validation_class : LexicalUUIDType,
         index_name : uuid_idx,
         index_type : 0
     }, {
         column_name : session_id,
         validation_class : LexicalUUIDType,
         index_name : session_id_idx,
         index_type : 0
     }, {
         column_name : guid,
         validation_class : LexicalUUIDType,
         index_name : guid_idx,
         index_type : 0
     }, {
         column_name : timestamp,
         validation_class : LongType
     }, {
         column_name : completed,
         validation_class : BytesType
     }, {
         column_name : user_id,
         validation_class : LongType
     }];
;


Getting Started website is out of date

Posted by Christian Straube <Ch...@gmx.de>.
Hi,

the "Getting started" website (http://wiki.apache.org/cassandra/GettingStarted) is out of date
-> the link to the Twissandra demo is broken
-> the new CQL is not mentioned :-)

Beside this I love cassandra!

Best
Christian

Re: sstable2json2sstable bug with json data stored

Posted by Timo Nentwig <ti...@toptarif.de>.
On 6/16/11 10:12, Timo Nentwig wrote:
> On 6/16/11 10:06, Sasha Dolgy wrote:
>> The JSON you are showing below is an export from cassandra?
>
> Yes. Just posted the solution:
> https://issues.apache.org/jira/browse/CASSANDRA-2780?focusedCommentId=13050274&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13050274
>
> Guess this could simply be done in the quote() method.

Hm, is this the way it's supposed to be?

[default@foo] set transactions[test][data]='{"foo":"bar"}';
Value inserted.
[default@foo] get transactions[test][data];
=> (column=data, value={"foo":"bar"}, timestamp=1308214517443000)
[default@foo] set transactions[test][data]='{\"foo\":"bar"}';
Value inserted.
[default@foo] get transactions[test][data];
=> (column=data, value={"foo":"bar"}, timestamp=1308214532484000)


Otherwise here's a regex that cares about existing backslashes:

     private static String quote(final String val)
     {
         return String.format("\"%s\"", val.replaceAll("(?<!\\\\)\"", "\\\""));
     }

>> { "74657374": [["data", "{"foo":"bar"}", 1308209845388000]] }
>>
>> Does this work?
>>
>> {
>> 74657374: [["data", {foo:"bar"}, 1308209845388000]]
>> }
>>
>> -sd
>>
>> On Thu, Jun 16, 2011 at 9:49 AM, Timo Nentwig<ti...@toptarif.de> wrote:
>>> On 6/15/11 17:41, Timo Nentwig wrote:
>>>>
>>>> (json can likely be boiled down even more...)
>>>
>>> Any JSON (well, probably anything with quotes...) breaks it:
>>>
>>> {
>>> "74657374": [["data", "{"foo":"bar"}", 1308209845388000]]
>>> }
>>>
>>> [default@foo] set transactions[test][data]='{"foo":"bar"}';
>>>
>>> I feared that storing data in a readable fashion would be a fateful idea.
>>>
>>> https://issues.apache.org/jira/browse/CASSANDRA-2780
>


Re: sstable2json2sstable bug with json data stored

Posted by Timo Nentwig <ti...@toptarif.de>.
On 6/16/11 10:06, Sasha Dolgy wrote:
> The JSON you are showing below is an export from cassandra?

Yes. Just posted the solution:
https://issues.apache.org/jira/browse/CASSANDRA-2780?focusedCommentId=13050274&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13050274

Guess this could simply be done in the quote() method.

> { "74657374": [["data", "{"foo":"bar"}", 1308209845388000]] }
>
> Does this work?
>
> {
> 74657374: [["data", {foo:"bar"}, 1308209845388000]]
> }
>
> -sd
>
> On Thu, Jun 16, 2011 at 9:49 AM, Timo Nentwig<ti...@toptarif.de>  wrote:
>> On 6/15/11 17:41, Timo Nentwig wrote:
>>>
>>> (json can likely be boiled down even more...)
>>
>> Any JSON (well, probably anything with quotes...) breaks it:
>>
>> {
>> "74657374": [["data", "{"foo":"bar"}", 1308209845388000]]
>> }
>>
>> [default@foo] set transactions[test][data]='{"foo":"bar"}';
>>
>> I feared that storing data in a readable fashion would be a fateful idea.
>>
>> https://issues.apache.org/jira/browse/CASSANDRA-2780


Re: sstable2json2sstable bug with json data stored

Posted by Sasha Dolgy <sd...@gmail.com>.
The JSON you are showing below is an export from cassandra?

{ "74657374": [["data", "{"foo":"bar"}", 1308209845388000]] }

Does this work?

{
74657374: [["data", {foo:"bar"}, 1308209845388000]]
}

-sd

On Thu, Jun 16, 2011 at 9:49 AM, Timo Nentwig <ti...@toptarif.de> wrote:
> On 6/15/11 17:41, Timo Nentwig wrote:
>>
>> (json can likely be boiled down even more...)
>
> Any JSON (well, probably anything with quotes...) breaks it:
>
> {
> "74657374": [["data", "{"foo":"bar"}", 1308209845388000]]
> }
>
> [default@foo] set transactions[test][data]='{"foo":"bar"}';
>
> I feared that storing data in a readable fashion would be a fateful idea.
>
> https://issues.apache.org/jira/browse/CASSANDRA-2780

Re: sstable2json2sstable bug with json data stored

Posted by Timo Nentwig <ti...@toptarif.de>.
On 6/15/11 17:41, Timo Nentwig wrote:
> (json can likely be boiled down even more...)

Any JSON (well, probably anything with quotes...) breaks it:

{
"74657374": [["data", "{"foo":"bar"}", 1308209845388000]]
}

[default@foo] set transactions[test][data]='{"foo":"bar"}';

I feared that storing data in a readable fashion would be a fateful idea.

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