An example scenario (that is now fixed in Pelops): Attempt to write a column with a null value Cassandra throws a TProtocolException which renders the connection useless for future operations Pelops returns the corrupt connection to the pool A second read operation is attempted with the corrupt connection and Cassandra throws an ApplicationException
A Pelops test case for this can be found here: https://github.com/s7/scale7-pelops/blob/3fe7584a24bb4b62b01897a814ef62415bd2fe43/src/test/java/org/scale7/cassandra/pelops/MutatorIntegrationTest.java#L262 Cheers, -- Dan Washusen On Tuesday, 19 April 2011 at 10:28 AM, Jonathan Ellis wrote: > Any idea what's causing the original TPE? > > On Mon, Apr 18, 2011 at 6:22 PM, Dan Washusen <d...@reactive.org> wrote: > > It turns out that once a TProtocolException is thrown from Cassandra the > > connection is useless for future operations. Pelops was closing connections > > when it detected TimedOutException, TTransportException and > > UnavailableException but not TProtocolException. We have now changed Pelops > > to close connections is all cases *except* NotFoundException. > > > > Cheers, > > -- > > Dan Washusen > > > > On Friday, 8 April 2011 at 7:28 AM, Dan Washusen wrote: > > > > Pelops uses a single connection per operation from a pool that is backed by > > Apache Commons Pool (assuming you're using Cassandra 0.7). I'm not saying > > it's perfect but it's NOT sharing a connection over multiple threads. > > Dan Hendry mentioned that he sees these errors. Is he also using Pelops? > > From his comment about retrying I'd assume not... > > > > -- > > Dan Washusen > > > > On Thursday, 7 April 2011 at 7:39 PM, Héctor Izquierdo Seliva wrote: > > > > El mié, 06-04-2011 a las 21:04 -0500, Jonathan Ellis escribió: > > > > "out of sequence response" is thrift's way of saying "I got a response > > for request Y when I expected request X." > > > > my money is on using a single connection from multiple threads. don't do > > that. > > > > I'm not using thrift directly, and my application is single thread, so I > > guess this is Pelops fault somehow. Since I managed to tame memory > > comsuption the problem has not appeared again, but it always happened > > during a stop-the-world GC. Could it be that the message was sent > > instead of being dropped by the server when the client assumed it had > > timed out? > > > > -- > Jonathan Ellis > Project Chair, Apache Cassandra > co-founder of DataStax, the source for professional Cassandra support > http://www.datastax.com >