You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jonathan Ellis (JIRA)" <ji...@apache.org> on 2011/02/23 15:15:38 UTC

[jira] Assigned: (CASSANDRA-2225) Cannot get columns from sstable generated by json2sstable

     [ https://issues.apache.org/jira/browse/CASSANDRA-2225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis reassigned CASSANDRA-2225:
-----------------------------------------

    Assignee: Pavel Yaskevich

> Cannot get columns from sstable generated by json2sstable
> ---------------------------------------------------------
>
>                 Key: CASSANDRA-2225
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2225
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.7.2
>         Environment: Fedora 11, Intel Core i5, JDK 1.6.0_20
>            Reporter: Muga Nishizawa
>            Assignee: Pavel Yaskevich
>             Fix For: 0.7.3
>
>         Attachments: cassandra_sample_insert.py, create_table.cli
>
>
> I cannot get columns on Cassandra that has sstable generated by json2sstable.  It returns "null" as its result.  Columns that are associated to specified row keys are stored on Cassandra in advance.  Cassandra outputs following exception to system.log.  
> This Cassandra has sstable that was generated by json2sstable.  I stored data in Cassandra, shut it down, then create JSON data from its sstable with sstable2json and I generate sstable from JSON data with json2sstable in advance.  I could check that columns are included in JSON data file.  But columns could not be acquired from the generated sstable.  This problem occurs with or without using Pavel's patch on CASSANDRA-2188.  
> I attached programs so that you can know detail of data stored in Cassandra.  You will be able to reproduce this problem by executing attached programs, sstable2json and json2sstable.  For example, I could not get columns associated to row key "030yyyyyyyyyy" from sstable generated by json2sstable.  "null" will be returned as result.  Cassandra will output exception to system.log.  
> - 1. Start Cassandra daemon on localhost (number of thrift port is 9160)
> - 2. Create keyspace and column family, according to "create_table.cli"
> - 3. Execute "cassandra_sample_insert.py", storing pairs of row keys and super columns
>  "cassandra_sample_insert.py" requires pycassa
> - 4. Shutdown Cassandra daemon
> - 5. Execute sstable2json and create JSON data
> - 6. Execute json2sstable and generate sstable from JSON data
> - 7. Start Cassandra daemon again
> - 8. Get columns related to row key "030yyyyyyyyyy" (but, I could not get)
> {quote}
>  ERROR 15:45:18,228 Fatal exception in thread Thread[ReadStage:2,5,main]
>  java.io.IOError: org.apache.cassandra.db.ColumnSerializer$CorruptColumnException: invalid column name length 0
>   at org.apache.cassandra.io.util.ColumnIterator.deserializeNext(ColumnSortedMap.java:246)
>   at org.apache.cassandra.io.util.ColumnIterator.next(ColumnSortedMap.java:262)
>   at org.apache.cassandra.io.util.ColumnIterator.next(ColumnSortedMap.java:1)
>   at java.util.concurrent.ConcurrentSkipListMap.buildFromSorted(ConcurrentSkipListMap.java:1493)
>   at java.util.concurrent.ConcurrentSkipListMap.<init>(ConcurrentSkipListMap.java:1443)
>   at org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:366)
>   at org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:1)
>   at org.apache.cassandra.db.columniterator.SimpleSliceReader.computeNext(SimpleSliceReader.java:79)
>   at org.apache.cassandra.db.columniterator.SimpleSliceReader.computeNext(SimpleSliceReader.java:1)
>   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:136)
>   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:131)
>   at org.apache.cassandra.db.columniterator.SSTableSliceIterator.hasNext(SSTableSliceIterator.java:108)
>   at org.apache.commons.collections.iterators.CollatingIterator.anyHasNext(CollatingIterator.java:364)
>   at org.apache.commons.collections.iterators.CollatingIterator.hasNext(CollatingIterator.java:217)
>   at org.apache.cassandra.utils.ReducingIterator.computeNext(ReducingIterator.java:55)
>   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:136)
>   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:131)
>   at org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:118)
>   at org.apache.cassandra.db.filter.QueryFilter.collectCollatedColumns(QueryFilter.java:142)
>   at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1290)
>   at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1167)
>   at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1095)
>   at org.apache.cassandra.db.Table.getRow(Table.java:384)
>   at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:63)
>   at org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:473)
>   at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
>   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:619)
>  Caused by: org.apache.cassandra.db.ColumnSerializer$CorruptColumnException: invalid column name length 0
>   at org.apache.cassandra.db.ColumnSerializer.deserialize(ColumnSerializer.java:68)
>   at org.apache.cassandra.io.util.ColumnIterator.deserializeNext(ColumnSortedMap.java:242)
>   ... 28 more
> {quote}

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira