cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aaron Morton (JIRA)" <j...@apache.org>
Subject [jira] Created: (CASSANDRA-2132) incorrect live endpoint checks in StorageProxy.getRangeSlice() and scan()
Date Mon, 07 Feb 2011 22:56:57 GMT
incorrect live endpoint checks in StorageProxy.getRangeSlice() and scan()
-------------------------------------------------------------------------

                 Key: CASSANDRA-2132
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2132
             Project: Cassandra
          Issue Type: Bug
          Components: Core
    Affects Versions: 0.7.1
            Reporter: Aaron Morton


If a get_range_slice() is started without any live endpoints the following appears in the
logs and the request fails with an ApplicationError rather than an UnavailableError 

ERROR [pool-1-thread-61] 2011-02-04 16:11:30,725 Cassandra.java (line org.apache.cassandra.thrift.Cassandra$Processor)
Internal error processing get_range_slices
java.lang.AssertionError
        at org.apache.cassandra.service.RangeSliceResponseResolver.<init>(RangeSliceResponseResolver.java:52)
        at org.apache.cassandra.service.StorageProxy.getRangeSlice(StorageProxy.java:459)
        at org.apache.cassandra.thrift.CassandraServer.get_range_slices(CassandraServer.java:473)
        at org.apache.cassandra.thrift.Cassandra$Processor$get_range_slices.process(Cassandra.java:2868)
        at org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2555)
        at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:167)
        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)

I think we need to...

- Remove the assertion in RangeSliceResponseResolver ctor
- call handler.assureSufficientLiveNodes() after line 733 in  StorageProxy.getRangeSlice()

Also StorageProxy.scan does a manual check of the live node count at line 1016, this means
does not use the special logic for DatacenterReadCallback.assureSufficientLiveNodes()

I've not checked this in the trunk. Will not have time to work on these during the day. 


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

        

Mime
View raw message