-
Notifications
You must be signed in to change notification settings - Fork 38
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
Fix operations with storage groups #2491
Conversation
Previously, `storagegroup.CollectMembers` function could return error with text `data must be 64-bytes long`. According to the message it is not clear which data is incorrect. Now context has been added to the error so that it is clear at what stage it occurs. Refs #2488. Signed-off-by: Leonard Lyubich <[email protected]>
Previously, `storagegroup.CollectMembers` function could return error with text `data must be 64-bytes long` if any of the split members were without homomorphic checksum or with the invalid one. Including the bypass of the splitting chain, and the error occurred already after at stage `tz.Concat`. The correct format of the homomorphic checksum is required to form the group, so it is required to do an in-place check. Check each element of `IterateSplitLeaves` iterator and break traversal on any checksum problem. Refs #2488. Signed-off-by: Leonard Lyubich <[email protected]>
Previously, `storagegroup.CollectMembers` function ignored absence of the object ID in the member's child header. This could lead to incorrect storage group formation, and also hid problem objects in the system (ID is a required field for any object). Immediately return error from `CollectMembers` if any child of any member is without ID. Refs #2488. Signed-off-by: Leonard Lyubich <[email protected]>
Codecov Report
@@ Coverage Diff @@
## master #2491 +/- ##
==========================================
+ Coverage 29.26% 29.34% +0.08%
==========================================
Files 399 401 +2
Lines 30390 30396 +6
==========================================
+ Hits 8893 8921 +28
+ Misses 20761 20739 -22
Partials 736 736
... and 2 files with indirect coverage changes 📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
bacb627
to
9fa0e44
Compare
Previously, storage nodes didn't check homomorphic checksum correctness in incoming objects. When homomorphic hashing is required in the container, nodes accepted objects without homomorphic hash header. This could lead to subsequent problems with storage group creation because it expects checksums in the members' headers. Make storage nodes to check that homomorphic checksum of the new object payload is set and has correct format according to TillichZemor algo. If homomorphic hashing is disabled, the header is unchecked. Exact TZ hash value is unchecked for now due to performance issues. Refs #2488. Signed-off-by: Leonard Lyubich <[email protected]>
Previously, storage nodes didn't calculate and set homomorphic payload checksum for the sliced objects even when it was required. This could affect Data Audit subsystem working with homomorphic hashes. Bypass hashing option from `slicingTarget` to the underlying `Slicer`. Fixes #2488. Signed-off-by: Leonard Lyubich <[email protected]>
9fa0e44
to
98a0a7e
Compare
Utility iterates over all objects and asserts if homomorphic checksum format is compliant with the container policy. Signed-off-by: Leonard Lyubich <[email protected]>
d85954c
to
70704d3
Compare
…objects" This reverts commit 70704d3. The utility may be useful in the future, for example, as part of NeoFS Lens app. Thus, it's retained in the history. Signed-off-by: Leonard Lyubich <[email protected]>
38567e6
to
28cf719
Compare
fix regression came #2470
no changelog needed