Commit 238254d3 authored by Stephen Morris's avatar Stephen Morris

[2472] Use MySQL for lease manager backend (if present)

Parameters are hard-coded for the moment.
parent fa362e40
...@@ -39,9 +39,23 @@ using namespace isc::log; ...@@ -39,9 +39,23 @@ using namespace isc::log;
using namespace isc::util; using namespace isc::util;
using namespace std; using namespace std;
namespace {
// @todo: Replace the next line by extraction from configuration parameters
// This is the "dbconfig" string for the MySQL database. It is likely
// that a long-term solution will be to create the instance of the lease manager
// somewhere other than the Dhcpv6Srv constructor, to give time to extract
// the connection string from the configuration database.
#ifdef HAVE_MYSQL
const char* DBCONFIG = "type=mysql name=kea user=kea password=kea host=localhost";
#else
const char* DBCONFIG = "type=memfile";
#endif
};
namespace isc { namespace isc {
namespace dhcp { namespace dhcp {
ControlledDhcpv6Srv* ControlledDhcpv6Srv::server_ = NULL; ControlledDhcpv6Srv* ControlledDhcpv6Srv::server_ = NULL;
ConstElementPtr ConstElementPtr
...@@ -149,8 +163,8 @@ void ControlledDhcpv6Srv::disconnectSession() { ...@@ -149,8 +163,8 @@ void ControlledDhcpv6Srv::disconnectSession() {
IfaceMgr::instance().set_session_socket(IfaceMgr::INVALID_SOCKET, NULL); IfaceMgr::instance().set_session_socket(IfaceMgr::INVALID_SOCKET, NULL);
} }
ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t port /*= DHCP6_SERVER_PORT*/) ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t port)
:Dhcpv6Srv(port), cc_session_(NULL), config_session_(NULL) { : Dhcpv6Srv(port, DBCONFIG), cc_session_(NULL), config_session_(NULL) {
server_ = this; // remember this instance for use in callback server_ = this; // remember this instance for use in callback
} }
......
...@@ -447,8 +447,9 @@ MySqlLeaseMgr::MySqlLeaseMgr(const LeaseMgr::ParameterMap& parameters) ...@@ -447,8 +447,9 @@ MySqlLeaseMgr::MySqlLeaseMgr(const LeaseMgr::ParameterMap& parameters)
// Open the database // Open the database
openDatabase(); openDatabase();
// Disable autocommit // Enable autocommit. For maximum speed, the global parameter
my_bool result = mysql_autocommit(mysql_, 0); // innodb_flush_log_at_trx_commit should be set to 2.
my_bool result = mysql_autocommit(mysql_, 1);
if (result != 0) { if (result != 0) {
isc_throw(DbOperationError, mysql_error(mysql_)); isc_throw(DbOperationError, mysql_error(mysql_));
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment