Recover from broken process pools in merge operations
Some merge operations catch too generic exceptions which causes BrokeProcessPool exceptions to never reach the executor to allow the executor to recover. Bubble these exceptions up to the exececutor for them to be handled. Change-Id: I77d4d381e12195bcfe7d831a2b9e6d361b90f5a2
This commit is contained in:
parent
3eae2582d6
commit
d5bfbf53b6
|
@ -23,6 +23,7 @@ import os
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import time
|
import time
|
||||||
|
from concurrent.futures.process import BrokenProcessPool
|
||||||
|
|
||||||
import git
|
import git
|
||||||
import gitdb
|
import gitdb
|
||||||
|
@ -1058,6 +1059,8 @@ class Merger(object):
|
||||||
try:
|
try:
|
||||||
repo.reset(zuul_event_id=zuul_event_id,
|
repo.reset(zuul_event_id=zuul_event_id,
|
||||||
process_worker=process_worker)
|
process_worker=process_worker)
|
||||||
|
except BrokenProcessPool:
|
||||||
|
raise
|
||||||
except Exception:
|
except Exception:
|
||||||
log.exception("Unable to reset repo %s" % repo)
|
log.exception("Unable to reset repo %s" % repo)
|
||||||
return None, None
|
return None, None
|
||||||
|
@ -1135,6 +1138,8 @@ class Merger(object):
|
||||||
item, recent, repo_state, zuul_event_id,
|
item, recent, repo_state, zuul_event_id,
|
||||||
branches=branches,
|
branches=branches,
|
||||||
process_worker=process_worker)
|
process_worker=process_worker)
|
||||||
|
except BrokenProcessPool:
|
||||||
|
raise
|
||||||
except Exception:
|
except Exception:
|
||||||
self.log.exception("Error merging item %s", item)
|
self.log.exception("Error merging item %s", item)
|
||||||
if errors is not None:
|
if errors is not None:
|
||||||
|
|
Loading…
Reference in New Issue