If you ordered two services the opposite way in cluster.conf
('b' first, which depends on 'a'), then rgmanager would fail
over 'b' despite the fact that 'a' was not running yet - this
is because the state of 'a' was not set to 'stopped' - so we
need to check for a node-death event in move_or_start().

Resolves: rhbz#743214

Signed-off-by: Lon Hohberger <l...@redhat.com>
---
 rgmanager/src/resources/default_event_script.sl |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/rgmanager/src/resources/default_event_script.sl 
b/rgmanager/src/resources/default_event_script.sl
index f2c7bc1..be434e9 100644
--- a/rgmanager/src/resources/default_event_script.sl
+++ b/rgmanager/src/resources/default_event_script.sl
@@ -156,7 +156,9 @@ define move_or_start(service, node_list)
        depends = service_property(service, "depend");
        if (depends != "") {
                (,,, owner, state) = service_status(depends);
-               if (owner < 0) {
+               if ((owner < 0) or
+                    ((event_type == EVENT_NODE) and (owner == node_id) and
+                    (node_state == 0))) {
                        debug(service, " is not runnable; dependency not met");
                        ()=service_stop(service);
                        return ERR_DEPEND;
@@ -521,8 +523,8 @@ define default_service_event_handler()
                        (s_trans,,,,,, s_state) = service_status(service_name, 
1);
                        if ((s_state == "started") and (state == "started") and
                            (d_trans >= s_trans)) {
-                               %debug("S:", service_name, " trans ", s_trans);
-                               %debug("D:", services[x], " trans ", d_trans);
+                               debug("S:", service_name, " trans ", s_trans);
+                               debug("D:", services[x], " trans ", d_trans);
 
                                debug("Skipping ", services[x],
                                      "; restart not needed");
-- 
1.7.3.4

Reply via email to