10467: Fix context error not propagated.
authorTom Clegg <tom@curoverse.com>
Mon, 7 Nov 2016 00:44:22 +0000 (19:44 -0500)
committerTom Clegg <tom@curoverse.com>
Mon, 7 Nov 2016 15:43:02 +0000 (10:43 -0500)
services/keepstore/handlers.go

index 141cca699704579565e578c56916854410ce9446..588ee048f021da8188babdd81fd75b7049351893 100644 (file)
@@ -654,6 +654,9 @@ func PutBlock(ctx context.Context, block []byte, hash string) (int, error) {
                if err := vol.Put(ctx, hash, block); err == nil {
                        return vol.Replication(), nil // success!
                }
                if err := vol.Put(ctx, hash, block); err == nil {
                        return vol.Replication(), nil // success!
                }
+               if ctx.Err() != nil {
+                       return 0, ctx.Err()
+               }
        }
 
        writables := KeepVM.AllWritable()
        }
 
        writables := KeepVM.AllWritable()
@@ -665,10 +668,8 @@ func PutBlock(ctx context.Context, block []byte, hash string) (int, error) {
        allFull := true
        for _, vol := range writables {
                err := vol.Put(ctx, hash, block)
        allFull := true
        for _, vol := range writables {
                err := vol.Put(ctx, hash, block)
-               select {
-               case <-ctx.Done():
+               if ctx.Err() != nil {
                        return 0, ctx.Err()
                        return 0, ctx.Err()
-               default:
                }
                if err == nil {
                        return vol.Replication(), nil // success!
                }
                if err == nil {
                        return vol.Replication(), nil // success!