Re: [PATCH v2 17/17] rename_tmp_log(): on SCLD_VANISHED, retry

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH v2 17/17] rename_tmp_log(): on SCLD_VANISHED, retry

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:59:36

Michael Haggerty [off-list ref] 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.

quoted hunk
Signed-off-by: Michael Haggerty <redacted>
---
 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;
 	}

Re: [PATCH v2 17/17] rename_tmp_log(): on SCLD_VANISHED, retry

From: Michael Haggerty <hidden>
Date: 2016-06-15 22:59:37

On 01/06/2014 07:21 PM, Junio C Hamano wrote:
Michael Haggerty [off-list ref] writes:
quoted
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 ;-)
Good catch.  The increment 3 -> 4 was because the first call to rename()
is optimistic, and can fail once even if there is no race.  I will
change the commit message of 16/17 to explain this point, and of 17/17
to match reality.
The series mostly looked sane from a cursory read.

Will re-queue.  Thanks.
Michael

-- 
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help