From 560bf2748839ad7e5825f3504bda41e29b083318 Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Sun, 7 Oct 2018 18:56:52 +0200 Subject: [PATCH] [#93,!51] Enclose option creation in transactions. --- src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc b/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc index 9dc62c0710..c3c2713732 100644 --- a/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc +++ b/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc @@ -878,6 +878,8 @@ public: MySqlBinding::createTimestamp(option->getModificationTime()) }; + MySqlTransaction transaction(conn_); + OptionDescriptorPtr existing_option = getOption4(selector, option->option_->getType(), option->space_name_); @@ -891,6 +893,8 @@ public: conn_.insertQuery(MySqlConfigBackendDHCPv4Impl::INSERT_OPTION4, in_bindings); } + + transaction.commit(); } /// @brief Sends query to insert or update DHCP option in a subnet. @@ -917,6 +921,9 @@ public: MySqlBinding::createTimestamp(option->getModificationTime()) }; + + MySqlTransaction transaction(conn_); + OptionDescriptorPtr existing_option = getOption4(selector, subnet_id, option->option_->getType(), option->space_name_); @@ -931,6 +938,8 @@ public: conn_.insertQuery(MySqlConfigBackendDHCPv4Impl::INSERT_OPTION4, in_bindings); } + + transaction.commit(); } void createUpdateOption4(const ServerSelector& selector, @@ -974,6 +983,8 @@ public: MySqlBinding::createTimestamp(option->getModificationTime()) }; + MySqlTransaction transaction(conn_); + OptionDescriptorPtr existing_option = getOption4(selector, pool_id, option->option_->getType(), option->space_name_); @@ -988,6 +999,8 @@ public: conn_.insertQuery(MySqlConfigBackendDHCPv4Impl::INSERT_OPTION4, in_bindings); } + + transaction.commit(); } /// @brief Sends query to insert or update DHCP option in a shared network. @@ -1014,6 +1027,8 @@ public: MySqlBinding::createTimestamp(option->getModificationTime()) }; + MySqlTransaction transaction(conn_); + OptionDescriptorPtr existing_option = getOption4(selector, shared_network_name, option->option_->getType(), option->space_name_); @@ -1027,6 +1042,8 @@ public: } else { conn_.insertQuery(MySqlConfigBackendDHCPv4Impl::INSERT_OPTION4, in_bindings); } + + transaction.commit(); } /// @brief Sends query to retrieve single option definition by code and -- 2.47.2