[ https://issues.apache.org/jira/browse/THRIFT-749?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12852677#action_12852677 ]
David Reiss commented on THRIFT-749: ------------------------------------ I'd prefer not to make this change unless there is a compelling case for it. flush is an operation that can easily throw an exception, and it's best to avoid throwing exceptions from destructors. What is the problem with requiring and explicit flush? > C++ TBufferedTransports do not flush their buffers on delete > ------------------------------------------------------------ > > Key: THRIFT-749 > URL: https://issues.apache.org/jira/browse/THRIFT-749 > Project: Thrift > Issue Type: Bug > Components: Library (C++) > Affects Versions: 0.2, 0.3 > Environment: Cygwin 1.7.1 on Windows XP SP3, Thrift 0.2.0 & r760184 & > Trunk > Reporter: Tim Wilson-Brown > Priority: Trivial > Original Estimate: 24h > Remaining Estimate: 24h > > Edit: replaced 'close underlying transport' with 'flush buffers' > The C++ TBufferedTransports (such as TBufferedTransport) do not flush their > buffers on delete. > The workaround is to manually flush the TBufferedTransport before deleting > it. If the TBufferedTransport owned the last instance of the underlying > transport, it will be deleted and close itself. > This may be worth fixing - at the moment, substituting a buffered TSocket for > an unbuffered one changes the behaviour on delete. > Data may be buffered then lost when the TBufferedTransport is deleted. > This is undesirable - they should behave identically except for the > buffering. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.