sync: Avoid duplicate projects in error text
Keep track of finished projects, not just successful ones, when deciding which projects still need to be synced. Also project errors are already reported by sync workers so stall detection doesn't need to add failed projects to the error list. Bug: 438178765 Change-Id: Ibf15aad009ba7295e70c8df2ff158215085e9732 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/498062 Reviewed-by: Scott Lee <ddoman@google.com> Tested-by: Gavin Mak <gavinmak@google.com>
This commit is contained in:
parent
380bf9546e
commit
a6e1a59ac1
1 changed files with 7 additions and 13 deletions
|
@ -2382,7 +2382,7 @@ later is required to fix a server side protocol bug.
|
||||||
|
|
||||||
def _ProcessSyncInterleavedResults(
|
def _ProcessSyncInterleavedResults(
|
||||||
self,
|
self,
|
||||||
synced_relpaths: Set[str],
|
finished_relpaths: Set[str],
|
||||||
err_event: _threading.Event,
|
err_event: _threading.Event,
|
||||||
errors: List[Exception],
|
errors: List[Exception],
|
||||||
opt: optparse.Values,
|
opt: optparse.Values,
|
||||||
|
@ -2426,9 +2426,9 @@ later is required to fix a server side protocol bug.
|
||||||
result.checkout_success,
|
result.checkout_success,
|
||||||
)
|
)
|
||||||
|
|
||||||
if result.fetch_success and result.checkout_success:
|
finished_relpaths.add(result.relpath)
|
||||||
synced_relpaths.add(result.relpath)
|
|
||||||
else:
|
if not success:
|
||||||
ret = False
|
ret = False
|
||||||
err_event.set()
|
err_event.set()
|
||||||
if result.fetch_error:
|
if result.fetch_error:
|
||||||
|
@ -2480,7 +2480,7 @@ later is required to fix a server side protocol bug.
|
||||||
self._interleaved_err_checkout_results = []
|
self._interleaved_err_checkout_results = []
|
||||||
|
|
||||||
err_event = multiprocessing.Event()
|
err_event = multiprocessing.Event()
|
||||||
synced_relpaths = set()
|
finished_relpaths = set()
|
||||||
project_list = list(all_projects)
|
project_list = list(all_projects)
|
||||||
pm = Progress(
|
pm = Progress(
|
||||||
"Syncing",
|
"Syncing",
|
||||||
|
@ -2514,7 +2514,7 @@ later is required to fix a server side protocol bug.
|
||||||
projects_to_sync = [
|
projects_to_sync = [
|
||||||
p
|
p
|
||||||
for p in project_list
|
for p in project_list
|
||||||
if p.relpath not in synced_relpaths
|
if p.relpath not in finished_relpaths
|
||||||
]
|
]
|
||||||
if not projects_to_sync:
|
if not projects_to_sync:
|
||||||
break
|
break
|
||||||
|
@ -2531,12 +2531,6 @@ later is required to fix a server side protocol bug.
|
||||||
stalled_projects_str,
|
stalled_projects_str,
|
||||||
)
|
)
|
||||||
err_event.set()
|
err_event.set()
|
||||||
|
|
||||||
# Include these in the final error report.
|
|
||||||
self._interleaved_err_checkout = True
|
|
||||||
self._interleaved_err_checkout_results.extend(
|
|
||||||
list(pending_relpaths)
|
|
||||||
)
|
|
||||||
break
|
break
|
||||||
previously_pending_relpaths = pending_relpaths
|
previously_pending_relpaths = pending_relpaths
|
||||||
|
|
||||||
|
@ -2571,7 +2565,7 @@ later is required to fix a server side protocol bug.
|
||||||
jobs = max(1, min(opt.jobs, len(work_items)))
|
jobs = max(1, min(opt.jobs, len(work_items)))
|
||||||
callback = functools.partial(
|
callback = functools.partial(
|
||||||
self._ProcessSyncInterleavedResults,
|
self._ProcessSyncInterleavedResults,
|
||||||
synced_relpaths,
|
finished_relpaths,
|
||||||
err_event,
|
err_event,
|
||||||
errors,
|
errors,
|
||||||
opt,
|
opt,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue