You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "pirDOL (JIRA)" <ji...@apache.org> on 2017/07/05 13:55:00 UTC

[jira] [Created] (THRIFT-4245) Golang TFramedTransport's writeBuffer increases if writes to transport failed

pirDOL created THRIFT-4245:
------------------------------

             Summary: Golang TFramedTransport's writeBuffer increases if writes to transport failed
                 Key: THRIFT-4245
                 URL: https://issues.apache.org/jira/browse/THRIFT-4245
             Project: Thrift
          Issue Type: Bug
            Reporter: pirDOL


https://github.com/apache/thrift/blob/master/lib/go/thrift/framed_transport.go#L143
if p.transport.Write fails, p.buf will not be truncated, which leads to thrift client's memory increasing forever. 

Is it more reasonable to truncate p.buf when write to transport fails?

{code:golang}
func (p *TFramedTransport) Flush() error {
	size := p.buf.Len()
	buf := p.buffer[:4]
	binary.BigEndian.PutUint32(buf, uint32(size))
	_, err := p.transport.Write(buf)
	if err != nil {
		return NewTTransportExceptionFromError(err)
	}
	if size > 0 {
		if n, err := p.buf.WriteTo(p.transport); err != nil {
			print("Error while flushing write buffer of size ", size, " to transport, only wrote ", n, " bytes: ", err.Error(), "\n")
			return NewTTransportExceptionFromError(err)
		}
	}
	err = p.transport.Flush()
	return NewTTransportExceptionFromError(err)
}
{code}




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)