]> granicus.if.org Git - icinga2/commitdiff
DB IDO: Add 'enable_ha' configuration flag
authorMichael Friedrich <michael.friedrich@netways.de>
Wed, 13 Aug 2014 15:46:43 +0000 (17:46 +0200)
committerMichael Friedrich <michael.friedrich@netways.de>
Fri, 15 Aug 2014 15:21:12 +0000 (17:21 +0200)
This feature is true by default. If disabled all cluster nodes in a high
availability zone will write to their own local database.

TODO: documentation, tests.

refs #6827
refs #6203

components/db_ido_mysql/idomysqlconnection.cpp
components/db_ido_pgsql/idopgsqlconnection.cpp
lib/db_ido/db_ido-type.conf
lib/db_ido/dbconnection.cpp
lib/db_ido/dbconnection.ti

index 0ae4db4c51bc43ebb005e7f83db4f623db6609fd..2c9eeb11f3ef0d9ab94c20bcd06e406830ea1cd2 100644 (file)
@@ -62,6 +62,9 @@ Value IdoMysqlConnection::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& pe
 
 void IdoMysqlConnection::Resume(void)
 {
+       if (!IsPaused())
+               return;
+
        DbConnection::Resume();
 
        m_Connected = false;
@@ -84,6 +87,11 @@ void IdoMysqlConnection::Resume(void)
 
 void IdoMysqlConnection::Pause(void)
 {
+       if (!GetEnableHa()) {
+               Log(LogInformation, "IdoMysqlConnection", "HA functionality disabled. Won't pause IDO connection: " + GetName());
+               return;
+       }
+
        m_ReconnectTimer.reset();
 
        DbConnection::Pause();
index adf4ef3eb52ac8296ada0816ef529395c36f1d96..ff7fc49ccd071d576124f078312de89440c01d67 100644 (file)
@@ -64,6 +64,9 @@ Value IdoPgsqlConnection::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& pe
 
 void IdoPgsqlConnection::Resume(void)
 {
+       if (!IsPaused())
+               return;
+
        DbConnection::Resume();
 
        m_Connection = NULL;
@@ -86,6 +89,11 @@ void IdoPgsqlConnection::Resume(void)
 
 void IdoPgsqlConnection::Pause(void)
 {
+       if (!GetEnableHa()) {
+               Log(LogInformation, "IdoMysqlConnection", "HA functionality disabled. Won't pause IDO connection: " + GetName());
+               return;
+       }
+
        m_ReconnectTimer.reset();
 
        DbConnection::Pause();
index b85608b75d2db91d1dbf004f374f1c6fc3dd4ff0..780e52c6944d0e388fda999146e0ea39da54e423 100644 (file)
@@ -38,5 +38,7 @@
                 %attribute %number "systemcommands_age",
        },
 
-       %attribute %number "categories"
+       %attribute %number "categories",
+
+        %attribute %number "enable_ha",
 }
index 0678e75b0361819125845a14380799c031e23f09..5fa4db7be5415136c6c89f584c775fb6dcae7b67 100644 (file)
@@ -108,6 +108,7 @@ void DbConnection::ProgramStatusHandler(void)
        query2.Fields->Set("status_update_time", DbValue::FromTimestamp(Utility::GetTime()));
        query2.Fields->Set("program_start_time", DbValue::FromTimestamp(Application::GetStartTime()));
        query2.Fields->Set("is_currently_running", 1);
+       query2.Fields->Set("endpoint_name", IcingaApplication::GetInstance()->GetNodeName());
        query2.Fields->Set("process_id", Utility::GetPid());
        query2.Fields->Set("daemon_mode", 1);
        query2.Fields->Set("last_command_check", DbValue::FromTimestamp(Utility::GetTime()));
@@ -358,7 +359,7 @@ void DbConnection::UpdateAllObjects(void)
 
 void DbConnection::PrepareDatabase(void)
 {
-       /* 
+       /*
         * only clear tables on reconnect which
         * cannot be updated by their existing ids
         * for details check https://dev.icinga.org/issues/5565
index d71af85173a5cd269660b1d22738ca025a45f332..da9f0c327bfa88507fa3d1898ff36c12eb96dc1f 100644 (file)
@@ -21,6 +21,10 @@ abstract class DbConnection : DynamicObject
                            DbCatLog | DbCatNotification | DbCatProgramStatus | DbCatRetention | DbCatStateHistory;
                }}}
        };
+
+       [config] bool enable_ha {
+               default {{{ return true; }}}
+       };
 };
 
 }