Print exceptions when cbuildbot misbehaves.
BUG=none
TEST=Lots of remote trybot runs.
Change-Id: Ib6153b154921b32303b458763552139b239d3867
Reviewed-on: https://gerrit.chromium.org/gerrit/45774
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: David James <davidjames@chromium.org>
Tested-by: David James <davidjames@chromium.org>
diff --git a/scripts/cbuildbot.py b/scripts/cbuildbot.py
index b79b95c..e2018c7 100644
--- a/scripts/cbuildbot.py
+++ b/scripts/cbuildbot.py
@@ -19,6 +19,7 @@
import pprint
import sys
import time
+import traceback
from chromite.buildbot import builderstage as bs
from chromite.buildbot import cbuildbot_config
@@ -308,15 +309,15 @@
success = self._ReExecuteInBuildroot(sync_instance)
else:
self.RunStages()
- except results_lib.StepFailure:
- # StepFailure exceptions are already recorded in the report, so there
- # is no need to print these tracebacks twice.
+ except Exception as ex:
+ # If the build is marked as successful, but threw exceptions, that's a
+ # problem.
exception_thrown = True
- if not print_report:
+ if results_lib.Results.BuildSucceededSoFar():
+ traceback.print_exc(file=sys.stdout)
raise
- except Exception:
- exception_thrown = True
- raise
+ if not (print_report and isinstance(ex, results_lib.StepFailure)):
+ raise
finally:
if print_report:
results_lib.WriteCheckpoint(self.options.buildroot)