From 3258d9c61608edb9b34b05abdb866dc03b73df1f Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Mon, 6 Sep 2021 17:28:55 +0300 Subject: [PATCH] [#790] writecache: Log each writing operation Call `storagelog.Write` in all places after the successful writing op. Signed-off-by: Leonard Lyubich --- pkg/local_object_storage/writecache/delete.go | 7 +++++++ pkg/local_object_storage/writecache/options.go | 2 +- pkg/local_object_storage/writecache/persist.go | 11 +++++++++++ pkg/local_object_storage/writecache/put.go | 4 ++++ pkg/local_object_storage/writecache/storage.go | 4 ++++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/pkg/local_object_storage/writecache/delete.go b/pkg/local_object_storage/writecache/delete.go index fb0f752d2f..a6ad60e96a 100644 --- a/pkg/local_object_storage/writecache/delete.go +++ b/pkg/local_object_storage/writecache/delete.go @@ -6,6 +6,7 @@ import ( objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object" "github.com/nspcc-dev/neofs-node/pkg/core/object" "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor/fstree" + storagelog "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/internal/log" "go.etcd.io/bbolt" ) @@ -21,6 +22,7 @@ func (c *cache) Delete(addr *objectSDK.Address) error { c.mem = c.mem[:len(c.mem)-1] c.curMemSize -= uint64(len(c.mem[i].data)) c.mtx.Unlock() + storagelog.Write(c.log, storagelog.AddressField(saddr), storagelog.OpField("in-mem DELETE")) return nil } } @@ -44,6 +46,7 @@ func (c *cache) Delete(addr *objectSDK.Address) error { return err } c.dbSize.Sub(uint64(has)) + storagelog.Write(c.log, storagelog.AddressField(saddr), storagelog.OpField("db DELETE")) return nil } @@ -52,5 +55,9 @@ func (c *cache) Delete(addr *objectSDK.Address) error { err = object.ErrNotFound } + if err == nil { + storagelog.Write(c.log, storagelog.AddressField(saddr), storagelog.OpField("fstree DELETE")) + } + return err } diff --git a/pkg/local_object_storage/writecache/options.go b/pkg/local_object_storage/writecache/options.go index 1aa78da5f0..62a40cc6c9 100644 --- a/pkg/local_object_storage/writecache/options.go +++ b/pkg/local_object_storage/writecache/options.go @@ -31,7 +31,7 @@ type options struct { // WithLogger sets logger. func WithLogger(log *zap.Logger) Option { return func(o *options) { - o.log = log + o.log = log.With(zap.String("component", "WriteCache")) } } diff --git a/pkg/local_object_storage/writecache/persist.go b/pkg/local_object_storage/writecache/persist.go index 636b061129..d6d766212e 100644 --- a/pkg/local_object_storage/writecache/persist.go +++ b/pkg/local_object_storage/writecache/persist.go @@ -4,6 +4,7 @@ import ( "sort" "time" + storagelog "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/internal/log" "go.etcd.io/bbolt" "go.uber.org/zap" ) @@ -30,6 +31,13 @@ func (c *cache) persistLoop() { zap.Duration("took", time.Since(start)), zap.Int("total", len(m))) + for i := range m { + storagelog.Write(c.log, + storagelog.AddressField(m[i].addr), + storagelog.OpField("in-mem DELETE persist"), + ) + } + c.mtx.Lock() c.curMemSize = 0 n := copy(c.mem, c.mem[len(m):]) @@ -64,6 +72,7 @@ func (c *cache) persistToCache(objs []objectInfo) []int { } sz += uint64(len(objs[i].data)) doneMem = append(doneMem, i) + storagelog.Write(c.log, storagelog.AddressField(objs[i].addr), storagelog.OpField("db PUT")) } return nil }) @@ -88,6 +97,8 @@ func (c *cache) persistToCache(objs []objectInfo) []int { err := c.fsTree.Put(objs[i].obj.Address(), objs[i].data) if err != nil { failDisk = append(failDisk, i) + } else { + storagelog.Write(c.log, storagelog.AddressField(objs[i].addr), storagelog.OpField("fstree PUT")) } } diff --git a/pkg/local_object_storage/writecache/put.go b/pkg/local_object_storage/writecache/put.go index fb6ed6c007..588cdd20c9 100644 --- a/pkg/local_object_storage/writecache/put.go +++ b/pkg/local_object_storage/writecache/put.go @@ -4,6 +4,7 @@ import ( "errors" "github.com/nspcc-dev/neofs-node/pkg/core/object" + storagelog "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/internal/log" ) // ErrBigObject is returned when object is too big to be placed in cache. @@ -34,6 +35,9 @@ func (c *cache) Put(o *object.Object) error { c.mem = append(c.mem, oi) c.mtx.Unlock() + + storagelog.Write(c.log, storagelog.AddressField(oi.addr), storagelog.OpField("in-mem PUT")) + return nil } diff --git a/pkg/local_object_storage/writecache/storage.go b/pkg/local_object_storage/writecache/storage.go index 413ec86a5a..17e4075aa7 100644 --- a/pkg/local_object_storage/writecache/storage.go +++ b/pkg/local_object_storage/writecache/storage.go @@ -10,6 +10,7 @@ import ( objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object" "github.com/nspcc-dev/neofs-node/pkg/core/object" "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor/fstree" + storagelog "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/internal/log" "github.com/nspcc-dev/neofs-node/pkg/util" "go.etcd.io/bbolt" "go.uber.org/zap" @@ -109,6 +110,7 @@ func (c *cache) deleteFromDB(keys [][]byte) error { return err } sz += uint64(len(has)) + storagelog.Write(c.log, storagelog.AddressField(string(keys[i])), storagelog.OpField("db DELETE")) } return nil }) @@ -135,6 +137,8 @@ func (c *cache) deleteFromDisk(keys [][]byte) error { lastErr = err c.log.Error("can't remove object from write-cache", zap.Error(err)) continue + } else if err == nil { + storagelog.Write(c.log, storagelog.AddressField(string(keys[i])), storagelog.OpField("fstree DELETE")) } }