[ https://issues.apache.org/jira/browse/THRIFT-749?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tim Wilson-Brown updated THRIFT-749: ------------------------------------ Description: 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. was: The C++ TBufferedTransports (such as TBufferedTransport) do not close the underlying connection on delete. The workaround is to manually close the TBufferedTransport (which does close the underlying connection) before deleting it. This may be worth fixing - at the moment, substituting a buffered TSocket for an unbuffered one changes the behaviour on delete. This is undesirable - they should behave identically except for the buffering. Summary: C++ TBufferedTransports do not flush their buffers on delete (was: C++ TBufferedTransports do not close the underlying connection on delete) I understand the behaviour better now - I'm still getting used to shared_ptr. However, AFAICT the lack of a flush() on delete is still an issue - so I've updated the title and description. > 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.