forked from TrueCloudLab/frostfs-node
c8911d72d0
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
39 lines
882 B
Go
39 lines
882 B
Go
package shard
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/shard/mode"
|
|
)
|
|
|
|
// ErrReadOnlyMode is returned when it is impossible to apply operation
|
|
// that changes shard's memory due to the "read-only" shard's mode.
|
|
var ErrReadOnlyMode = errors.New("shard is in read-only mode")
|
|
|
|
// ErrDegradedMode is returned when operation requiring metabase is executed in degraded mode.
|
|
var ErrDegradedMode = errors.New("shard is in degraded mode")
|
|
|
|
// SetMode sets mode of the shard.
|
|
//
|
|
// Returns any error encountered that did not allow
|
|
// setting shard mode.
|
|
func (s *Shard) SetMode(m mode.Mode) error {
|
|
s.m.Lock()
|
|
defer s.m.Unlock()
|
|
|
|
if s.hasWriteCache() {
|
|
s.writeCache.SetMode(m)
|
|
}
|
|
|
|
s.info.Mode = m
|
|
|
|
return nil
|
|
}
|
|
|
|
// GetMode returns mode of the shard.
|
|
func (s *Shard) GetMode() mode.Mode {
|
|
s.m.RLock()
|
|
defer s.m.RUnlock()
|
|
|
|
return s.info.Mode
|
|
}
|