X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/852325b0c1523a37d780e7e5e0a76c80733eea66..23cc1183e500eb6fa22b611c1c6fc60de1aff9e7:/services/keepstore/keepstore.go diff --git a/services/keepstore/keepstore.go b/services/keepstore/keepstore.go index 06b2f6fa28..53cf7be6ca 100644 --- a/services/keepstore/keepstore.go +++ b/services/keepstore/keepstore.go @@ -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) }