Actually, it looks like you're probably looking at the bundled Thrift in
phpcassa 0.7.a.3.  This issue is fixed in Thrift trunk and the phpcassa
master branch.

On Wed, Mar 30, 2011 at 2:28 PM, Tyler Hobbs <ty...@datastax.com> wrote:

> Are you looking at Thrift trunk, the thrift package that ships with
> phpcassa 0.7.a.3, or the phpcassa master branch?
>
>
> On Wed, Mar 30, 2011 at 2:26 PM, William Oberman <ober...@civicscience.com
> > wrote:
>
>> Nevermind, the header of the file says it's an apache project, so I'll
>> contact them.  Though, if anyone else is running PHP and is worried about
>> dropped connections thrashing their server, apply this patch :-)
>>
>>
>> On Wed, Mar 30, 2011 at 3:18 PM, William Oberman <
>> ober...@civicscience.com> wrote:
>>
>>> I think I found a bug in the cassandra PHP client.  I'm using phpcassa,
>>> but the bug is in thrift itself, which I think that library phpcassa just
>>> wraps.  In any case, I was trying to test on my local machine, which has
>>> limited RAM, so I reduced the JVM heap size.  Of course I immediately had an
>>> OOM causing my local cassandra server to crash, but that caused my unit
>>> tests to stall at 100% CPU, which seemed weird to me.  I had to figure out
>>> why.  It seems that TSocket doesn't test for EOF (it's only checking for a
>>> socket timeout), causing a tight infinite loop when the connection
>>> disappears.  Checking for EOF in an else if seems like an easy fix, but
>>> given how deep this code is in the library I'll leave it to the experts.
>>>
>>> My diff of the file:
>>> @@ -255,6 +255,9 @@
>>>          if (true === $md['timed_out'] && false === $md['blocked']) {
>>>            throw new TTransportException('TSocket: timed out reading
>>> '.$len.' bytes from '.
>>>                                 $this->host_.':'.$this->port_);
>>> +        } else if(feof($this->handle_)) {
>>> +           throw new TTransportException('TSocket: EOF reading '.$len.'
>>> bytes from '.
>>> +                               $this->host_.':'.$this->port_);
>>>          } else {
>>>            $pre .= $buf;
>>>            $len -= $sz;
>>>
>>>
>>> --
>>> Will Oberman
>>> Civic Science, Inc.
>>> 3030 Penn Avenue., First Floor
>>> Pittsburgh, PA 15201
>>> (M) 412-480-7835
>>> (E) ober...@civicscience.com
>>>
>>
>>
>>
>> --
>> Will Oberman
>> Civic Science, Inc.
>> 3030 Penn Avenue., First Floor
>> Pittsburgh, PA 15201
>> (M) 412-480-7835
>> (E) ober...@civicscience.com
>>
>
>
>
> --
> Tyler Hobbs
> Software Engineer, DataStax <http://datastax.com/>
> Maintainer of the pycassa <http://github.com/pycassa/pycassa> Cassandra
> Python client library
>
>


-- 
Tyler Hobbs
Software Engineer, DataStax <http://datastax.com/>
Maintainer of the pycassa <http://github.com/pycassa/pycassa> Cassandra
Python client library

Reply via email to