nspcc-dev / nspcc-dev/neofs-node

Support EC recreation from other rules in Policer

Open
#3,848 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Is your feature request related to a problem? Please describe.

currently, Policer can only replenish lost EC parts within single rule
https://github.com/nspcc-dev/neofs-node/blob/c130f149ade1ba90acbaa0d550ed269a2750cfe5/pkg/services/policer/ec.go#L178

if more than parity_part_num parts are unavailable, it considers the reconstruction impossible

each object has multiple partitions with multiple EC rules in the policy. Thus, there are cases when missing parts (even all of them) according to a specific rule can be recreated from another partition

moreover, this will become a normal case with https://github.com/nspcc-dev/neofs-api/issues/352 arrival

Describe the solution you'd like

if there are other rules:

  1. restore original object from them
  2. recreate lost parts for the broken rule
  3. place recreated parts as usual

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 in pkg/services/policer/ec.go around the linked reconstruction logic, then trace how the policy's multiple partitions and EC rules are represented. Determine how another rule can restore the original object before recreating the missing parts of the broken rule. Done means lost parts can be recreated from other rules and placed as usual.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
distributed-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.