-
Notifications
You must be signed in to change notification settings - Fork 306
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-15834 client: disable interception before exec() #14405
Conversation
Features: pil4dfs Skip-func-test-el9: false Required-githooks: true Signed-off-by: Lei Huang <lei.huang@intel.com>
Ticket title is '2-./dfuse/daos_build.py:DaosBuild.test_dfuse_daos_build_wt_pil4dfs test fails on EL9 weekly testing.' |
Now daos build can pass on EL 9. |
@@ -4318,6 +4318,8 @@ reset_daos_env_before_exec(void) | |||
d_daos_inited = false; | |||
daos_debug_inited = false; | |||
context_reset = false; | |||
/* all IO requests go through dfuse */ | |||
d_hook_enabled = false; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
are there any open pool/container handles that need to be cleaned up here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
Normally bash creates child process with fork(), then call exec() to start a new application shortly. It probably is rare to open a new DFS container between fork() and exec().
I can address this issue in a follow up PR. We need to save the current pid when daos_pool_connect() and daos_cont_open() are called. We can close pool/container handles before exec() if they are opened by current process.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, yes, this only affect time between fork and exec so you're right, it's likely rare to non-existent. Apps that exec are probably doing nothing between fork and exec.
All tests passed in CI. |
please do merge approval and backport to 2.6 |
@mchaarawi Thank you! What label we should add to apply for 2.6 backport in Jira? |
request_for_2.6 |
Signed-off-by: Lei Huang <lei.huang@intel.com>
Disable interception right before calling exec() which loads a new application image. All IO requests inside exec() will be handled by dfuse.
Once the new application image is loaded in exec and starts, function interception will be enabled inside the constructor function.
Features: pil4dfs
Skip-func-test-el9: false
Required-githooks: true
Before requesting gatekeeper:
Features:
(orTest-tag*
) commit pragma was used or there is a reason documented that there are no appropriate tags for this PR.Gatekeeper: