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