diff --git a/pkg/agent/core/ngt/service/ngt.go b/pkg/agent/core/ngt/service/ngt.go index ca121f784e..56d2f6a46a 100644 --- a/pkg/agent/core/ngt/service/ngt.go +++ b/pkg/agent/core/ngt/service/ngt.go @@ -1114,7 +1114,10 @@ func (n *ngt) saveIndex(ctx context.Context) (err error) { } n.smu.Lock() defer n.smu.Unlock() + log.Infof("save index operation started, the number of create index execution = %d", nocie) + eg.Go(safety.RecoverFunc(func() (err error) { + log.Debugf("start save operation for kvsdb, the number of kvsdb = %d", n.kvs.Len()) if n.kvs.Len() > 0 && path != "" { m := make(map[string]uint32, n.Len()) mt := make(map[string]int64, n.Len()) @@ -1134,6 +1137,7 @@ func (n *ngt) saveIndex(ctx context.Context) (err error) { fs.ModePerm, ) if err != nil { + log.Warnf("failed to create or open kvsdb file, err: %v", err) return err } defer func() { @@ -1147,10 +1151,12 @@ func (n *ngt) saveIndex(ctx context.Context) (err error) { gob.Register(map[string]uint32{}) err = gob.NewEncoder(f).Encode(&m) if err != nil { + log.Warnf("failed to encode kvsdb data, err: %v", err) return err } err = f.Sync() if err != nil { + log.Warnf("failed to flush all kvsdb data to storage, err: %v", err) return err } m = make(map[string]uint32) @@ -1162,6 +1168,7 @@ func (n *ngt) saveIndex(ctx context.Context) (err error) { fs.ModePerm, ) if err != nil { + log.Warnf("failed to create or open kvs timestamp file, err: %v", err) return err } defer func() { @@ -1175,14 +1182,17 @@ func (n *ngt) saveIndex(ctx context.Context) (err error) { gob.Register(map[string]int64{}) err = gob.NewEncoder(ft).Encode(&mt) if err != nil { + log.Warnf("failed to encode kvs timestamp data, err: %v", err) return err } err = ft.Sync() if err != nil { + log.Warnf("failed to flush all kvsdb timestamp data to storage, err: %v", err) return err } mt = make(map[string]int64) } + log.Debug("save operation for kvsdb finished") return nil })) @@ -1190,6 +1200,7 @@ func (n *ngt) saveIndex(ctx context.Context) (err error) { n.fmu.Lock() fl := len(n.fmap) n.fmu.Unlock() + log.Debugf("start save operation for invalid kvsdb, the number of invalid kvsdb = %d", fl) if fl > 0 && path != "" { var f *os.File f, err = file.Open( @@ -1198,6 +1209,7 @@ func (n *ngt) saveIndex(ctx context.Context) (err error) { fs.ModePerm, ) if err != nil { + log.Warnf("failed to create or open invalid kvsdb file, err: %v", err) return err } defer func() { @@ -1213,18 +1225,27 @@ func (n *ngt) saveIndex(ctx context.Context) (err error) { err = gob.NewEncoder(f).Encode(&n.fmap) n.fmu.Unlock() if err != nil { + log.Warnf("failed to encode invalid kvsdb data, err: %v", err) return err } err = f.Sync() if err != nil { + log.Warnf("failed to flush all invalid kvsdb data to storage, err: %v", err) return err } } + log.Debug("start save operation for invalid kvsdb finished") return nil })) eg.Go(safety.RecoverFunc(func() error { - return n.core.SaveIndexWithPath(path) + log.Debug("start save operation for index") + if err := n.core.SaveIndexWithPath(path); err != nil { + log.Warnf("failed to save index with path, err: %v\tpath: %s", err, path) + return err + } + log.Debug("save operation for index finished") + return nil })) err = eg.Wait() @@ -1232,6 +1253,7 @@ func (n *ngt) saveIndex(ctx context.Context) (err error) { return err } + log.Debug("start save operation for metadata file") err = metadata.Store( file.Join(path, metadata.AgentMetadataFileName), &metadata.Metadata{ @@ -1242,10 +1264,17 @@ func (n *ngt) saveIndex(ctx context.Context) (err error) { }, ) if err != nil { + log.Warnf("failed to save metadata file, err: %v", err) return err } + log.Debug("save operation for metadata file finished") - return n.moveAndSwitchSavedData(ctx) + if err := n.moveAndSwitchSavedData(ctx); err != nil { + log.Warnf("failed to move and switch saved data for copy on write, err: %v", err) + return err + } + log.Info("save index operation finished") + return nil } func (n *ngt) CreateAndSaveIndex(ctx context.Context, poolSize uint32) (err error) { @@ -1272,6 +1301,7 @@ func (n *ngt) moveAndSwitchSavedData(ctx context.Context) (err error) { } n.cowmu.Lock() defer n.cowmu.Unlock() + log.Debug("start move and switch saved data operation for copy on write") err = file.MoveDir(ctx, n.path, n.oldPath) if err != nil { log.Warnf("failed to backup backup data from %s to %s error: %v", n.path, n.oldPath, err)