Skip to content

EC GET fixes#4013

Merged
roman-khimov merged 10 commits into
masterfrom
fix-ec-get
Jun 16, 2026
Merged

EC GET fixes#4013
roman-khimov merged 10 commits into
masterfrom
fix-ec-get

Conversation

@cthulhu-rider

Copy link
Copy Markdown
Contributor

closes #4012

@cthulhu-rider cthulhu-rider force-pushed the fix-ec-get branch 3 times, most recently from ea460d0 to 1e12f2f Compare June 9, 2026 08:09
@codecov

codecov Bot commented Jun 9, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 13.68421% with 82 lines in your changes missing coverage. Please review.
✅ Project coverage is 27.71%. Comparing base (f4330c3) to head (8f4f8eb).
⚠️ Report is 13 commits behind head on master.

Files with missing lines Patch % Lines
pkg/services/object/get.go 0.00% 57 Missing ⚠️
pkg/services/object/get/ec.go 4.00% 24 Missing ⚠️
pkg/services/object/server.go 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4013      +/-   ##
==========================================
- Coverage   27.73%   27.71%   -0.03%     
==========================================
  Files         681      682       +1     
  Lines       46973    47019      +46     
==========================================
+ Hits        13026    13029       +3     
- Misses      32705    32746      +41     
- Partials     1242     1244       +2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Defect of 5af9bf9.

Refs #4012.

Signed-off-by: Leonard Liubich <leonard@morphbits.io>
@cthulhu-rider cthulhu-rider marked this pull request as ready for review June 15, 2026 18:46
Comment thread pkg/services/object/get.go
Comment thread pkg/services/object/get.go Outdated
Comment thread pkg/services/object/get.go Outdated
Defect of 1f58293.

Previously, buffer for object header passed to local storage for range
reading was instantly freed. However, the resulting stream may include
the buffer. Therefore, returning the buffer to the sync pool too early
could lead to a data race.

Now buffer is freed not earlier than data is copied completely.

Refs #4012.

Signed-off-by: Leonard Liubich <leonard@morphbits.io>
Defect of d25f426. Previously, in case
of fallback to GET by chunk routines, they weren't synchronized request
initialization and blocked to wait their turn to copy payload chunks.
This could result in the chunks being streamed out of order.

Refs #4012.

Signed-off-by: Leonard Liubich <leonard@morphbits.io>
Defect of d25f426.

Previously, buffer for object header passed to local storage for range
reading was instantly freed. However, the resulting stream may include
the buffer. Therefore, returning the buffer to the sync pool too early
could lead to a data race.

Now buffer is freed not earlier than data is copied completely.

Refs #4012.

Signed-off-by: Leonard Liubich <leonard@morphbits.io>
Defect of d25f426. Chunk routine
cancelling may happen concurrently. Previously, blocking channel write
was used. If multiple routines did so, this led to deadlock.

This make server to use non-blocking write instead.

Refs #4012.

Signed-off-by: Leonard Liubich <leonard@morphbits.io>
Defect of d25f426.

Previously server calculated the remaining EC part's payload length
based on the payload length of the original object, not the part one.

Closes #4012.

Signed-off-by: Leonard Liubich <leonard@morphbits.io>
Omission of d25f426.

Signed-off-by: Leonard Liubich <leonard@morphbits.io>
Break request handling when request context is done. Also do not log
such errors.

Signed-off-by: Leonard Liubich <leonard@morphbits.io>
Such cases are normal so do not worth log records.

Signed-off-by: Leonard Liubich <leonard@morphbits.io>
Such requests are always sent from container nodes which have free
access to GET data.

Signed-off-by: Leonard Liubich <leonard@morphbits.io>
@roman-khimov roman-khimov merged commit f1720d8 into master Jun 16, 2026
26 of 28 checks passed
@roman-khimov roman-khimov deleted the fix-ec-get branch June 16, 2026 21:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EC GET breaks sometimes

2 participants