[
https://issues.apache.org/jira/browse/THRIFT-638?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nicholas Telford updated THRIFT-638:
------------------------------------
Attachment: thrift-tsocket-638-0002.patch
Take two of the patch:
* Fixes typo on a variable name (thanks Tyler!)
* readAll($len) now blocks until the requested bytes have all been read. I've
inferred this behaviour from the code that calls it, so if I'm mistaken, let me
know.
* Improved comments on TSocket::read() and TSocket::readAll() to be more
explicit about the blocking behaviour of each.
At first glance, it may seem as though readAll() will tie up CPU in an infinite
loop if there's no data available to read on the socket (since
stream_socket_recv() is "unbuffered") - however, the underlying recv() syscall
blocks until _some_ data arrives on the socket, making this not a problem.
I've tested this best I can against the PHP test suite, but the test suite
seems to be a bit of a mystery, so if anyone has any pointers on using it I'd
love to hear it.
> BufferedTransport + C extensions block until recv timeout is reached on last
> fread call
> ---------------------------------------------------------------------------------------
>
> Key: THRIFT-638
> URL: https://issues.apache.org/jira/browse/THRIFT-638
> Project: Thrift
> Issue Type: Bug
> Components: PHP - Library
> Affects Versions: 0.2
> Reporter: Chris Goffinet
> Fix For: 0.7
>
> Attachments: 0001-Replace-freads-with-stream_socket_recvfrom.patch,
> 0002-tocket-read-meta-data-check.diff, thrift-tsocket-638-0002.patch,
> thrift-tsocket-638.patch
>
>
> I wanted to throw this out if any other folks experience this later on. At
> Digg we've been using the BufferedTransport + C extension of Thrift in PHP.
> Every so often, we will see spikes in latency increases on RPC calls that we
> know have acceptable response times (<200ms). This seems to happen based on
> how much data is being sent back over the wire. This is more of a PHP
> problem, but can be corrected in Thrift's PHP library for folks who don't
> want to upgrade PHP. I am still waiting to see if it's corrected in later
> versions (we use 5.2.9).
> http://bonsai.php.net/bug.php?id=42720
> Replacing the fread statements in TSocket.php with stream_socket_recvfrom
> correct this behavior so that calls do not wait until they hit the recv
> timeout.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira