diff options
Diffstat (limited to 'objectstore/mix')
| -rw-r--r-- | objectstore/mix/close.go | 34 | ||||
| -rw-r--r-- | objectstore/mix/mix.go | 2 | ||||
| -rw-r--r-- | objectstore/mix/new.go | 7 |
3 files changed, 11 insertions, 32 deletions
diff --git a/objectstore/mix/close.go b/objectstore/mix/close.go index b30116dc..53f6cd30 100644 --- a/objectstore/mix/close.go +++ b/objectstore/mix/close.go @@ -1,30 +1,8 @@ package mix -import ( - "errors" - - "codeberg.org/lindenii/furgit/objectstore" -) - -// Close closes all backends and joins close errors. -func (mix *Mix) Close() error { - mix.mu.RLock() - - backends := make([]objectstore.Store, 0, len(mix.backendNodeByStore)) - for node := mix.backendHead; node != nil; node = node.next { - backends = append(backends, node.backend) - } - - mix.mu.RUnlock() - - var errs []error - - for _, backend := range backends { - err := backend.Close() - if err != nil { - errs = append(errs, err) - } - } - - return errors.Join(errs...) -} +// Close releases wrapper-local resources. +// +// Mix borrows its backends, so Close does not close them. +// +// Repeated calls to Close are undefined behavior. +func (mix *Mix) Close() error { return nil } diff --git a/objectstore/mix/mix.go b/objectstore/mix/mix.go index e2757705..ef381b95 100644 --- a/objectstore/mix/mix.go +++ b/objectstore/mix/mix.go @@ -9,6 +9,8 @@ import ( ) // Mix queries multiple object databases with an MRU backend preference. +// +// Mix borrows its backend stores. type Mix struct { mu sync.RWMutex diff --git a/objectstore/mix/new.go b/objectstore/mix/new.go index c6fdeeee..16c6c9eb 100644 --- a/objectstore/mix/new.go +++ b/objectstore/mix/new.go @@ -3,6 +3,9 @@ package mix import "codeberg.org/lindenii/furgit/objectstore" // New creates a Mix from backends. +// +// The provided backends must be non-nil and distinct. +// Mix borrows the provided backends and does not close them in Close. func New(backends ...objectstore.Store) *Mix { nodeByStore := make(map[objectstore.Store]*backendNode, len(backends)) @@ -12,10 +15,6 @@ func New(backends ...objectstore.Store) *Mix { ) for _, backend := range backends { - if backend == nil { - continue - } - node := &backendNode{ backend: backend, prev: tail, |
