engine: Do not increase error counter on meta mismatch #686

Merged
fyrchik merged 1 commits from fyrchik/frostfs-node:fix-logic-error into master 2023-09-14 08:09:36 +00:00

Close #679

It was introduced in 69e1e6ca to help node determine faulty shards.
However, the situation is possible in a real-life scenario:

  1. Object O is evacuated from shard A to B.
  2. Shard A is unmounted because of lower-level errors.
  3. We now have object in meta on A and in blobstor on B. Technically we
    have it in meta on shard B too, but we still got the error if B goes
    to a degraded mode.

Signed-off-by: Evgenii Stratonikov e.stratonikov@yadro.com

Close #679 It was introduced in 69e1e6ca to help node determine faulty shards. However, the situation is possible in a real-life scenario: 1. Object O is evacuated from shard A to B. 2. Shard A is unmounted because of lower-level errors. 3. We now have object in meta on A and in blobstor on B. Technically we have it in meta on shard B too, but we still got the error if B goes to a degraded mode. Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
fyrchik requested review from storage-core-committers 2023-09-13 08:32:22 +00:00
fyrchik requested review from storage-core-developers 2023-09-13 08:32:22 +00:00
fyrchik force-pushed fix-logic-error from 3eebc31e01 to 3fff6af7e1 2023-09-13 08:32:46 +00:00 Compare
acid-ant approved these changes 2023-09-13 11:02:12 +00:00
aarifullin reviewed 2023-09-13 15:08:31 +00:00
@ -103,3 +104,1 @@
if it.ShardWithMeta.Shard != nil {
e.reportShardError(it.ShardWithMeta, "meta info was present, but object is missing",
it.MetaError, zap.Stringer("address", prm.addr))
if it.ShardWithMeta.Shard != nil && it.MetaError != nil {
Collaborator

Okay. AFAICS this is needed to make sure we are in the situation when A has not been unmounted yet and still has the meta.

I am curios about the situation when B is in the degraded mode and the error is returned.
I only see if !it.HasDegraded && it.ShardWithMeta.Shard == nil check above. Can you explain, please, how do we process the error when it is B and it is the degtaded mode?

Okay. AFAICS this is needed to make sure we are in the situation when `A` has not been unmounted yet and still has the meta. I am curios about the situation when `B` is in the degraded mode and the error is returned. I only see `if !it.HasDegraded && it.ShardWithMeta.Shard == nil` check above. Can you explain, please, how do we process the error when it is B and it is the degtaded mode?
Poster
Owner

Could you refrase a bit? We always return an object if it can be found, but now we just don't increase error counter.

Could you refrase a bit? We always return an object if it can be found, but now we just don't increase error counter.
aarifullin marked this conversation as resolved
aarifullin approved these changes 2023-09-13 15:19:19 +00:00
fyrchik force-pushed fix-logic-error from 3fff6af7e1 to c6af4a3ec8 2023-09-14 07:40:20 +00:00 Compare
fyrchik merged commit c6af4a3ec8 into master 2023-09-14 08:09:36 +00:00
fyrchik deleted branch fix-logic-error 2023-09-14 08:09:39 +00:00
Sign in to join this conversation.
No reviewers
No Milestone
No Assignees
3 Participants
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: TrueCloudLab/frostfs-node#686
There is no content yet.