-
Notifications
You must be signed in to change notification settings - Fork 50
EC GET #3497
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
EC GET #3497
Conversation
cthulhu-rider
commented
Aug 1, 2025
- based on Implement EC logic in PUT #3457 in terms of format
1a25190 to
340a149
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #3497 +/- ##
==========================================
+ Coverage 25.71% 26.01% +0.29%
==========================================
Files 659 660 +1
Lines 49399 49766 +367
==========================================
+ Hits 12705 12945 +240
- Misses 35685 35784 +99
- Partials 1009 1037 +28 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
17e09c9 to
7f286bf
Compare
689dbc4 to
243ea9c
Compare
carpawell
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will there be issues for TODOs or some separate PR that fixes them? We once had work that was only related to going through every TODO to fix it or create a new issue for it.
| return object.Object{}, nil, errors.New("all nodes failed") | ||
| } | ||
|
|
||
| defer rc.Close() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can this panic in theory, if for above is empty?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
only in theory, if some expectations of behavior are violated
| return *parentHdr, nil, nil | ||
| } | ||
|
|
||
| buf := make([]byte, partHdr.PayloadSize()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can it be gigabytes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it can be up to MaxObjectSize net setting
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh, missed that there are part and parent headers (confusing naming btw, at least, i misunderstood)
it can be up to MaxObjectSize net setting
ok, but even in this case, is it ok to always allocate so much memory? found TODOs about streaming but isn't it necessary to solve ASAP?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
isn't it necessary to solve ASAP
no. And not only due to not yet resolved streaming issue, but cuz decoder can now work in-mem only (#3501)
all TODOs will be resolved later. There are many of them, so i dont wanna create issue for each. Prefer to just have them in code |
Dont mind, just wanted to hear that it is not a final solution and the next iteration will be soon. |
d8c4555 to
3779e74
Compare
roman-khimov
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unaddressed TODOs should have corresponding issues.
64bd139 to
db69124
Compare
pkg/services/object/get/ec.go
Outdated
| return object.Object{}, err | ||
| } | ||
|
|
||
| fmt.Println(err) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
carpawell
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Except fmt.Println.
db69124 to
8f47d72
Compare
|
Needs to be rebased now. |
d4a62f0 to
c94c0c4
Compare
Follow cd3e5d3 for GET. Closes #3422. Signed-off-by: Leonard Lyubich <[email protected]>
Signed-off-by: Leonard Lyubich <[email protected]>
c94c0c4 to
dffbbc8
Compare
| // and parity servers work fast, availability can still be provided. Right now, for example, if one server | ||
| // responds after the context deadline, whole operation fails. Think how this can be accurately improved. | ||
| // TODO: explore streaming options. See reedsolomon.NewStream. Cmp performance. https://github.com/nspcc-dev/neofs-node/issues/3501 | ||
| // TODO: if routine in the loop fails, we may already be in a situation when we have to get parity parts. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
issue this
| func (c *clientCacheWrapper) InitGetObjectStream(ctx context.Context, node netmap.NodeInfo, pk ecdsa.PrivateKey, | ||
| cnr cid.ID, id oid.ID, sTok *session.Object, bTok *bearer.Token, local, verifyID bool, xs []string) (object.Object, io.ReadCloser, error) { | ||
| // TODO: code is copied from pkg/services/object/get/container.go:63. Worth sharing? | ||
| // TODO: we may waste resources doing this per request. Make once on network map change instead. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
issues this
| return object.Object{}, nil, err | ||
| } | ||
|
|
||
| // TODO: SkipChecksumVerification() turns off checking all object checksums. Better to keep checking |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
issue this
| // TODO: track https://github.com/nspcc-dev/neofs-api/issues/269. | ||
| return errors.New("invalid request: EC part requested in container without EC policy") | ||
| } | ||
| // TODO: deny if node is not in the container? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
issue this
|
rebased and created issues for meaningful TODOs. Will open new PR for refactoring ones |