[#2208] engine: Log time-consuming shard operations

Currently the only way to tell whether `evacuate/set-mode` is finished
is to set a very big timeout and _hope_ that the operation will finish.
In this commit we add INFO logs for such operations which should
simplify the life of an administrator.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
Evgenii Stratonikov 2023-01-23 11:35:58 +03:00 committed by fyrchik
parent 87f0e3ea25
commit c72576e72f
2 changed files with 11 additions and 0 deletions

View file

@ -82,6 +82,8 @@ func (e *StorageEngine) Evacuate(prm EvacuateShardPrm) (EvacuateShardRes, error)
return EvacuateShardRes{}, errMustHaveTwoShards return EvacuateShardRes{}, errMustHaveTwoShards
} }
e.log.Info("started shards evacuation", zap.Strings("shard_ids", sidList))
// We must have all shards, to have correct information about their // We must have all shards, to have correct information about their
// indexes in a sorted slice and set appropriate marks in the metabase. // indexes in a sorted slice and set appropriate marks in the metabase.
// Evacuated shard is skipped during put. // Evacuated shard is skipped during put.
@ -185,5 +187,7 @@ mainLoop:
} }
} }
e.log.Info("finished shards evacuation",
zap.Strings("shard_ids", sidList))
return res, nil return res, nil
} }

View file

@ -3,6 +3,7 @@ package shard
import ( import (
"github.com/TrueCloudLab/frostfs-node/pkg/local_object_storage/shard/mode" "github.com/TrueCloudLab/frostfs-node/pkg/local_object_storage/shard/mode"
"github.com/TrueCloudLab/frostfs-node/pkg/local_object_storage/util/logicerr" "github.com/TrueCloudLab/frostfs-node/pkg/local_object_storage/util/logicerr"
"go.uber.org/zap"
) )
// ErrReadOnlyMode is returned when it is impossible to apply operation // ErrReadOnlyMode is returned when it is impossible to apply operation
@ -24,6 +25,10 @@ func (s *Shard) SetMode(m mode.Mode) error {
} }
func (s *Shard) setMode(m mode.Mode) error { func (s *Shard) setMode(m mode.Mode) error {
s.log.Info("setting shard mode",
zap.Stringer("old_mode", s.info.Mode),
zap.Stringer("new_mode", m))
components := []interface{ SetMode(mode.Mode) error }{ components := []interface{ SetMode(mode.Mode) error }{
s.metaBase, s.blobStor, s.metaBase, s.blobStor,
} }
@ -61,6 +66,8 @@ func (s *Shard) setMode(m mode.Mode) error {
s.metricsWriter.SetReadonly(s.info.Mode != mode.ReadWrite) s.metricsWriter.SetReadonly(s.info.Mode != mode.ReadWrite)
} }
s.log.Info("shard mode set successfully",
zap.Stringer("mode", s.info.Mode))
return nil return nil
} }