Skip to content

Commit e9a436f

Browse files
committed
meta,fstree: improve error message
Allow finding exact problematic IDs when iterating FSTree/resyncing Metabase. Refs #3436. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
1 parent 8fb53f0 commit e9a436f

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

pkg/local_object_storage/blobstor/fstree/fstree.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,9 @@ func (t *FSTree) iterate(depth uint64, curPath []string,
247247
}
248248

249249
err = objHandler(*addr, data)
250+
if err != nil {
251+
err = fmt.Errorf("handling %s object: %w", addr, err)
252+
}
250253
}
251254
}
252255

pkg/local_object_storage/shard/control.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ func (s *Shard) resyncObjectHandler(addr oid.Address, data []byte) error {
216216

217217
_, _, err = s.metaBase.Inhume(tombAddr, exp, false, tombMembers...)
218218
if err != nil {
219-
return fmt.Errorf("could not inhume objects: %w", err)
219+
return fmt.Errorf("could not inhume [%s] objects: %w", oidsToString(memberIDs), err)
220220
}
221221
case objectSDK.TypeLock:
222222
var lock objectSDK.Lock
@@ -229,7 +229,7 @@ func (s *Shard) resyncObjectHandler(addr oid.Address, data []byte) error {
229229

230230
err := s.metaBase.Lock(obj.GetContainerID(), obj.GetID(), locked)
231231
if err != nil {
232-
return fmt.Errorf("could not lock objects: %w", err)
232+
return fmt.Errorf("could not lock [%s] objects: %w", oidsToString(locked), err)
233233
}
234234
}
235235

@@ -241,6 +241,18 @@ func (s *Shard) resyncObjectHandler(addr oid.Address, data []byte) error {
241241
return nil
242242
}
243243

244+
func oidsToString(ids []oid.ID) string {
245+
var res string
246+
for i, id := range ids {
247+
res += id.String()
248+
if i != len(ids)-1 {
249+
res += ", "
250+
}
251+
}
252+
253+
return res
254+
}
255+
244256
// Close releases all Shard's components.
245257
func (s *Shard) Close() error {
246258
components := []interface{ Close() error }{}

0 commit comments

Comments
 (0)