Skip to content

Commit edba5fa

Browse files
tobbe76mostynb
authored andcommitted
Use original "Return zst Decoder to sync.pool when finished #770" fix
This fix does not suffer from the segfault seen under high load with #771.
1 parent a563ac2 commit edba5fa

File tree

1 file changed

+2
-8
lines changed

1 file changed

+2
-8
lines changed

server/grpc_bytestream.go

+2-8
Original file line numberDiff line numberDiff line change
@@ -365,12 +365,6 @@ func (s *grpcServer) Write(srv bytestream.ByteStream_WriteServer) error {
365365
resourceNameChan := make(chan string, 1)
366366

367367
cmp := casblob.Identity
368-
var dec *syncpool.DecoderWrapper
369-
defer func() {
370-
if dec != nil {
371-
dec.Close()
372-
}
373-
}()
374368

375369
go func() {
376370
firstIteration := true
@@ -436,8 +430,7 @@ func (s *grpcServer) Write(srv bytestream.ByteStream_WriteServer) error {
436430

437431
var rc io.ReadCloser = pr
438432
if cmp == casblob.Zstandard {
439-
var ok bool
440-
dec, ok = decoderPool.Get().(*syncpool.DecoderWrapper)
433+
dec, ok := decoderPool.Get().(*syncpool.DecoderWrapper)
441434
if !ok {
442435
s.accessLogger.Printf("GRPC BYTESTREAM WRITE FAILED: %s", errDecoderPoolFail)
443436
recvResult <- errDecoderPoolFail
@@ -453,6 +446,7 @@ func (s *grpcServer) Write(srv bytestream.ByteStream_WriteServer) error {
453446
}
454447

455448
go func() {
449+
defer rc.Close()
456450
err := s.cache.Put(srv.Context(), cache.CAS, hash, size, rc)
457451
putResult <- err
458452
}()

0 commit comments

Comments
 (0)