From 7a0303f7ae3010bb18d69502d63d16332756fc9a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 10 Feb 2017 20:49:37 +0100 Subject: [PATCH] s3: Make sure to return connection token --- src/restic/backend/s3/s3.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/restic/backend/s3/s3.go b/src/restic/backend/s3/s3.go index 410997bc7..bd79dda13 100644 --- a/src/restic/backend/s3/s3.go +++ b/src/restic/backend/s3/s3.go @@ -155,11 +155,16 @@ func (be *s3) Load(h restic.Handle, length int, offset int64) (io.ReadCloser, er objName := be.s3path(h) + // get token for connection <-be.connChan obj, err := be.client.GetObject(be.bucketname, objName) if err != nil { debug.Log(" err %v", err) + + // return token + be.connChan <- struct{}{} + return nil, errors.Wrap(err, "client.GetObject") } @@ -170,12 +175,18 @@ func (be *s3) Load(h restic.Handle, length int, offset int64) (io.ReadCloser, er _, err = obj.Seek(offset, 0) if err != nil { _ = obj.Close() + + // return token + be.connChan <- struct{}{} + return nil, errors.Wrap(err, "obj.Seek") } rd := wrapReader{ ReadCloser: obj, f: func() { + debug.Log("Close()") + // return token be.connChan <- struct{}{} }, } @@ -183,6 +194,7 @@ func (be *s3) Load(h restic.Handle, length int, offset int64) (io.ReadCloser, er } defer func() { + // return token be.connChan <- struct{}{} }()