Description
The assembling of error message in case of a TransientError is not done correctly in scheduler_client.py.
Incorrect:
raise self.TransientError(", ".join( [m for m in resp.details] if resp.details else []))
Correct:
raise self.TransientError(", ".join( [m.message for m in resp.details] if resp.details else []))
This is the unfortunate case of python dynamic typing where the unit test did not catch the problem due to matching incorrect expectations:
mock_thrift_client.killTasks.side_effect = [ Response(responseCode=ResponseCode.ERROR_TRANSIENT, details=["message1", "message2"], ...