diff --git a/pkg/blobstore/grpcservers/byte_stream_server.go b/pkg/blobstore/grpcservers/byte_stream_server.go index 8e377bb7..a80baa72 100644 --- a/pkg/blobstore/grpcservers/byte_stream_server.go +++ b/pkg/blobstore/grpcservers/byte_stream_server.go @@ -9,6 +9,7 @@ import ( "github.com/buildbarn/bb-storage/pkg/blobstore" "github.com/buildbarn/bb-storage/pkg/blobstore/buffer" "github.com/buildbarn/bb-storage/pkg/digest" + "github.com/buildbarn/bb-storage/pkg/util" bb_zstd "github.com/buildbarn/bb-storage/pkg/zstd" "google.golang.org/genproto/googleapis/bytestream" @@ -220,9 +221,8 @@ func (s *byteStreamServer) writeZstd(stream bytestream.ByteStream_WriteServer, r zstdReader, err := bb_zstd.NewReadCloser(ctx, s.zstdPool, streamReader) if err != nil { - return status.Errorf(codes.ResourceExhausted, "Failed to acquire ZSTD decoder: %v", err) + return util.StatusWrap(err, "Failed to acquire ZSTD decoder") } - defer zstdReader.Close() if err := s.blobAccess.Put( ctx, diff --git a/pkg/zstd/metrics_pool.go b/pkg/zstd/metrics_pool.go index 08e204f5..6b3c8d0d 100644 --- a/pkg/zstd/metrics_pool.go +++ b/pkg/zstd/metrics_pool.go @@ -126,7 +126,11 @@ type metricsEncoder struct { } func (e *metricsEncoder) Close() error { + if e.Encoder == nil { + return nil + } err := e.Encoder.Close() + e.Encoder = nil e.releases.Inc() return err } @@ -137,6 +141,10 @@ type metricsDecoder struct { } func (d *metricsDecoder) Close() { + if d.Decoder == nil { + return + } d.Decoder.Close() + d.Decoder = nil d.releases.Inc() }