nspcc-dev / nspcc-dev/neofs-node
GET errors after partial data
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 38
- Forks
- 51
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 38
Description
what is the difference b/w returning a status error from
InitGetObjectStreamand returning a status from the reader later?
Originally posted by @carpawell in #4067
i propose to review all GET code on the topic of reaction to a status error following some non-empty data. Currently, GET stream can end with any status. But this is not valid in all cases
there are 3 normal results:
- everything is OK: server streams [header] + [payload] with OK status in all response messages
- object is unavailable (not found, removed, etc.): server responds with corresponding status with no data
- stream cannot be finished: server responds with INTERNAL or CONTEXT status
usually client or proxy node just pipes data as it goes
but some cases can be confusing. For example:
- header is received
- several chunks are received, but not all
- 404/removed/other status
in these cases, when SN is a client working w/ container placement generally including multiple servers, it should abort the stream. For normal cases above, SN can memorize the progress and continue w/ reserve server
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing InitGetObjectStream, the reader path, and the other GET code that handles status errors after non-empty data. Compare the three normal outcomes with partial streams ending in 404, removed, INTERNAL, or CONTEXT status. Done means the client or proxy consistently aborts invalid partial results while preserving progress for resumable normal cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 42/100