what is the difference b/w returning a status error from InitGetObjectStream and 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
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:
usually client or proxy node just pipes data as it goes
but some cases can be confusing. For example:
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