diff --git a/server/modules/routing/readconnroute.c b/server/modules/routing/readconnroute.c index 3db858932..e32bdd677 100644 --- a/server/modules/routing/readconnroute.c +++ b/server/modules/routing/readconnroute.c @@ -885,14 +885,21 @@ static void handleError( { spinlock_release(&session->ses_lock); } - - if (backend_dcb != router_cli_ses->backend_dcb) - { - /* Linkages have gone badly wrong - this may not be best solution */ - raise(SIGABRT); + + if (router_cli_ses->backend_dcb) { + if (backend_dcb != router_cli_ses->backend_dcb) + { + /* Linkages have gone badly wrong */ + LOGIF(LE, (skygw_log_write(LOGFILE_ERROR, + "Read Connection Router error in handleError: router client " + "session DCB %p is not null, but does not match backend DCB %p " + "either. \n", + router_cli_ses->backend_dcb, + backend_dcb))); + } + router_cli_ses->backend_dcb = NULL; + dcb_close(backend_dcb); } - router_cli_ses->backend_dcb = NULL; - dcb_close(backend_dcb); /** false because connection is not available anymore */ *succp = false; diff --git a/server/modules/routing/readwritesplit/readwritesplit.c b/server/modules/routing/readwritesplit/readwritesplit.c index 0ad00886c..6b9dce74c 100644 --- a/server/modules/routing/readwritesplit/readwritesplit.c +++ b/server/modules/routing/readwritesplit/readwritesplit.c @@ -3655,10 +3655,10 @@ static bool select_connect_backend_servers( ss_dassert(backend_ref[i].bref_backend->backend_conn_count > 0); /** disconnect opened connections */ - dcb_close(backend_ref[i].bref_dcb); bref_clear_state(&backend_ref[i], BREF_IN_USE); /** Decrease backend's connection counter. */ atomic_add(&backend_ref[i].bref_backend->backend_conn_count, -1); + dcb_close(backend_ref[i].bref_dcb); } } }