[ https://issues.apache.org/jira/browse/THRIFT-1228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nathaniel Cook updated THRIFT-1228: ----------------------------------- Attachment: thrift-1228.patch > The php accelerator module calls flush incorrectly > -------------------------------------------------- > > Key: THRIFT-1228 > URL: https://issues.apache.org/jira/browse/THRIFT-1228 > Project: Thrift > Issue Type: Bug > Components: PHP - Library > Affects Versions: 0.7 > Reporter: Nathaniel Cook > Labels: php > Attachments: thrift-1228.patch > > > The php accelerator module calls flush on the transport when its internal > buffer is full. However it should only write its internal buffer to the > transport and flush to the transport when flush is explicitly called. > I ran into this problem because I am using thrift to send data from php to > java using a THsHaServer in java which requires the use of a > TFramedTransport. As a result of this incorrect behavior, partial messages > where sent to the THsHaServer and it couldn't handle them. > The php extension has an internal buffer of some size (8K by default). When > this internal buffer fills up the extension would write its buffer to the > transport and call flush on the transport. So messages that are greater than > 8K would be broken up and sent it different frames to the THsHAServer causing > errors. > The correct behavior is for the php extension to just call write on its > transport when its internal buffer is full and then to call flush once the > message is complete. I have submitted a patch that fixes this bug. I created > a new protected method on the PHPOutputTransport called internalFlush that > just writes the internal buffer to the transport. This way flush is only > called when a message is complete and the internal buffer can get flushed to > the PHP transport object when it is full. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira