Merge pull request #1452 from hashicorp/f-shrink

consul: shrink yamux recv buffer on idle streams
This commit is contained in:
James Phillips 2015-12-01 08:27:48 -08:00
commit f109e72390
1 changed files with 6 additions and 0 deletions

View File

@ -103,6 +103,12 @@ func (c *Conn) returnClient(client *StreamClient) {
if c.clients.Len() < c.pool.maxStreams && atomic.LoadInt32(&c.shouldClose) == 0 { if c.clients.Len() < c.pool.maxStreams && atomic.LoadInt32(&c.shouldClose) == 0 {
c.clients.PushFront(client) c.clients.PushFront(client)
didSave = true didSave = true
// If this is a Yamux stream, shrink the internal buffers so that
// we can GC the idle memory
if ys, ok := client.stream.(*yamux.Stream); ok {
ys.Shrink()
}
} }
c.clientLock.Unlock() c.clientLock.Unlock()
if !didSave { if !didSave {