Bug 679753 - Dependent services are not treated correctly upon service move
Summary: Dependent services are not treated correctly upon service move
Keywords:
Status: CLOSED DUPLICATE of bug 743214
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: rgmanager
Version: 5.6
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: rc
: ---
Assignee: Lon Hohberger
QA Contact: Cluster QE
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-02-23 12:44 UTC by Andrea Costantino
Modified: 2012-02-10 17:29 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-02-10 17:29:18 UTC
Target Upstream Version:


Attachments (Terms of Use)
cluster.conf + fake scripts to provide timeline to reproduce bug (1.25 KB, application/x-zip-compressed)
2011-02-23 12:44 UTC, Andrea Costantino
no flags Details

Description Andrea Costantino 2011-02-23 12:44:32 UTC
Created attachment 480444 [details]
cluster.conf + fake scripts to provide timeline to reproduce bug

Description of problem:
If a service (named Se2 in the following) is dependent upon a service (Se1 in the following), and Se1 gets moved or restarted for any reason, Se2 might not be restarted.
This happens depending on the following timeline:
Se1 is moved or restarted and transition from started to stopped (if manually forced to move or for failure), and then it gets restarted on the same or other cluster member. Service state goes from stopped to starting.
Se2 is stopped since it depends on Se1, so if Se1 state gets to stopped, Se2 is forced to stop by cluster rule.
Se2 state goes from started to stopping.
This is the trick.
If Se1 gets to started BEFORE Se2 gets to stopped (end of stop script), Se2 is not restarted.
If Se2 gets to stopped BEFORE Se1 gets from starting to started, Se2 is correcty (re)started.
It seems that some kind of notification is sent as soon as Se1 gets to started and Se2 is unable to perform any action before it gets stopped state.
So if Se2 is stopped, it can move from stopped to starting (and eventually to started), but if still stopping, it never gets to starting (cluster will not "cache" the Se1 event to started and subsequently notify Se2 to dependently move to starting phase).


Version-Release number of selected component (if applicable):
rgmanager-2.0.52-9.el5

How reproducible:
Create a cluster with attached cluster.conf + /root/scripts/service1 and /root/scripts/service2 on all cluster nodes


Steps to Reproduce:
1. start cluster and wait for all services to starts (eventually clusvcadm -e both of them)
2. trigger a Se1 (A service in the description) restart or move (clusvcadm -R Se1 OR clusvcadm -r Se1 -m <other_cluster_member>)
3. Look at service Se2 state. It gets to stopped but never restarted.
  
Actual results:
Se2 never gets started again

Expected results:
Se2 should get restarted as expected

Additional info:
If Se1 is manually restarted again, the Se1 state transition starting->started, triggers the starting of Se2 as expected.

Additionally, if Se1 script (/root/scripts/service1) is changed to the following:

  start)
        echo -e "Starting service\n"
        sleep 10 #THIS IS THE CHANGE
        exit 0
        ;;

restart of Se2 is done as expected.

Comment 1 Lon Hohberger 2012-02-10 17:29:18 UTC

*** This bug has been marked as a duplicate of bug 743214 ***


Note You need to log in before you can comment on or make changes to this bug.