-
Notifications
You must be signed in to change notification settings - Fork 37
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
node/object: Improve SEARCH and GET #2722
Conversation
ecfcd5e
to
04d99d4
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #2722 +/- ##
==========================================
+ Coverage 22.20% 28.79% +6.58%
==========================================
Files 793 415 -378
Lines 47442 32385 -15057
==========================================
- Hits 10533 9324 -1209
+ Misses 36004 22225 -13779
+ Partials 905 836 -69 ☔ View full report in Codecov by Sentry. |
a862cb4
to
7b06cee
Compare
ObjectService.Search
server enhancements
prelim refactor has been done to:
|
a601804
to
5ac7bde
Compare
dbf195c
to
ba6bcd5
Compare
Previously, `ObjectService.Search` RPC server could write empty intermediate messages to the response stream. This did not break anything, but it resulted in a waste of cluster resources without any benefit. The case occurred due to the fact that the server sends at least one response message based on the search result on each of the container nodes, and empty results were not excluded. From now, if nothing is found on a single node, the server does not write a message to the stream. Signed-off-by: Leonard Lyubich <[email protected]>
Previously, `ObjectService.Search` RPC server could send a request to a remote container node more than once in the context of processing a single client request. On the one hand, this makes no sense, since the state of the remote node is assumed to be unchanged in the context of a single request. On the other hand, the resource costs for a repeated request are prohibitively high - signatures, network, local storage. In practice, repetitions occurred in two cases: - storage policy specifics, e.g. with several replica (`REP`) rules - when switching processing to previous epochs: some nodes could "remain" in the container This is solved by storing the processed nodes in memory. Incurs much lower costs than repeated requests. Signed-off-by: Leonard Lyubich <[email protected]>
ba6bcd5
to
dcc7bd3
Compare
Same motivation and changes as in 67ababa. Signed-off-by: Leonard Lyubich <[email protected]>
dcc7bd3
to
2521e89
Compare
decided to leave standalone improvements here and continue policy optimizations in next PR |
No description provided.