-
Notifications
You must be signed in to change notification settings - Fork 127
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
merge-ort: clean up after failed merge #1307
Conversation
/submit |
Submitted as pull.1307.git.1659084748350.gitgitgadget@gmail.com To fetch this version into
To fetch this version to local tag
|
On the Git mailing list, Elijah Newren wrote (reply to this): On Fri, Jul 29, 2022 at 1:52 AM Johannes Schindelin via GitGitGadget
<gitgitgadget@gmail.com> wrote:
>
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> In 9fefce68dc8 (merge-ort: basic outline for merge_switch_to_result(),
> 2020-12-13), we added functionality to lay down the result of a merge on
> disk. But we forgot to release the data structures in case
> `unpack_trees()` failed to run properly.
>
> This was pointed out by the `linux-leaks` job in our CI runs.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
> merge-ort: clean up after failed merge
>
> I was investigating why seen's CI runs fail, and came up with this fix.
>
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1307%2Fdscho%2Fmerge-ort-impl-leakfix-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1307/dscho/merge-ort-impl-leakfix-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/1307
>
> merge-ort.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/merge-ort.c b/merge-ort.c
> index ee7fbe71404..61b9e90018b 100644
> --- a/merge-ort.c
> +++ b/merge-ort.c
> @@ -1002,6 +1002,7 @@ void merge_switch_to_result(struct merge_options *opt,
> if (checkout(opt, head, result->tree)) {
> /* failure to function */
> result->clean = -1;
> + merge_finalize(opt, result);
> return;
> }
>
> @@ -1010,6 +1011,7 @@ void merge_switch_to_result(struct merge_options *opt,
> &opti->conflicted)) {
> /* failure to function */
> result->clean = -1;
> + merge_finalize(opt, result);
> return;
> }
> }
>
> base-commit: 9fefce68dc85d96781090f86c067d83f7c50b617
> --
> gitgitgadget
Good catch. Can you rebase on to a slightly newer commit? I think we
also need a trace2_region_leave() call in each block as well, which is
only clear if you look at newer versions. |
In 9fefce6 (merge-ort: basic outline for merge_switch_to_result(), 2020-12-13), we added functionality to lay down the result of a merge on disk. But we forgot to release the data structures in case `unpack_trees()` failed to run properly. This was pointed out by the `linux-leaks` job in our CI runs. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
In 557ac03 (merge-ort: begin performance work; instrument with trace2_region_* calls, 2021-01-23), we added Trace2 instrumentation, but in the error path that returns early, we forgot to tell Trace2 that we're leaving the region. Let's fix that. Pointed-out-by: Elijah Newren <newren@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
128f77f
to
d2e1af0
Compare
/submit |
Submitted as pull.1307.v2.git.1659114727.gitgitgadget@gmail.com To fetch this version into
To fetch this version to local tag
|
This branch is now known as |
This patch series was integrated into seen via git@197e992. |
This patch series was integrated into seen via git@ac792f8. |
There was a status update in the "New Topics" section about the branch Plug memory leaks in the failure code path in the "merge-ort" merge strategy backend. Will merge to 'next'? source: <pull.1307.v2.git.1659114727.gitgitgadget@gmail.com> |
On the Git mailing list, Elijah Newren wrote (reply to this): On Fri, Jul 29, 2022 at 10:12 AM Johannes Schindelin via GitGitGadget
<gitgitgadget@gmail.com> wrote:
>
> I was investigating why seen's CI runs fail, and came up with this fix.
>
> Changes since v1:
>
> * Rebased onto en/merge-ort-perf.
> * Now we're not only cleaning up the merge data structure, but also leaving
> the Trace2 region when returning early from merge_switch_to_result().
>
> Johannes Schindelin (2):
> merge-ort: clean up after failed merge
> merge-ort: do leave Trace2 region even if checkout fails
>
> merge-ort.c | 5 +++++
> 1 file changed, 5 insertions(+)
Thanks, series looks good to me:
Reviewed-by: Elijah Newren <newren@gmail.com> |
On the Git mailing list, Junio C Hamano wrote (reply to this): Elijah Newren <newren@gmail.com> writes:
> On Fri, Jul 29, 2022 at 10:12 AM Johannes Schindelin via GitGitGadget
> <gitgitgadget@gmail.com> wrote:
>>
>> I was investigating why seen's CI runs fail, and came up with this fix.
>>
>> Changes since v1:
>>
>> * Rebased onto en/merge-ort-perf.
>> * Now we're not only cleaning up the merge data structure, but also leaving
>> the Trace2 region when returning early from merge_switch_to_result().
>>
>> Johannes Schindelin (2):
>> merge-ort: clean up after failed merge
>> merge-ort: do leave Trace2 region even if checkout fails
>>
>> merge-ort.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>
> Thanks, series looks good to me:
>
> Reviewed-by: Elijah Newren <newren@gmail.com>
Thanks, both.
The new "leave" calls immediately next to the existing ones that
look identical appear duplicated, but correcting the logic first
in an obvious way like the posted patch, leaving any clean-up to
later, is a prudent thing to do.
Queued. |
This patch series was integrated into seen via git@0c11767. |
This patch series was integrated into next via git@0c9f02f. |
There was a status update in the "Cooking" section about the branch Plug memory leaks in the failure code path in the "merge-ort" merge strategy backend. Will merge to 'master'. source: <pull.1307.v2.git.1659114727.gitgitgadget@gmail.com> |
This patch series was integrated into seen via git@c48a48f. |
This patch series was integrated into seen via git@4fe176f. |
There was a status update in the "Cooking" section about the branch Plug memory leaks in the failure code path in the "merge-ort" merge strategy backend. Will merge to 'master'. source: <pull.1307.v2.git.1659114727.gitgitgadget@gmail.com> |
This patch series was integrated into seen via git@3ec95b0. |
This patch series was integrated into seen via git@bac92b1. |
This patch series was integrated into master via git@bac92b1. |
This patch series was integrated into next via git@bac92b1. |
Closed via bac92b1. |
I was investigating why
seen
's CI runs fail, and came up with this fix.Changes since v1:
en/merge-ort-perf
.merge_switch_to_result()
.Cc: Elijah Newren newren@gmail.com