18870: git stuff
[arvados.git] / services / keepstore / volume.go
index 878f690c9bff7a27f8f82e4516326598008c220c..c3b8cd6283e0311c93fcc914ebd3b370045cfa0f 100644 (file)
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepstore
 
 import (
        "context"
@@ -371,6 +371,9 @@ func makeRRVolumeManager(logger logrus.FieldLogger, cluster *arvados.Cluster, my
        sort.Slice(vm.writables, func(i, j int) bool {
                return less(vm.writables[i], vm.writables[j])
        })
+       sort.Slice(vm.mounts, func(i, j int) bool {
+               return less(vm.mounts[i], vm.mounts[j])
+       })
        return vm, nil
 }
 
@@ -401,6 +404,9 @@ func (vm *RRVolumeManager) AllWritable() []*VolumeMount {
 // each volume gets a turn to be first. Used by PutBlock to distribute
 // new data across available volumes.
 func (vm *RRVolumeManager) NextWritable() []*VolumeMount {
+       if len(vm.writables) == 0 {
+               return nil
+       }
        offset := (int(atomic.AddUint32(&vm.counter, 1)) - 1) % len(vm.writables)
        return append(append([]*VolumeMount(nil), vm.writables[offset:]...), vm.writables[:offset]...)
 }