[
https://issues.apache.org/jira/browse/THRIFT-867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13001463#comment-13001463
]
Nicholas Telford commented on THRIFT-867:
-----------------------------------------
On Arya's points on the best place to fix this:
* Arya's patch for the extension fixes a bug (namely that flush() gets called
when it shouldn't). Whether or not this causes things to break is besides the
point, it's unintended and should definitely be fixed.
* Having TFramedTransport write empty frames on flush, whether you're using
the extension or some other exotic protocol/transport, breaks servers that
adhere to the FramedTransport format. While I've not seen a specification for
this format, it seems implied that empty frames are not permitted. If this is
the case, we should definitely have TFramedTransport::flush() check the frame
isn't empty before writing it.
My argument for the second point is one of coupling: a method should never rely
on it's caller to call it in a particular order or validate it's state.
> PHP accelerator module's output transport is incompatible with
> TFramedTransport
> -------------------------------------------------------------------------------
>
> Key: THRIFT-867
> URL: https://issues.apache.org/jira/browse/THRIFT-867
> Project: Thrift
> Issue Type: Bug
> Components: PHP - Library
> Affects Versions: 0.4
> Reporter: Bryan Duxbury
> Fix For: 0.7
>
> Attachments: thrift-867.diff
>
>
> I think we've figured out the cause of everyone's problems with THRIFT-837.
> The patch itself is fine; however, in fixing that bug, we've exposed the fact
> that PHPOutputTransport erroneously calls down to the underlying PHP
> transport's flush() method every time the internal 8k buffer is flushed. This
> is fine for the buffered transport, but unacceptable for the framed
> transport, which should only be flushed once per RPC call.
> It seems like what we need to do is separate the "internal" buffer flushes
> from the "external" transport flushes. If we do that, everything should work
> out fine.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira