From 2429508ac5df680bebc63c339d1e24a527ef1739 Mon Sep 17 00:00:00 2001 From: Anton Nikiforov Date: Wed, 14 Feb 2024 15:39:28 +0300 Subject: [PATCH 1/2] [#959] shard: Skip rebuild in `DEGRADED` mode Signed-off-by: Anton Nikiforov --- pkg/local_object_storage/shard/control.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pkg/local_object_storage/shard/control.go b/pkg/local_object_storage/shard/control.go index 408354b5..774fe804 100644 --- a/pkg/local_object_storage/shard/control.go +++ b/pkg/local_object_storage/shard/control.go @@ -173,8 +173,9 @@ func (s *Shard) Init(ctx context.Context) error { s.gc.init(ctx) s.rb = newRebuilder(s.rebuildLimiter) - s.rb.Start(ctx, s.blobStor, s.metaBase, s.log) - + if !m.NoMetabase() { + s.rb.Start(ctx, s.blobStor, s.metaBase, s.log) + } return nil } @@ -327,9 +328,11 @@ func (s *Shard) Reload(ctx context.Context, opts ...Option) error { defer unlock() s.rb.Stop(s.log) - defer func() { - s.rb.Start(ctx, s.blobStor, s.metaBase, s.log) - }() + if !s.info.Mode.NoMetabase() { + defer func() { + s.rb.Start(ctx, s.blobStor, s.metaBase, s.log) + }() + } ok, err := s.metaBase.Reload(c.metaOpts...) if err != nil { -- 2.40.1 From 05b5f5ca851a07c4994608e40dd134ff05042822 Mon Sep 17 00:00:00 2001 From: Anton Nikiforov Date: Wed, 14 Feb 2024 16:10:33 +0300 Subject: [PATCH 2/2] [#959] writecache: Fix panic on `Get` when it is not initialized Signed-off-by: Anton Nikiforov --- pkg/local_object_storage/writecache/get.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/local_object_storage/writecache/get.go b/pkg/local_object_storage/writecache/get.go index d2496e44..5194446e 100644 --- a/pkg/local_object_storage/writecache/get.go +++ b/pkg/local_object_storage/writecache/get.go @@ -84,6 +84,9 @@ func (c *cache) Head(ctx context.Context, addr oid.Address) (*objectSDK.Object, // // Returns an error of type apistatus.ObjectNotFound if the requested object is missing in db. func Get(db *bbolt.DB, key []byte) ([]byte, error) { + if db == nil { + return nil, ErrNotInitialized + } var value []byte err := db.View(func(tx *bbolt.Tx) error { b := tx.Bucket(defaultBucket) -- 2.40.1