From a0cc8610626df4e5896d0f230951c60016008a92 Mon Sep 17 00:00:00 2001 From: Razvan Becheriu Date: Wed, 6 Nov 2019 18:21:49 +0200 Subject: [PATCH] [#887,!572] use thread_local instead of ThreadResource --- src/lib/mysql/mysql_connection.cc | 12 +++++++++++- src/lib/mysql/mysql_connection.h | 14 +------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/lib/mysql/mysql_connection.cc b/src/lib/mysql/mysql_connection.cc index 84127b195d..a40aafa75a 100644 --- a/src/lib/mysql/mysql_connection.cc +++ b/src/lib/mysql/mysql_connection.cc @@ -128,9 +128,19 @@ MySqlTransaction::commit() { committed_ = true; } +MySqlHolder& +MySqlConnection::handle() const { + thread_local std::shared_ptr result(std::make_shared()); + if (connected_) { + result->openDatabase(*(const_cast(this))); + } + if (prepared_) { + result->prepareStatements(*(const_cast(this))); + } + return *result; +} // Open the database using the parameters passed to the constructor. - void MySqlConnection::openDatabase() { diff --git a/src/lib/mysql/mysql_connection.h b/src/lib/mysql/mysql_connection.h index 1c0d6d6b52..be0815c71b 100644 --- a/src/lib/mysql/mysql_connection.h +++ b/src/lib/mysql/mysql_connection.h @@ -640,23 +640,11 @@ public: /// /// This field is public, because it is used heavily from MySqlConnection /// and from MySqlHostDataSource. - MySqlHolder& handle() const { - auto result = handles_.resource(); - if (connected_) { - result->openDatabase(*(const_cast(this))); - } - if (prepared_) { - result->prepareStatements(*(const_cast(this))); - } - return *result; - } - + MySqlHolder& handle() const; private: bool connected_; ///< Flag to indicate openDatabase has been called bool prepared_; ///< Flag to indicate prepareStatements has been called - - mutable isc::dhcp::ThreadResource handles_; }; } // namespace db -- 2.47.2