fauna/cassandra — Issue #124: Concurrent requests crash operations
Author: rb2k
Created: 2011-10-11 22:45:44+00:00
State: open

I have two ruby processes: one process bulk inserting data (long running), the other process searching (manually launched during the insert)

If I launch a search during the insertion, one of the two jobs will die.
Either the search:

/Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift-0.7.0/lib/thrift/transport/socket.rb:109:in `read': CassandraThrift::Cassandra::Client::TransportException
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift-0.7.0/lib/thrift/transport/base_transport.rb:87:in `read_all'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift-0.7.0/lib/thrift/transport/framed_transport.rb:104:in `read_frame'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift-0.7.0/lib/thrift/transport/framed_transport.rb:69:in `read_into_buffer'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift-0.7.0/lib/thrift/protocol/binary_protocol.rb:190:in `read_i32'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift-0.7.0/lib/thrift/protocol/binary_protocol.rb:116:in `read_message_begin'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift-0.7.0/lib/thrift/client.rb:45:in `receive_message'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/cassandra-0.12.1/vendor/0.8/gen-rb/cassandra.rb:165:in `recv_get_indexed_slices'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/cassandra-0.12.1/vendor/0.8/gen-rb/cassandra.rb:157:in `get_indexed_slices'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift_client-0.7.1/lib/thrift_client/abstract_thrift_client.rb:150:in `handled_proxy'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift_client-0.7.1/lib/thrift_client/abstract_thrift_client.rb:60:in `get_indexed_slices'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/cassandra-0.12.1/lib/cassandra/protocol.rb:117:in `_get_indexed_slices'
from /Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/cassandra-0.12.1/lib/cassandra/cassandra.rb:982:in `get_indexed_slices'
from cassandra-search.rb:15:in `

'

or the insertion:

#
/Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift-0.7.0/lib/thrift/transport/socket.rb:77:in `write'
/Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift-0.7.0/lib/thrift/transport/framed_transport.rb:96:in `flush'
/Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift-0.7.0/lib/thrift/client.rb:41:in `send_message'
/Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/cassandra-0.12.1/vendor/0.8/gen-rb/cassandra.rb:247:in `send_batch_mutate'
/Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/cassandra-0.12.1/vendor/0.8/gen-rb/cassandra.rb:242:in `batch_mutate'
/Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift_client-0.7.1/lib/thrift_client/abstract_thrift_client.rb:150:in `handled_proxy'
/Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/thrift_client-0.7.1/lib/thrift_client/abstract_thrift_client.rb:60:in `batch_mutate'
/Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/cassandra-0.12.1/lib/cassandra/protocol.rb:7:in `_mutate'
/Users/mseeger/.rvm/gems/ruby-1.9.3-rc1/gems/cassandra-0.12.1/lib/cassandra/cassandra.rb:856:in `batch'

They are NOT running in the same vm, those are completely different processes that share no state