sync: Re-raise KeyboardInterrupt in main process

When running sync -j1, worker functions run directly in the main
process. Swallowing KeyboardInterrupt causes the loop to continue to the
next project instead of aborting.

Re-raise KeyboardInterrupt if running in the MainProcess, while
maintaining the suppression of stack traces in worker processes.

Bug: 468170157
Change-Id: I156d66bc209a265f7fa25eea0eb88737d1b51a34
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/581342
Commit-Queue: Gavin Mak <gavinmak@google.com>
Reviewed-by: Mike Frysinger <vapier@google.com>
Tested-by: Gavin Mak <gavinmak@google.com>
This commit is contained in:
Gavin Mak
2026-05-11 15:56:08 -07:00
committed by gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com
parent 7cc99b24c1
commit d5037230e9
3 changed files with 63 additions and 0 deletions
+8
View File
@@ -841,6 +841,8 @@ later is required to fix a server side protocol bug.
)
except KeyboardInterrupt:
logger.error("Keyboard interrupt while processing %s", project.name)
if not cls.is_multiprocessing_active():
raise
except GitError as e:
logger.error("error.GitError: Cannot fetch %s", e)
errors.append(e)
@@ -1104,6 +1106,8 @@ later is required to fix a server side protocol bug.
errors.extend(syncbuf.errors)
except KeyboardInterrupt:
logger.error("Keyboard interrupt while processing %s", project.name)
if not cls.is_multiprocessing_active():
raise
except GitError as e:
logger.error(
"error.GitError: Cannot checkout %s: %s", project.name, e
@@ -2410,6 +2414,8 @@ later is required to fix a server side protocol bug.
logger.error(
"Keyboard interrupt while processing %s", project.name
)
if not cls.is_multiprocessing_active():
raise
except GitError as e:
fetch_errors.append(e)
logger.error("error.GitError: Cannot fetch %s", e)
@@ -2460,6 +2466,8 @@ later is required to fix a server side protocol bug.
logger.error(
"Keyboard interrupt while processing %s", project.name
)
if not cls.is_multiprocessing_active():
raise
except GitError as e:
checkout_errors.append(e)
logger.error(