[Nagvis-checkins] SF.net Git: nagvis: Undefined backend in single objects doos not prevent whole ma
Brought to you by:
larsi-
From: lars <la...@us...> - 2012-01-12 17:26:15
|
Author: Lars Michelsen <lm...@la...> Date: Wed Jan 11 22:05:07 2012 +0100 Committer: Lars Michelsen <lm...@la...> Commit-Date: Wed Jan 11 22:05:07 2012 +0100 Undefined backend in single objects doos not prevent whole map loading anymore --- ChangeLog | 1 + share/server/core/classes/CoreBackendMgmt.php | 55 ++++++++++---------- share/server/core/classes/GlobalMapCfg.php | 3 +- .../core/classes/objects/NagVisStatefulObject.php | 2 +- 4 files changed, 32 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e6e07a..f7ac9b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ Core * Bugfix: Made upper/lower case rotation_id/backend_id definitions possible * Added ; and | to allowed signs for urls + * Undefined backend in single objects doos not prevent whole map loading anymore Frontend * Showing dummy shape image when configured shape does not exist diff --git a/share/server/core/classes/CoreBackendMgmt.php b/share/server/core/classes/CoreBackendMgmt.php index f15491c..4c61d6e 100644 --- a/share/server/core/classes/CoreBackendMgmt.php +++ b/share/server/core/classes/CoreBackendMgmt.php @@ -444,36 +444,37 @@ class CoreBackendMgmt { * @author Lars Michelsen <la...@ve...> */ private function initializeBackend($backendId) { - if($this->checkBackendExists($backendId, true)) { - /** - * The status host can be used to prevent annoying timeouts when a backend is not - * reachable. This is only useful in multi backend setups. - * - * It works as follows: The assumption is that there is a "local" backend which - * monitors the host of the "remote" backend. When the remote backend host is - * reported as UP the backend is queried as normal. - * When the remote backend host is reported as "DOWN" or "UNREACHABLE" NagVis won't - * try to connect to the backend anymore until the backend host gets available again. - */ - $statusHost = cfg('backend_' . $backendId, 'statushost'); - if($statusHost != '' && !$this->backendAlive($backendId, $statusHost)) { - $this->aError[$backendId] = new BackendConnectionProblem(l('The backend is reported as dead by the statusHost ([STATUSHOST]).', Array('STATUSHOST' => $statusHost))); - return false; - } + if(!$this->checkBackendExists($backendId, false)) { + $this->aError[$backendId] = new BackendConnectionProblem(l('backendNotDefined', + Array('BACKENDID' => $backendId))); + return false; + } + /** + * The status host can be used to prevent annoying timeouts when a backend is not + * reachable. This is only useful in multi backend setups. + * + * It works as follows: The assumption is that there is a "local" backend which + * monitors the host of the "remote" backend. When the remote backend host is + * reported as UP the backend is queried as normal. + * When the remote backend host is reported as "DOWN" or "UNREACHABLE" NagVis won't + * try to connect to the backend anymore until the backend host gets available again. + */ + $statusHost = cfg('backend_' . $backendId, 'statushost'); + if($statusHost != '' && !$this->backendAlive($backendId, $statusHost)) { + $this->aError[$backendId] = new BackendConnectionProblem(l('The backend is reported as dead by the statusHost ([STATUSHOST]).', Array('STATUSHOST' => $statusHost))); + return false; + } - try { - $backendClass = 'GlobalBackend' . cfg('backend_' . $backendId, 'backendtype'); - $this->BACKENDS[$backendId] = new $backendClass($this->CORE, $backendId); + try { + $backendClass = 'GlobalBackend' . cfg('backend_' . $backendId, 'backendtype'); + $this->BACKENDS[$backendId] = new $backendClass($this->CORE, $backendId); - // Mark backend as initialized - $this->aInitialized[$backendId] = true; + // Mark backend as initialized + $this->aInitialized[$backendId] = true; - return true; - } catch(BackendException $e) { - $this->aError[$backendId] = $e; - return false; - } - } else { + return true; + } catch(BackendException $e) { + $this->aError[$backendId] = $e; return false; } } diff --git a/share/server/core/classes/GlobalMapCfg.php b/share/server/core/classes/GlobalMapCfg.php index 3577225..fa9ed92 100644 --- a/share/server/core/classes/GlobalMapCfg.php +++ b/share/server/core/classes/GlobalMapCfg.php @@ -640,7 +640,8 @@ class GlobalMapCfg { } // Check if the configured backend is defined in main configuration file - if($key == 'backend_id' && !in_array($val, $this->CORE->getDefinedBackends())) { + // Raise such an exception only when error is found in global section + if($type == 'global' && $key == 'backend_id' && !in_array($val, $this->CORE->getDefinedBackends())) { throw new $exception(l('backendNotDefined', Array('BACKENDID' => $val))); } } diff --git a/share/server/core/classes/objects/NagVisStatefulObject.php b/share/server/core/classes/objects/NagVisStatefulObject.php index 650625c..fbf4fd4 100644 --- a/share/server/core/classes/objects/NagVisStatefulObject.php +++ b/share/server/core/classes/objects/NagVisStatefulObject.php @@ -805,7 +805,7 @@ class NagVisStatefulObject extends NagVisObject { */ public function setBackendProblem($s) { $this->problem_msg = l('Problem (Backend: [BACKENDID]): [MSG]', - Array('BACKENDID' => $this->backend_id, 'MSG' => $s)); + Array('BACKENDID' => $this->backend_id, 'MSG' => $s)); } /** |