Merge branch '7179-generic-volume-tests' of git.curoverse.com:arvados into 7179-gener...
[arvados.git] / services / keepstore / keepstore.go
index 06b2f6fa28a3f6af0f4e9fef1861a5b65787d58d..53cf7be6ca09c62828787f1c9229cce13193b480 100644 (file)
@@ -14,6 +14,7 @@ import (
        "os"
        "os/signal"
        "strings"
+       "sync"
        "syscall"
        "time"
 )
@@ -54,7 +55,7 @@ var data_manager_token string
 
 // never_delete can be used to prevent the DELETE handler from
 // actually deleting anything.
-var never_delete = false
+var never_delete = true
 
 var maxBuffers = 128
 var bufs *bufferPool
@@ -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
 }
@@ -232,7 +237,7 @@ func main() {
        flag.BoolVar(
                &never_delete,
                "never-delete",
-               false,
+               true,
                "If set, nothing will be deleted. HTTP 405 will be returned "+
                        "for valid DELETE requests.")
        flag.StringVar(
@@ -288,17 +293,21 @@ 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.")
        }
        bufs = newBufferPool(maxBuffers, BLOCKSIZE)
 
        if pidfile != "" {
-               f, err := os.OpenFile(pidfile, os.O_RDWR | os.O_CREATE, 0777)
+               f, err := os.OpenFile(pidfile, os.O_RDWR|os.O_CREATE, 0777)
                if err != nil {
                        log.Fatalf("open pidfile (%s): %s", pidfile, err)
                }
-               err = syscall.Flock(int(f.Fd()), syscall.LOCK_EX | syscall.LOCK_NB)
+               err = syscall.Flock(int(f.Fd()), syscall.LOCK_EX|syscall.LOCK_NB)
                if err != nil {
                        log.Fatalf("flock pidfile (%s): %s", pidfile, err)
                }