Skip to content
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

DAOS-16039 object: fix EC aggregation wrong peer address #14593

Merged
merged 2 commits into from
Jun 28, 2024

Conversation

liuxuezhao
Copy link
Contributor

Fix EC aggregation wrong peer address when multiple dkeys on same EC agg leader shard.
Change existing test cases to cover that case.

Required-githooks: true

Before requesting gatekeeper:

  • Two review approvals and any prior change requests have been resolved.
  • Testing is complete and all tests passed or there is a reason documented in the PR why it should be force landed and forced-landing tag is set.
  • Features: (or Test-tag*) commit pragma was used or there is a reason documented that there are no appropriate tags for this PR.
  • Commit messages follows the guidelines outlined here.
  • Any tests skipped by the ticket being addressed have been run and passed in the PR.

Gatekeeper:

  • You are the appropriate gatekeeper to be landing the patch.
  • The PR has 2 reviews by people familiar with the code, including appropriate owners.
  • Githooks were used. If not, request that user install them and check copyright dates.
  • Checkpatch issues are resolved. Pay particular attention to ones that will show up on future PRs.
  • All builds have passed. Check non-required builds for any new compiler warnings.
  • Sufficient testing is done. Check feature pragmas and test tags and that tests skipped for the ticket are run and now pass with the changes.
  • If applicable, the PR has addressed any potential version compatibility issues.
  • Check the target branch. If it is master branch, should the PR go to a feature branch? If it is a release branch, does it have merge approval in the JIRA ticket.
  • Extra checks if forced landing is requested
    • Review comments are sufficiently resolved, particularly by prior reviewers that requested changes.
    • No new NLT or valgrind warnings. Check the classic view.
    • Quick-build or Quick-functional is not used.
  • Fix the commit message upon landing. Check the standard here. Edit it to create a single commit. If necessary, ask submitter for a new summary.

@liuxuezhao liuxuezhao requested review from a team as code owners June 17, 2024 14:19
Copy link

github-actions bot commented Jun 17, 2024

Ticket title is 'wrong peer address used for EC aggregation when dkey switched'
Status is 'In Review'
https://daosio.atlassian.net/browse/DAOS-16039

@@ -2202,11 +2213,12 @@ agg_dkey(daos_handle_t ih, vos_iter_entry_t *entry,
DP_UOID(agg_entry->ae_oid), DP_KEY(&agg_entry->ae_dkey),
agg_entry->ae_is_leader ? "yes" : "no");
agg_reset_dkey_entry(&agg_param->ap_agg_entry, entry);
rc = agg_get_obj_handle(agg_entry, true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: looks moving the peer location setting code in agg_get_obj_handle() to a separate function and call it here would be more clear.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreed, how about make another cleanup patch, this PR only fix functional logic and make it fix the problem as fast as possible.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure

DAOS_OBJ_EC_AGG_LEADER_DIFF | DAOS_FAIL_ALWAYS, 0, NULL);

print_message("wait for 30 seconds for EC aggregation.\n");
sleep(30);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks old tests used FORCE_EC_AGG fault injection to reduce test time, any reason we replace it with sleep(30)?

Copy link
Contributor Author

@liuxuezhao liuxuezhao Jun 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

old test use FORCE_EC_AGG also with sleep(30), FORCE_EC_AGG flag seems not really useful and will cause EC agg fail with DER_INPROGRESS
And this test case need another fail loc on server side DAOS_OBJ_EC_AGG_LEADER_DIFF, seems cannot set two fail loc at the same time, so I did not use FORCE_EC_AGG

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, I was thinking the FORCE_EC_AGG is for reducing test time. As for setting two fail locs, we could change aggregation code to force aggregation for you new fail loc (similar to FORCE_EC_AGG).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the ci test report an failure, should be just the ec agg not finished yet.
I'll change as what you suggested force agg for the new fail loc

NiuYawei
NiuYawei previously approved these changes Jun 18, 2024
@@ -2202,11 +2213,12 @@ agg_dkey(daos_handle_t ih, vos_iter_entry_t *entry,
DP_UOID(agg_entry->ae_oid), DP_KEY(&agg_entry->ae_dkey),
agg_entry->ae_is_leader ? "yes" : "no");
agg_reset_dkey_entry(&agg_param->ap_agg_entry, entry);
rc = agg_get_obj_handle(agg_entry, true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure

DAOS_OBJ_EC_AGG_LEADER_DIFF | DAOS_FAIL_ALWAYS, 0, NULL);

print_message("wait for 30 seconds for EC aggregation.\n");
sleep(30);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, I was thinking the FORCE_EC_AGG is for reducing test time. As for setting two fail locs, we could change aggregation code to force aggregation for you new fail loc (similar to FORCE_EC_AGG).

wangshilong
wangshilong previously approved these changes Jun 18, 2024
@daosbuild1
Copy link
Collaborator

Test stage Functional Hardware Medium Verbs Provider completed with status UNSTABLE. https://build.hpdd.intel.com/job/daos-stack/job/daos//view/change-requests/job/PR-14593/1/testReport/

@daosbuild1
Copy link
Collaborator

Test stage Functional Hardware Medium UCX Provider completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-14593/3/execution/node/1620/log

@daosbuild1
Copy link
Collaborator

Test stage Functional Hardware Medium Verbs Provider MD on SSD completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-14593/3/execution/node/1424/log

@daosbuild1
Copy link
Collaborator

