Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 70FFD200CC2 for ; Wed, 5 Jul 2017 16:07:04 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 6F6EB1635BA; Wed, 5 Jul 2017 14:07:04 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id B5D4C1635B9 for ; Wed, 5 Jul 2017 16:07:03 +0200 (CEST) Received: (qmail 29461 invoked by uid 500); 5 Jul 2017 14:07:02 -0000 Mailing-List: contact dev-help@thrift.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@thrift.apache.org Delivered-To: mailing list dev@thrift.apache.org Received: (qmail 29440 invoked by uid 99); 5 Jul 2017 14:07:02 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Jul 2017 14:07:02 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id 2C7B6C059A for ; Wed, 5 Jul 2017 14:07:02 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -99.201 X-Spam-Level: X-Spam-Status: No, score=-99.201 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id CRqV4tWmZOtl for ; Wed, 5 Jul 2017 14:07:01 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id D2C605F6BE for ; Wed, 5 Jul 2017 14:07:00 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 518FDE0012 for ; Wed, 5 Jul 2017 14:07:00 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 10A1B2460E for ; Wed, 5 Jul 2017 14:07:00 +0000 (UTC) Date: Wed, 5 Jul 2017 14:07:00 +0000 (UTC) From: "pirDOL (JIRA)" To: dev@thrift.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (THRIFT-4245) Golang TFramedTransport's writeBuffer increases if writes to transport failed MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Wed, 05 Jul 2017 14:07:04 -0000 [ https://issues.apache.org/jira/browse/THRIFT-4245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] pirDOL updated THRIFT-4245: --------------------------- Description: 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? here are my pull request, https://github.com/apache/thrift/pull/1303 i'm new in github&jira, if more details are needed, please tell me, thx. {code:none} 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} was: 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:none} 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} > 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? here are my pull request, https://github.com/apache/thrift/pull/1303 > i'm new in github&jira, if more details are needed, please tell me, thx. > {code:none} > 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)