From a47fd6994d5dcab0aadea0348ea380a22248bebf Mon Sep 17 00:00:00 2001 From: Fedor Muratov Date: Fri, 10 May 2019 00:12:58 +0300 Subject: [PATCH] Add pg reconnection loop (#731) Signed-off-by: Fedor Muratov --- src/backends/postgresql/error.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/backends/postgresql/error.cpp b/src/backends/postgresql/error.cpp index 8106d5371..c232437b9 100644 --- a/src/backends/postgresql/error.cpp +++ b/src/backends/postgresql/error.cpp @@ -95,20 +95,22 @@ details::postgresql_result::check_for_data(char const* errMsg) const callback->started(); bool retry = false; - std::string newTarget; - - callback->failed(retry, newTarget); - - if (retry) - { - connection_parameters parameters("postgresql", newTarget); - - sessionBackend_.clean_up(); - - sessionBackend_.connect(parameters); - - reconnected = true; - } + do { + std::string newTarget; + + callback->failed(retry, newTarget); + + if (retry) + { + connection_parameters parameters("postgresql", newTarget); + + sessionBackend_.clean_up(); + + sessionBackend_.connect(parameters); + + reconnected = true; + } + } while (retry && !reconnected); } catch (...) {