Test stage Functional Hardware Medium completed with status UNSTABLE. https://build.hpdd.intel.com/job/daos-stack/job/daos//view/change-requests/job/PR-14593/3/testReport/

@daosbuild1
Copy link
Collaborator

Test stage NLT on EL 8.8 completed with status UNSTABLE. https://build.hpdd.intel.com/job/daos-stack/job/daos//view/change-requests/job/PR-14593/4/testReport/

@daosbuild1
Copy link
Collaborator

Test stage Functional Hardware Medium UCX Provider completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-14593/5/execution/node/1578/log


ec_verify_parity_data(&req, "d_key", "a_key", (daos_size_t)0,
full_update_size, verify_data, DAOS_TX_NONE, true);
trigger_and_wait_ec_aggreation_2dkeys(arg, &oid, 1, "d_key1", "d_key2", "a_key", 0,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So to be clear, because this was discussed in chat, there is no way to trigger this with one failure and 1 parity target? Multiple dkeys alone is not a sufficient condition?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

multiple dkey is not a sufficient cond, need multiple dkeys share a parity shard and with different parity shard, select the shared shard as agg leader.
"no way to trigger this with one failure" possibly trigger with one failure, but with less possibility.

Fix EC aggregation wrong peer address when multiple dkeys on
same EC agg leader shard.
Change existing test cases to cover that case.

Required-githooks: true
Signed-off-by: Xuezhao Liu <xuezhao.liu@intel.com>
Required-githooks: true

Signed-off-by: Xuezhao Liu <xuezhao.liu@intel.com>
@daosbuild1
Copy link
Collaborator

Test stage Functional on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-14593/6/execution/node/1183/log

@daosbuild1
Copy link
Collaborator

Test stage Functional Hardware Medium UCX Provider completed with status FAILURE. https://build.hpdd.intel.com//job/daos-stack/job/daos/view/change-requests/job/PR-14593/8/execution/node/1444/log

@liuxuezhao
Copy link
Contributor Author

several failed case is cart_ctl failure due to https://daosio.atlassian.net/browse/DAOS-16008

@liuxuezhao liuxuezhao requested a review from NiuYawei June 26, 2024 01:13
@liuxuezhao liuxuezhao requested a review from a team June 27, 2024 08:44
@liuxuezhao liuxuezhao added the forced-landing The PR has known failures or has intentionally reduced testing, but should still be landed. label Jun 27, 2024
@gnailzenh gnailzenh merged commit e03fe47 into master Jun 28, 2024
50 of 53 checks passed
@gnailzenh gnailzenh deleted the lxz/ec_agg_peer_fix branch June 28, 2024 07:26
jolivier23 pushed a commit that referenced this pull request Jul 2, 2024
DAOS-16039 object: fix EC aggregation wrong peer address (#14593)
DAOS-16009 rebuild: fix O_TRUNC file size related handling
DAOS-15056 rebuild: add rpt to the rgt list properly (#13862)
DAOS-15517 rebuild: refine lock handling for rpt list (#14064)
DAOS-13812 container: fix destroy vs lookup (#12757)
DAOS-15627 dtx: redunce stack usage for DTX resync to avoid overflow (#14189)
DAOS-14845 rebuild: do not wait for EC agg for reclaim (#13610)

Signed-off-by: Xuezhao Liu <xuezhao.liu@intel.com>
Signed-off-by: Mohamad Chaarawi <mohamad.chaarawi@intel.com>
Signed-off-by: Jeff Olivier <jeffolivier@google.com>
Signed-off-by: Wang, Di <wddi218@gmail.com>
Signed-off-by: Di Wang <di.wang@intel.com>
Signed-off-by: Wang Shilong <shilong.wang@intel.com>
Signed-off-by: Fan Yong <fan.yong@intel.com>
@jolivier23 jolivier23 mentioned this pull request Jul 2, 2024
18 tasks
jolivier23 added a commit that referenced this pull request Jul 3, 2024
DAOS-16039 object: fix EC aggregation wrong peer address (#14593)
DAOS-16009 rebuild: fix O_TRUNC file size related handling
DAOS-15056 rebuild: add rpt to the rgt list properly (#13862)
DAOS-15517 rebuild: refine lock handling for rpt list (#14064)
DAOS-13812 container: fix destroy vs lookup (#12757)
DAOS-15627 dtx: redunce stack usage for DTX resync to avoid overflow (#14189)
DAOS-14845 rebuild: do not wait for EC agg for reclaim (#13610)

Signed-off-by: Xuezhao Liu <xuezhao.liu@intel.com>
Signed-off-by: Mohamad Chaarawi <mohamad.chaarawi@intel.com>
Signed-off-by: Jeff Olivier <jeffolivier@google.com>
Signed-off-by: Wang, Di <wddi218@gmail.com>
Signed-off-by: Di Wang <di.wang@intel.com>
Signed-off-by: Wang Shilong <shilong.wang@intel.com>
Signed-off-by: Fan Yong <fan.yong@intel.com>
grom72 pushed a commit to grom72/daos that referenced this pull request Jul 25, 2024
…14593)

* DAOS-16039 object: fix EC aggregation wrong peer address

Fix EC aggregation wrong peer address when multiple dkeys on
same EC agg leader shard.
Change existing test cases to cover that case.

Signed-off-by: Xuezhao Liu <xuezhao.liu@intel.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
forced-landing The PR has known failures or has intentionally reduced testing, but should still be landed.
Development

Successfully merging this pull request may close these issues.

6 participants