Fix race in shell when testing for errors to raise SysExit
SysExit is raised if the OutputManager has non-zero error_count. However, error_count is incremented in a print thread, but tested on the main thread. Currently error_count is tested before the OutputManager print threads have exited, which results in a race. This race means that SysExit is not always raised even when an error has occured. This change moves the error_count test after the OutputManager context manager has exited, which ensures that the OutputManager threads have exited. Change-Id: I5ef7d9f10057fe2b41f48ab95066a7265b86a3ac Closes-Bug: #1379229
This commit is contained in:
@@ -1304,9 +1304,7 @@ Examples:
|
|||||||
except (ClientException, RequestException, socket.error) as err:
|
except (ClientException, RequestException, socket.error) as err:
|
||||||
output.error(str(err))
|
output.error(str(err))
|
||||||
|
|
||||||
had_error = output.error_count > 0
|
if output.error_count > 0:
|
||||||
|
|
||||||
if had_error:
|
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user