kewl, 

> * Row is not deleted (other columns can be read, row survives compaction
> with GCGraceSeconds=0)

IIRC row tombstones can hang around for a while (until gc grace has passed), 
and they only have an effect on columns that have a lower timstamp. So it's 
possible to read columns from a row with a tombstone. 

Can you read the column using a slice range rather than specifying it's name ? 

Aaron

-----------------
Aaron Morton
Freelance Cassandra Developer
@aaronmorton
http://www.thelastpickle.com

On 11/10/2011, at 11:15 PM, Thomas Richter wrote:

> Hi Aaron,
> 
> i invalidated the caches but nothing changed. I didn't get the mentioned
> log line either, but as I read the code SliceByNamesReadCommand uses
> NamesQueryFilter and not SliceQueryFilter.
> 
> Next, there is only one SSTable.
> 
> I can rule out that the row is deleted because I deleted all other rows
> in that CF to reduce data size and speed up testing. I set
> GCGraceSeconds to zero and ran a compaction. All other rows are gone,
> but i can still access at least one column from the left row.
> So as far as I understand it, there should not be a tombstone on row level.
> 
> To make it a list:
> 
> * One SSTable, one row
> *
> * Row is not deleted (other columns can be read, row survives compaction
> with GCGraceSeconds=0)
> * Most columns can be read by get['row']['col'] from cassandra-cli
> * Some columns can not be read by get['row']['col'] from cassandra-cli
> but can be found in output of sstable2json
> * unreadable data survives compaction with GCGraceSeconds=0 (checked
> with sstable2json)
> * Invalidation caches does not help
> * Nothing in the logs
> 
> Does that point into any direction where i should look next?
> 
> Best,
> 
> Thomas
> 
> On 10/11/2011 10:30 AM, aaron morton wrote:
>> Nothing jumps out. The obvious answer is that the column has been deleted. 
>> Did you check all the SSTables ?
>> 
>> It looks like query returned from row cache, otherwise you would see this as 
>> well…
>> 
>> DEBUG [ReadStage:34] 2011-10-11 21:11:11,484 SliceQueryFilter.java (line 
>> 123) collecting 0 of 2147483647: 1318294191654059:false:354@1318294191654861
>> 
>> Which would mean a version of the column was found. 
>> 
>> If you invalidate the cache with nodetool and run the query and the log 
>> message appears it will mean the column was read from (all of the) sstables. 
>> If you do not get a column returned I would say there is a tombstone in 
>> place. It's either a row level or a column level one.  
>> 
>> Hope that helps. 
>> 
>> -----------------
>> Aaron Morton
>> Freelance Cassandra Developer
>> @aaronmorton
>> http://www.thelastpickle.com
>> 
>> On 11/10/2011, at 10:35 AM, Thomas Richter wrote:
>> 
>>> Hi Aaron,
>>> 
>>> normally we use hector to access cassandra, but for debugging I switched
>>> to cassandra-cli.
>>> 
>>> Column can not be read by a simple
>>> get CFName['rowkey']['colname'];
>>> 
>>> Response is "Value was not found"
>>> if i query another column, everything is just fine.
>>> 
>>> Serverlog for unsuccessful read (keyspace and CF names replaced):
>>> 
>>> DEBUG [pool-1-thread-1] 2011-10-10 23:15:29,739 CassandraServer.java
>>> (line 280) get
>>> 
>>> DEBUG [pool-1-thread-1] 2011-10-10 23:15:29,744 StorageProxy.java (line
>>> 320) Command/ConsistencyLevel is
>>> SliceByNamesReadCommand(table='Keyspace',
>>> key=61636162626139322d396638312d343562382d396637352d393162303337383030393762,
>>> columnParent='QueryPath(columnFamilyName='ColumnFamily',
>>> superColumnName='null', columnName='null')',
>>> columns=[574c303030375030,])/ONE
>>> 
>>> DEBUG [pool-1-thread-1] 2011-10-10 23:15:29,750 ReadCallback.java (line
>>> 86) Blockfor/repair is 1/true; setting up requests to localhost/127.0.0.1
>>> 
>>> DEBUG [pool-1-thread-1] 2011-10-10 23:15:29,750 StorageProxy.java (line
>>> 343) reading data locally
>>> 
>>> DEBUG [ReadStage:33] 2011-10-10 23:15:29,751 StorageProxy.java (line
>>> 448) LocalReadRunnable reading SliceByNamesReadCommand(table='Keyspace',
>>> key=61636162626139322d396638312d343562382d396637352d393162303337383030393762,
>>> columnParent='QueryPath(columnFamilyName='ColumnFamily',
>>> superColumnName='null', columnName='null')', columns=[574c303030375030,])
>>> 
>>> DEBUG [pool-1-thread-1] 2011-10-10 23:15:29,818 StorageProxy.java (line
>>> 393) Read: 67 ms.
>>> 
>>> Log looks fine to me, but no result is returned.
>>> 
>>> Best,
>>> 
>>> Thomas
>>> 
>>> On 10/10/2011 10:00 PM, aaron morton wrote:
>>>> How are they unreadable ? You need to go into some details about what is 
>>>> going wrong. 
>>>> 
>>>> What sort of read ? 
>>>> What client ? 
>>>> What is in the logging on client and server side ? 
>>>> 
>>>> 
>>>> Try turning the logging up to DEBUG on the server to watch what happens. 
>>>> 
>>>> Cheers
>>>> 
>>>> -----------------
>>>> Aaron Morton
>>>> Freelance Cassandra Developer
>>>> @aaronmorton
>>>> http://www.thelastpickle.com
>>>> 
>>>> On 10/10/2011, at 9:23 PM, Thomas Richter wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> no errors in the server logs. The columns are unreadable on all nodes at
>>>>> any consistency level (ONE, QUORUM, ALL). We started with 0.7.3 and
>>>>> upgraded to 0.7.6-2 two months ago.
>>>>> 
>>>>> Best,
>>>>> 
>>>>> Thomas
>>>>> 
>>>>> On 10/10/2011 10:03 AM, aaron morton wrote:
>>>>>> What error are you seeing  in the server logs ? Are the columns 
>>>>>> unreadable at all Consistency Levels ? i.e. are the columns unreadable 
>>>>>> on all nodes.
>>>>>> 
>>>>>> What is the upgrade history of the cluster ? What version did it start 
>>>>>> at ? 
>>>>>> 
>>>>>> Cheers
>>>>>> 
>>>>>> 
>>>>>> -----------------
>>>>>> Aaron Morton
>>>>>> Freelance Cassandra Developer
>>>>>> @aaronmorton
>>>>>> http://www.thelastpickle.com
>>>>>> 
>>>>>> On 10/10/2011, at 7:42 AM, Thomas Richter wrote:
>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> here is some further information. Compaction did not help, but data is
>>>>>>> still there when I dump the row with sstable2json.
>>>>>>> 
>>>>>>> Best,
>>>>>>> 
>>>>>>> Thomas
>>>>>>> 
>>>>>>> On 10/08/2011 11:30 PM, Thomas Richter wrote:
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> we are running a 3 node cassandra (0.7.6-2) cluster and some of our
>>>>>>>> column families contain quite large rows (400k+ columns, 4-6GB row 
>>>>>>>> size).
>>>>>>>> Replicaton factor is 3 for all keyspaces. The cluster is running fine
>>>>>>>> for several months now and we never experienced any serious trouble.
>>>>>>>> 
>>>>>>>> Some days ago we noticed, that some previously written columns could 
>>>>>>>> not
>>>>>>>> be read. This does not always happen, and only some dozen columns out 
>>>>>>>> of
>>>>>>>> 400k are affected.
>>>>>>>> 
>>>>>>>> After ruling out application logic as a cause I dumped the row in
>>>>>>>> question with sstable2json and the columns are there (and are not 
>>>>>>>> marked
>>>>>>>> for deletion).
>>>>>>>> 
>>>>>>>> Next thing was setting up a fresh single node cluster and copying the
>>>>>>>> column family data to that node. Columns could not be read either.
>>>>>>>> Right now I'm running a nodetool compact for the cf to see if data 
>>>>>>>> could
>>>>>>>> be read afterwards.
>>>>>>>> 
>>>>>>>> Is there any explanation for such behavior? Are there any suggestions
>>>>>>>> for further investigation?
>>>>>>>> 
>>>>>>>> TIA,
>>>>>>>> 
>>>>>>>> Thomas
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to