From c9300bb3b3a02d6b1d89f6ad8a3145b9a5689ba5 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Thu, 3 Feb 2011 14:17:58 +0100 Subject: [PATCH] Import-export: fix logging of daemon output In case of failures, the recent daemon output is logged as %r on a list of unicode strings, which results in the (ugly): Thu Feb 3 05:13:34 2011 snapshot/0 failed to send data: Exited with status 1 (recent output: [u' DUMP: Date of this level 0 dump: Thu Feb 3 05:13:18 2011', u' DUMP: Dumping /dev/mapper/6369a5f7-1e67-4d0d-a4f0-956b3649c6d7.disk0_data.snap-1 (an unlisted file system) to standard output', u' DUMP: Label: none', u' DUMP: Writing 10 Kilobyte records', u' DUMP: mapping (Pass I) [regular files]', u' DUMP: mapping (Pass II) [directories]', u' DUMP: estimated 54301 blocks.', u' DUMP: Volume 1 started with block 1 at: Thu Feb 3 05:13:19 2011', u' DUMP: dumping (Pass III) [directories]', u' DUMP: dumping (Pass IV) [regular files]', u'socat: E SSL_write(): Connection reset by peer', u"dd: dd: writing `standard output': Broken pipe", u' DUMP: Broken pipe', u' DUMP: The ENTIRE dump is aborted.']) This patch joins this list and makes it a non-unicode string, thus resulting in the more readable (and ~10% shorter): Thu Feb 3 05:16:04 2011 snapshot/0 failed to send data: Exited with status 1 (recent output: DUMP: Date of this level 0 dump: Thu Feb 3 05:15:58 2011\n DUMP: Dumping /dev/mapper/6369a5f7-1e67-4d0d-a4f0-956b3649c6d7.disk0_data.snap-1 (an unlisted file system) to standard output\n DUMP: Label: none\n DUMP: Writing 10 Kilobyte records\n DUMP: mapping (Pass I) [regular files]\n DUMP: mapping (Pass II) [directories]\n DUMP: estimated 54350 blocks.\n DUMP: Volume 1 started with block 1 at: Thu Feb 3 05:15:59 2011\n DUMP: dumping (Pass III) [directories]\nsocat: E SSL_write(): Connection reset by peer\ndd: dd: writing `standard output': Broken pipe\n DUMP: Broken pipe\n DUMP: The ENTIRE dump is aborted.) Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/masterd/instance.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/masterd/instance.py b/lib/masterd/instance.py index 733c4d7c7..45abf49b9 100644 --- a/lib/masterd/instance.py +++ b/lib/masterd/instance.py @@ -1,7 +1,7 @@ # # -# Copyright (C) 2010 Google Inc. +# Copyright (C) 2010, 2011 Google Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -196,7 +196,7 @@ class _DiskImportExportBase(object): """ if self._daemon: - return self._daemon.recent_output + return "\n".join(self._daemon.recent_output) return None @@ -869,7 +869,7 @@ class _TransferInstSourceCb(_TransferInstCbBase): if ie.success: self.feedback_fn("%s finished sending data" % dtp.data.name) else: - self.feedback_fn("%s failed to send data: %s (recent output: %r)" % + self.feedback_fn("%s failed to send data: %s (recent output: %s)" % (dtp.data.name, ie.final_message, ie.recent_output)) dtp.RecordResult(ie.success) @@ -919,7 +919,7 @@ class _TransferInstDestCb(_TransferInstCbBase): if ie.success: self.feedback_fn("%s finished receiving data" % dtp.data.name) else: - self.feedback_fn("%s failed to receive data: %s (recent output: %r)" % + self.feedback_fn("%s failed to receive data: %s (recent output: %s)" % (dtp.data.name, ie.final_message, ie.recent_output)) dtp.RecordResult(ie.success) @@ -1120,7 +1120,7 @@ class _RemoteExportCb(ImportExportCbBase): if ie.success: self._feedback_fn("Disk %s finished sending data" % idx) else: - self._feedback_fn("Disk %s failed to send data: %s (recent output: %r)" % + self._feedback_fn("Disk %s failed to send data: %s (recent output: %s)" % (idx, ie.final_message, ie.recent_output)) self._dresults[idx] = bool(ie.success) @@ -1407,7 +1407,7 @@ class _RemoteImportCb(ImportExportCbBase): self._feedback_fn("Disk %s finished receiving data" % idx) else: self._feedback_fn(("Disk %s failed to receive data: %s" - " (recent output: %r)") % + " (recent output: %s)") % (idx, ie.final_message, ie.recent_output)) self._dresults[idx] = bool(ie.success) -- GitLab