git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] credential-store: use timeout when locking file

From
Simão Afonso <simao.afonso@powertools-tech.com>
Date
Oct 30, 2020, 18:07 UTC
Message-ID
<20201030180718.4i7txqkgye7r6pkb@safonso-t430>

When holding the lock for rewriting the credential file, use a timeout to avoid race conditions when the credentials file needs to be updated in parallel.

An example would be doing `fetch --all` on a repository with several remotes that need credentials, using parallel fetching.

The timeout is hardcoded to 1 second, since this is just to solve a race condition.

This was reported here:
https://lore.kernel.org/git/20201029192020.mcri76ylbdure2o7@safonso-t430/
---
 builtin/credential-store.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/builtin/credential-store.c b/builtin/credential-store.c
index 5331ab151..acff4abae 100644
--- a/builtin/credential-store.c
+++ b/builtin/credential-store.c
@@ -58,8 +58,9 @@ static void print_line(struct strbuf *buf)
 static void rewrite_credential_file(const char *fn, struct credential *c,
 				    struct strbuf *extra)
 {
-	if (hold_lock_file_for_update(&credential_lock, fn, 0) < 0)
-		die_errno("unable to get credential storage lock");
+	static long timeout = 1000;
+	if (hold_lock_file_for_update_timeout(&credential_lock, fn, 0, timeout) < 0)
+		die_errno("unable to get credential storage lock in %ld ms", timeout);
 	if (extra)
 		print_line(extra);
 	parse_credential_file(fn, c, NULL, print_line);
-- 
2.29.1
Next: Junio C Hamano
Message 1 of 7 in “credential-store: use timeout when locking file”
  1. credential-store: use timeout when locking fileSimão Afonso, Oct 30, 2020
  2. Junio C HamanoOct 30, 2020
  3. crendential-store: use timeout when locking fileSimão Afonso, Nov 24, 2020
  4. Junio C HamanoNov 24, 2020
  5. Jeff KingNov 25, 2020
  6. crendential-store: use timeout when locking fileSimão Afonso, Nov 25, 2020
  7. Jeff KingNov 26, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.