nspcc-dev / nspcc-dev/neofs-node

`GET` object optimization over the placement vectors

Open
#2,616 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement I3 neofs-storage performance S3 U3
Dominant language
Go
Stars
38
Forks
51
Avg merge
1d 20h
Merged PRs (30d)
38

Description

this is an interesting topic at the intersection of different dimensions

let's try to base the behavior on writing and reading on the same basis. I expect both ops to iterate over same sequence of nodes (unless reading actually ends after the 1st success)

may be current implementation of SuccessAfter is not the most efficient one. If placement vector is

N1 [N2, N3]
N4 [N5]

then object is most likely on N4 than N2-3. Currently, we'll go over N1, N2, ...

in total, could we completely replace SuccessAfter with introduced WithCopiesNumber one for read ops? i guess so

Originally posted by @cthulhu-rider in https://github.com/nspcc-dev/neofs-node/pull/2607#discussion_r1343918367

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the discussion in pull request 2607 and inspect the current SuccessAfter and WithCopiesNumber implementations. Compare the node sequence used by GET with the placement vectors and determine whether replacing SuccessAfter for reads preserves the expected early-success behavior; done means the read traversal follows the intended ordering and relevant behavior is covered.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
distributed-systems
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.