Hi all,
I'm using Thrift inside Cassandra, and I'm seeing conditions where I receive
lots of these error messages:
problem running get_slice: $VAR1 = bless( {
'code' => 0,
'message' => 'TSocket: timed out reading 4 bytes from
server-ip:9160'
}, 'Thrift::TException' );
get_slice is the cassandra call. The TSocket exception is thrown from
http://svn.apache.org/repos/asf/incubator/thrift/trunk/lib/perl/lib/Thrift/Socket.pm
The issue seems to be in the handling of read(), readAll(), and write().
The code checks to see if the $self->{'handle'} variable (which is an
IO::Select object) is defined. However, it seems possible for an IO::Select
object to be defined, but to have no handles that are valid or connected.
It seems that the code could be a bit more robust in checking for a
condition where the handle is not open, and throw a more explicit exception.
Then it can check for data in the Exception handle.
I'm happy to create a patch for it, but before I do so, is there a reason
why the code doesn't currently check for this error condition?
Thanks
Dave Viner