From 1c66dece59d4595eee3fb33d2609e2e288a28ff4 Mon Sep 17 00:00:00 2001 From: Scott Brenstuhl Date: Sat, 23 Feb 2019 16:37:26 -0800 Subject: Add reconnect automatically enhancement (#1009) * Adding reconnect automatically enhancement * files for pr checklist * changelog fixes * setting auto-reconnect to be the default * fix issue of getting logged queries instead of most recent * travisci pep8 check issue --- AUTHORS | 1 + changelog.rst | 1 + pgcli/main.py | 23 +++++++++++------------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/AUTHORS b/AUTHORS index e4bbf9e2..fc750d9e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -90,6 +90,7 @@ Contributors: * Mikhail Elovskikh (wronglink) * Marcin Cieślak (saper) * easteregg + * Scott Brenstuhl (808sAndBR) Creator: -------- diff --git a/changelog.rst b/changelog.rst index e1fbe5c7..e5f50985 100644 --- a/changelog.rst +++ b/changelog.rst @@ -5,6 +5,7 @@ Features: --------- * keybindings for closing the autocomplete list +* reconnect automatically when server closes connection Bug fixes: ---------- diff --git a/pgcli/main.py b/pgcli/main.py index 2e5cffde..856f28e3 100644 --- a/pgcli/main.py +++ b/pgcli/main.py @@ -555,7 +555,7 @@ class PGCli(object): except OperationalError as e: logger.error("sql: %r, error: %r", text, e) logger.error("traceback: %r", traceback.format_exc()) - self._handle_server_closed_connection() + self._handle_server_closed_connection(text) except PgCliQuitError as e: raise except Exception as e: @@ -810,17 +810,16 @@ class PGCli(object): return output, meta_query - def _handle_server_closed_connection(self): - """Used during CLI execution""" - reconnect = click.prompt( - 'Connection reset. Reconnect (Y/n)', - show_default=False, type=bool, default=True) - if reconnect: - try: - self.pgexecute.connect() - click.secho('Reconnected!\nTry the command again.', fg='green') - except OperationalError as e: - click.secho(str(e), err=True, fg='red') + def _handle_server_closed_connection(self, text): + """Used during CLI execution.""" + try: + click.secho('Reconnecting...', fg='green') + self.pgexecute.connect() + click.secho('Reconnected!', fg='green') + self.execute_command(text) + except OperationalError as e: + click.secho('Reconnect Failed', fg='red') + click.secho(str(e), err=True, fg='red') def refresh_completions(self, history=None, persist_priorities='all'): """ Refresh outdated completions -- cgit v1.2.3