package blobstor import ( "context" "fmt" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/shard/mode" ) // SetMode sets the blobstor mode of operation. func (b *BlobStor) SetMode(ctx context.Context, m mode.Mode) error { b.modeMtx.Lock() defer b.modeMtx.Unlock() if b.mode == m { return nil } if b.mode.ReadOnly() == m.ReadOnly() { return nil } err := b.Close(ctx) if err == nil { if err = b.openBlobStor(ctx, m); err == nil { err = b.Init(ctx) } } if err != nil { return fmt.Errorf("can't set blobstor mode (old=%s, new=%s): %w", b.mode, m, err) } b.mode = m b.metrics.SetMode(m.ReadOnly()) return nil }