From: Kyle <kiltnaked@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Git Mailing List" <git@vger.kernel.org>
Subject: Re: [PATCH] gc: notice gc processes run by other users
Date: Thu, 2 Jan 2014 16:11:24 -0800 [thread overview]
Message-ID: <02BCE0EB-ADA1-48F9-BD00-369FFDB5E372@gmail.com> (raw)
In-Reply-To: <720d7a5676f8cbfc76c80198f9d3816@74d39fa044aa309eaea14b9f57fe79c>
On Dec 31, 2013, at 04:07, Kyle J. McKay wrote:
> Since 64a99eb4 git gc refuses to run without the --force option if
> another gc process on the same repository is already running.
>
> However, if the repository is shared and user A runs git gc on the
> repository and while that gc is still running user B runs git gc on
> the same repository the gc process run by user A will not be noticed
> and the gc run by user B will go ahead and run.
>
> The problem is that the kill(pid, 0) test fails with an EPERM error
> since user B is not allowed to signal processes owned by user A
> (unless user B is root).
>
> Update the test to recognize an EPERM error as meaning the process
> exists and another gc should not be run (unless --force is given).
Oops, sorry, forgot sign off, here's my sign off:
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
> ---
>
> I suggest this be included in maint as others may also have expected
> the
> shared repository, different user gc scenario to be caught by the new
> code when in fact it's not without this patch.
>
> builtin/gc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/builtin/gc.c b/builtin/gc.c
> index c14190f8..25f2237c 100644
> --- a/builtin/gc.c
> +++ b/builtin/gc.c
> @@ -222,7 +222,7 @@ static const char *lock_repo_for_gc(int force,
> pid_t* ret_pid)
> time(NULL) - st.st_mtime <= 12 * 3600 &&
> fscanf(fp, "%"PRIuMAX" %127c", &pid, locking_host) == 2 &&
> /* be gentle to concurrent "gc" on remote hosts */
> - (strcmp(locking_host, my_host) || !kill(pid, 0));
> + (strcmp(locking_host, my_host) || !kill(pid, 0) || errno ==
> EPERM);
> if (fp != NULL)
> fclose(fp);
> if (should_exit) {
> --
> 1.8.5.2
>
next prev parent reply other threads:[~2014-01-03 0:11 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-31 12:07 [PATCH] gc: notice gc processes run by other users Kyle J. McKay
2013-12-31 13:46 ` Duy Nguyen
2013-12-31 20:35 ` Thiago Farina
2014-01-03 0:11 ` Kyle [this message]
2014-01-03 0:15 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=02BCE0EB-ADA1-48F9-BD00-369FFDB5E372@gmail.com \
--to=kiltnaked@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pclouds@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox