* Force-flush log output so we don't lose log output in certain error cases.
* Slow down exit paths: add sleep to die(), wait until last moment to
kill child processes (including the awk log output filter)
Change-Id: I1620fd33b89b237d9c2bb6206f3de2c81719f676
... | ... |
@@ -522,7 +522,7 @@ if [[ -n "$LOGFILE" ]]; then |
522 | 522 |
exec 3>&1 |
523 | 523 |
if [[ "$VERBOSE" == "True" ]]; then |
524 | 524 |
# Redirect stdout/stderr to tee to write the log file |
525 |
- exec 1> >( awk ' |
|
525 |
+ exec 1> >( awk -v logfile=${LOGFILE} ' |
|
526 | 526 |
/((set \+o$)|xtrace)/ { next } |
527 | 527 |
{ |
528 | 528 |
cmd ="date +\"%Y-%m-%d %H:%M:%S.%3N | \"" |
... | ... |
@@ -530,8 +530,9 @@ if [[ -n "$LOGFILE" ]]; then |
530 | 530 |
close("date +\"%Y-%m-%d %H:%M:%S.%3N | \"") |
531 | 531 |
sub(/^/, now) |
532 | 532 |
|
533 |
- fflush() |
|
534 |
- }' | tee "${LOGFILE}" ) 2>&1 |
|
533 |
+ print > logfile |
|
534 |
+ fflush("") |
|
535 |
+ }' ) 2>&1 |
|
535 | 536 |
# Set up a second fd for output |
536 | 537 |
exec 6> >( tee "${SUMFILE}" ) |
537 | 538 |
else |
... | ... |
@@ -579,21 +580,24 @@ fi |
579 | 579 |
# ----------------------- |
580 | 580 |
|
581 | 581 |
# Kill background processes on exit |
582 |
-trap clean EXIT |
|
583 |
-clean() { |
|
582 |
+trap exit_trap EXIT |
|
583 |
+function exit_trap { |
|
584 | 584 |
local r=$? |
585 |
- kill >/dev/null 2>&1 $(jobs -p) |
|
585 |
+ echo "exit_trap called, cleaning up child processes" |
|
586 |
+ kill 2>&1 $(jobs -p) |
|
586 | 587 |
exit $r |
587 | 588 |
} |
588 | 589 |
|
589 |
- |
|
590 | 590 |
# Exit on any errors so that errors don't compound |
591 |
-trap failed ERR |
|
592 |
-failed() { |
|
591 |
+trap err_trap ERR |
|
592 |
+function err_trap { |
|
593 | 593 |
local r=$? |
594 |
- kill >/dev/null 2>&1 $(jobs -p) |
|
595 | 594 |
set +o xtrace |
596 |
- [ -n "$LOGFILE" ] && echo "${0##*/} failed: full log in $LOGFILE" |
|
595 |
+ if [[ -n "$LOGFILE" ]]; then |
|
596 |
+ echo "${0##*/} failed: full log in $LOGFILE" |
|
597 |
+ else |
|
598 |
+ echo "${0##*/} failed" |
|
599 |
+ fi |
|
597 | 600 |
exit $r |
598 | 601 |
} |
599 | 602 |
|