Re: [PATCH v2 17/17] rename_tmp_log(): on SCLD_VANISHED, retry
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 6, 2014, 18:21 UTC
- Message-ID
- <xmqqtxdhhsyq.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <1389015935-21936-18-git-send-email-mhagger@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
> If safe_create_leading_directories() fails because a file along the > path unexpectedly vanished, try again from the beginning. Try at most > 3 times.
As the previous step bumped it from 3 to 4 without explanation, the above no longer reflects reality ;-)
The series mostly looked sane from a cursory read.
Will re-queue. Thanks.
Show 26 quoted lines
>
> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
> ---
> refs.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/refs.c b/refs.c
> index 490525a..810f802 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -2533,7 +2533,14 @@ static int rename_tmp_log(const char *newrefname)
> int attempts = 4;
>
> retry:
> - if (safe_create_leading_directories(git_path("logs/%s", newrefname))) {
> + switch (safe_create_leading_directories(git_path("logs/%s", newrefname))) {
> + case SCLD_OK:
> + break; /* success */
> + case SCLD_VANISHED:
> + if (--attempts > 0)
> + goto retry;
> + /* fall through */
> + default:
> error("unable to create directory for %s", newrefname);
> return -1;
> }