BUG: secondaryIndexes AND multiple index expressions can cause timesouts
-------------------------------------------------------------------------
Key: CASSANDRA-1623
URL: https://issues.apache.org/jira/browse/CASSANDRA-1623
Project: Cassandra
Issue Type: Bug
Components: Core
Affects Versions: 0.7 beta 2
Environment: centos 5.5
Reporter: Jason Tanner
1. Given this Column Family definition
Column Family Name: Requests
Column Family Type: Standard
Column Sorted By: org.apache.cassandra.db.marshal.UTF8Type
Column Metadata:
Column Name: requested
Validation Class: org.apache.cassandra.db.marshal.UTF8Type
Index Type: KEYS
Column Name: requestor
Validation Class: org.apache.cassandra.db.marshal.UTF8Type
Index Type: KEYS
If I have an entry that has the following column/value pairs:
"request-uuid1" : [ { "requested","person-uuid1" }, {
"requestor","person-uuid2"}, { "is_confirmed","true" } ]
If I do an index lookup (pseudo coded) :
get_index_slices( Connection,
ColumnParent.column_family="Requests",
[ { "requested","eq", "person-uuid1" }, {
"is_confirmed","eq", "false" } ], % Index Expressions
"",100, % StartKey, KeyCount
"","",false,100 % StartCol, EndCol,
Reversed, ColCount )
for "requested" = "person-uuid1" and "is_confirmed" = false
then I get the following entries in my log and the request times out along with
all other requests on all clients.
DEBUG [pool-1-thread-10] 2010-10-15 19:00:27,878 CassandraServer.java (line
531) scan
DEBUG [pool-1-thread-10] 2010-10-15 19:00:27,897 StorageProxy.java (line 563)
restricted single token match for query [0,0]
DEBUG [pool-1-thread-10] 2010-10-15 19:00:27,897 StorageProxy.java (line 649)
scan ranges are [0,0]
DEBUG [pool-1-thread-10] 2010-10-15 19:00:27,925 StorageProxy.java (line 669)
reading org.apache.cassandra.db.indexscancomm...@42a6eb from
5...@localhost/127.0.0.1
DEBUG [ReadStage:2] 2010-10-15 19:00:27,931 SliceQueryFilter.java (line 121)
collecting 0 of 1: null:false:0...@1287103291
DEBUG [ReadStage:2] 2010-10-15 19:00:27,933 SliceQueryFilter.java (line 121)
collecting 0 of 2147483647: is_confirmed:false:4...@1287103291
DEBUG [ReadStage:2] 2010-10-15 19:00:27,934 SliceQueryFilter.java (line 121)
collecting 1 of 2147483647: request_type:false:6...@1287103291
DEBUG [ReadStage:2] 2010-10-15 19:00:27,935 SliceQueryFilter.java (line 121)
collecting 2 of 2147483647: requested:false:5...@1287103291
DEBUG [ReadStage:2] 2010-10-15 19:00:27,935 SliceQueryFilter.java (line 121)
collecting 3 of 2147483647: requested_network:false:5...@1287103291
DEBUG [ReadStage:2] 2010-10-15 19:00:27,936 SliceQueryFilter.java (line 121)
collecting 4 of 2147483647: requestor:false:5...@1287103291
DEBUG [ReadStage:2] 2010-10-15 19:00:27,937 SliceQueryFilter.java (line 121)
collecting 5 of 2147483647: requestor_network:false:5...@1287103291
DEBUG [ReadStage:2] 2010-10-15 19:00:27,942 SliceQueryFilter.java (line 121)
collecting 0 of 1: null:false:0...@1287103291
DEBUG [ReadStage:2] 2010-10-15 19:00:27,943 SliceQueryFilter.java (line 121)
collecting 0 of 1: null:false:0...@1287103291
DEBUG [ReadStage:2] 2010-10-15 19:00:27,945 SliceQueryFilter.java (line 121)
collecting 0 of 1: null:false:0...@1287103291
DEBUG [ReadStage:2] 2010-10-15 19:00:27,946 SliceQueryFilter.java (line 121)
collecting 0 of 1: null:false:0...@1287103291
this last line repeats forever until I stop the server.
If instead I do the lookup where both terms match or just the last term matches
then nothing goes wrong, I get a valid (empty or otherwise) result set.
It only seems to happen if the 2nd expression does not match.
I am using the very latest code from trunk.
Jason
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.