diff options
author | Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> | 2020-10-20 11:47:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-20 11:47:24 +0100 |
commit | a312e890f5b5746f991b07970dd92d680e08dd4c (patch) | |
tree | cb9cb44413f6c2bb4ba4306f2caa30ac16158156 | |
parent | Move schema file for as_device_stream (#8590) (diff) | |
download | synapse-a312e890f5b5746f991b07970dd92d680e08dd4c.tar.xz |
Cast errors generated during synapse_port_db to str (#8585)
I noticed in https://github.com/matrix-org/synapse/issues/8575 that the `end_error` variable in `synapse_port_db` is set to an `Exception`, even though later we expect it to be a `str`. This PR simply casts an exception raised to a string. I'm doing this instead of having `end_error` be of type exception as we explicitly set `end_error` to a str here: https://github.com/matrix-org/synapse/blob/d25eb8f3709965d0face01a041d5292490bf0139/scripts/synapse_port_db#L542-L547 This whole file could probably use some heavy refactoring, but until then at least this fix will prevent exception contents from being hidden from us and users.
-rw-r--r-- | changelog.d/8585.bugfix | 1 | ||||
-rwxr-xr-x | scripts/synapse_port_db | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/changelog.d/8585.bugfix b/changelog.d/8585.bugfix new file mode 100644 index 0000000000..e97e6ac1d8 --- /dev/null +++ b/changelog.d/8585.bugfix @@ -0,0 +1 @@ +Fix a bug that prevented errors encountered during execution of the `synapse_port_db` from being correctly printed. \ No newline at end of file diff --git a/scripts/synapse_port_db b/scripts/synapse_port_db index 2d0b59ab53..6c7664ad4a 100755 --- a/scripts/synapse_port_db +++ b/scripts/synapse_port_db @@ -22,6 +22,7 @@ import logging import sys import time import traceback +from typing import Optional import yaml @@ -152,7 +153,7 @@ IGNORED_TABLES = { # Error returned by the run function. Used at the top-level part of the script to # handle errors and return codes. -end_error = None +end_error = None # type: Optional[str] # The exec_info for the error, if any. If error is defined but not exec_info the script # will show only the error message without the stacktrace, if exec_info is defined but # not the error then the script will show nothing outside of what's printed in the run @@ -635,7 +636,7 @@ class Porter(object): self.progress.done() except Exception as e: global end_error_exec_info - end_error = e + end_error = str(e) end_error_exec_info = sys.exc_info() logger.exception("") finally: |