Merge branch '7121-fix-deadlock' closes #7121
[arvados.git] / services / keepstore / keepstore.go
index e55e0ef841495724b26a4e89cdf84e11d0051a7e..53cf7be6ca09c62828787f1c9229cce13193b480 100644 (file)
@@ -14,6 +14,7 @@ import (
        "os"
        "os/signal"
        "strings"
+       "sync"
        "syscall"
        "time"
 )
@@ -132,10 +133,14 @@ func (vs *volumeSet) Set(value string) error {
        if _, err := os.Stat(value); err != nil {
                return err
        }
+       var locker sync.Locker
+       if flagSerializeIO {
+               locker = &sync.Mutex{}
+       }
        *vs = append(*vs, &UnixVolume{
-               root:      value,
-               serialize: flagSerializeIO,
-               readonly:  flagReadonly,
+               root:     value,
+               locker:   locker,
+               readonly: flagReadonly,
        })
        return nil
 }
@@ -288,6 +293,10 @@ func main() {
 
        flag.Parse()
 
+       if never_delete != true {
+               log.Fatal("never_delete must be true, see #6221")
+       }
+
        if maxBuffers < 0 {
                log.Fatal("-max-buffers must be greater than zero.")
        }