From dc0d3ee1322f25f790c69e78bdfd93640b3dec21 Mon Sep 17 00:00:00 2001 From: Davies Liu Date: Mon, 12 Apr 2021 11:12:40 +0800 Subject: [PATCH] add more logging for gc --- cmd/gc.go | 17 ++++++++++++++++- pkg/meta/redis.go | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/cmd/gc.go b/cmd/gc.go index d4706e82..d25c4f97 100644 --- a/cmd/gc.go +++ b/cmd/gc.go @@ -148,14 +148,29 @@ func gc(ctx *cli.Context) error { length := args[1].(uint32) return store.Remove(chunkid, int(length)) })) + var nc, ns, nb int + var lastLog time.Time m.OnMsg(meta.CompactChunk, meta.MsgCallback(func(args ...interface{}) error { slices := args[0].([]meta.Slice) chunkid := args[1].(uint64) - return vfs.Compact(chunkConf, store, slices, chunkid) + err = vfs.Compact(chunkConf, store, slices, chunkid) + nc++ + for _, s := range slices { + ns++ + nb += int(s.Len) + } + if time.Since(lastLog) > time.Second && isatty.IsTerminal(os.Stderr.Fd()) { + logger.Infof("Compacted %d chunks (%d slices, %d bytes).\r", nc, ns, nb) + lastLog = time.Now() + } + return err })) + logger.Infof("start to compact chunks ...") err := m.CompactAll(meta.Background) if err != 0 { logger.Errorf("compact all chunks: %s", err) + } else { + logger.Infof("Compacted %d chunks (%d slices, %d bytes).", nc, ns, nb) } } diff --git a/pkg/meta/redis.go b/pkg/meta/redis.go index 38da7a38..ac80d313 100644 --- a/pkg/meta/redis.go +++ b/pkg/meta/redis.go @@ -2014,8 +2014,8 @@ func (r *redisMeta) compactChunk(inode Ino, indx uint32) { // the slices will be formed as a tree after buildSlice(), // we should create new one (or remove the link in tree) ss = readSlices(vals[skipped:]) - first := *ss[0] // copy the first slice so it will not be updated by buildSlice + first := *ss[0] chunks = buildSlice(ss) pos, size = 0, 0 if chunks[0].Chunkid == 0 { -- GitLab