[ 
https://issues.apache.org/jira/browse/THRIFT-749?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12852698#action_12852698
 ] 

Adam Simpkins commented on THRIFT-749:
--------------------------------------

Simply discarding the data in wBuf_ seems like a bug, and worse than attempting
to flush it and possibly raising an exception.

It seems like the TBufferedTransport and TFramedTransport destructors should
write out any unflushed data in their buffers, but not call flush() on the
underlying transport.  (The underlying transport should eventually flush the
data before it is closed, and calling flush() here just adds unnecessary cost.)

Callers should still be encouraged to explicitly call flush() before destroying
any transport.  If they do so, the destructor still will never throw an
exception.

> 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.

Reply via email to