From 88ba140db9cd2701e0b9d247f124639a944a20f7 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 7 May 2021 07:22:51 +0530 Subject: [PATCH] Retry sending message after a sleep Avoids spurious errors on multiple simultaneous calibre launches. Fixes #1927546 ["ERROR: Contacting calibre failed"](https://bugs.launchpad.net/calibre/+bug/1927546) --- src/calibre/gui2/main.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index 2bda7b4dd1..c90e8c4bb0 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -447,14 +447,18 @@ singleinstance_name = 'GUI' def send_message(msg): try: send_message_in_process(msg) - except Exception as err: - print(_('Failed to contact running instance of calibre'), file=sys.stderr, flush=True) - print(err, file=sys.stderr, flush=True) - if Application.instance(): - error_dialog(None, _('Contacting calibre failed'), _( - 'Failed to contact running instance of calibre, try restarting calibre'), - det_msg=str(err) + '\n\n' + repr(msg), show=True) - return False + except Exception: + time.sleep(2) + try: + send_message_in_process(msg) + except Exception as err: + print(_('Failed to contact running instance of calibre'), file=sys.stderr, flush=True) + print(err, file=sys.stderr, flush=True) + if Application.instance(): + error_dialog(None, _('Contacting calibre failed'), _( + 'Failed to contact running instance of calibre, try restarting calibre'), + det_msg=str(err) + '\n\n' + repr(msg), show=True) + return False return True