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

[jira] Created: (CASSANDRA-2132) incorrect live endpoint checks in StorageProxy.getRangeSlice() and scan()

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

        

[jira] Resolved: (CASSANDRA-2132) incorrect live endpoint checks in StorageProxy.getRangeSlice() and scan()

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-2132?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis resolved CASSANDRA-2132.
---------------------------------------

    Resolution: Duplicate

fixed in the patch for CASSANDRA-2069

> 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