404 errors are critical for big TTL values #1191

Open
opened 2025-12-28 17:22:07 +00:00 by sami · 5 comments
Owner

Originally created by @carpawell on GitHub (Mar 11, 2024).

Node does not like it: https://github.com/nspcc-dev/neofs-sdk-go/pull/562. It starts forwarding requests and receives them back.

Expected Behavior

TTL describes the max forwarding number.

Current Behavior

TTL describes how many times you may try to search for objects. If there is no such object at all, there are 8 request forwardings even if you are the initiator of the request forwarding, you receive it back cause you are the container's part and the forwarder wants you to try.

Possible Solution

Not sure. Mb turn forwarding off in the object services? Spawn only requests with TTL=2 manually? Track forwardings chain and do not continue if you notice a cycle?

Steps to Reproduce (for bugs)

Update to the provided SDK version and try to get non-existing object. Or delete it. See logs that are bigger than you are expecting.

Context

Regression

https://github.com/nspcc-dev/neofs-sdk-go/pull/562

Originally created by @carpawell on GitHub (Mar 11, 2024). <!-- Provide a general summary of the issue in the Title above --> Node does not like it: https://github.com/nspcc-dev/neofs-sdk-go/pull/562. It starts forwarding requests and receives them back. ## Expected Behavior TTL describes the max forwarding number. ## Current Behavior TTL describes how many times you may try to search for objects. If there is no such object at all, there are 8 request forwardings even if you are the initiator of the request forwarding, you receive it back cause you are the container's part and the forwarder wants you to try. ## Possible Solution Not sure. Mb turn forwarding off in the object services? Spawn only requests with TTL=2 manually? Track forwardings chain and do not continue if you notice a cycle? ## Steps to Reproduce (for bugs) Update to the provided SDK version and try to get non-existing object. Or delete it. See logs that are bigger than you are expecting. ## Context <!-- How has this issue affected you? What are you trying to accomplish? Providing context helps us come up with a solution that is most useful in the real world --> ## Regression https://github.com/nspcc-dev/neofs-sdk-go/pull/562
Author
Owner

@roman-khimov commented on GitHub (Mar 12, 2024):

It's easy to revert, although this just means that our TTLs don't work the way they were intended to.

@roman-khimov commented on GitHub (Mar 12, 2024): It's easy to revert, although this just means that our TTLs don't work the way they were intended to.
Author
Owner

@roman-khimov commented on GitHub (Mar 12, 2024):

Track forwardings chain and do not continue if you notice a cycle?

This defeats the purpose, although with additional signatures this can in fact substitute TTL.

@roman-khimov commented on GitHub (Mar 12, 2024): > Track forwardings chain and do not continue if you notice a cycle? This defeats the purpose, although with additional signatures this can in fact _substitute_ TTL.
Author
Owner

@carpawell commented on GitHub (Mar 12, 2024):

That is S0 to me. The commit is already merged and updating sometimes does not allow deleting big objects with timeout error. Requests spam does not allow proper work even after a single multiplied request on my laptop. That is also a discussion to me cause I am not sure how that should be solved.

@carpawell commented on GitHub (Mar 12, 2024): That is S0 to me. The commit is already merged and updating sometimes does not allow deleting big objects with timeout error. Requests spam does not allow proper work even after a single multiplied request on my laptop. That is also a discussion to me cause I am not sure how that should be solved.
Author
Owner

@roman-khimov commented on GitHub (Mar 12, 2024):

Let's do https://github.com/nspcc-dev/neofs-sdk-go/pull/567 and then think of associated problems, they can't be fixed quickly.

@roman-khimov commented on GitHub (Mar 12, 2024): Let's do https://github.com/nspcc-dev/neofs-sdk-go/pull/567 and then think of associated problems, they can't be fixed quickly.
Author
Owner

@carpawell commented on GitHub (Mar 12, 2024):

OK, can be done this way. Not S0 then (but still a discussion?). A few links to the issue's solver: TTL is decoded here and then sent to the next node here (then repeat this one more time on the other node too). A lot of timeouts can be faced when running int tests, and a lot of debug logs about the same object being searched on every container node.

@carpawell commented on GitHub (Mar 12, 2024): OK, can be done this way. Not S0 then (but still a discussion?). A few links to the issue's solver: TTL is decoded [here](https://github.com/nspcc-dev/neofs-node/blob/c61931f587d44b11a3fba14f53ed66e76ea214b8/pkg/services/object/util/prm.go#L111-L113) and then sent to the next node [here](https://github.com/nspcc-dev/neofs-node/blob/c61931f587d44b11a3fba14f53ed66e76ea214b8/pkg/services/object/get/util.go#L181) (then repeat this one more time on the other node too). A lot of timeouts can be faced when running int tests, and a lot of debug logs about the same object being searched on every container node.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nspcc-dev/neofs-node#1191
No description provided.