Bug 486711

Summary: clusvcadm -e <service> -F kills cluster if no restricted failover domain member is available for <service>.
Product: Red Hat Enterprise Linux 5 Reporter: Yevheniy Demchenko <zheka>
Component: rgmanagerAssignee: Lon Hohberger <lhh>
Status: CLOSED DUPLICATE QA Contact: Cluster QE <mspqa-list>
Severity: medium Docs Contact:
Priority: low    
Version: 5.2CC: cluster-maint, edamato
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-02-26 20:16:25 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
patch. none

Description Yevheniy Demchenko 2009-02-21 11:41:12 UTC
Description of problem:

If user tries to enable service belonging to a restricted domain with clusvcadm -e -F when no failover domain member is available, clurgmgrd dies on SIGSEGV on all nodes effectively shutting down the whole cluster. 


Version-Release number of selected component (if applicable):

Bug was initially found in rgmanager-2.0.38, still present in 2.0.46
How reproducible:
Always.

Steps to Reproduce:
1. Install 3(at least) nodes cluster (node01,node02,node03)
2. Define restricted failover domain test_domain (node01, node02)
3. Define a service test_service for this failover domain
4. Stop rgmanager on node01 and node02
5. Try "clusvcadm -e service:test_service -F" on node03
  
Actual results:
clurgmgrd gets segfault, node03 (and possibly other nodes with running clurgmgrd) reboots.

Expected results:
clusvcadm reports failed service.

Additional info:

[14615] debug: Node 1 is not listening
[14615] debug: Node 2 is not listening
[16761] debug: Sent remote-start request to 0
[16757] debug: Evaluating RG service:service_test, state stopped, owner none
[16757] notice: Marking service:service_test as stopped: Restricted domain unavailable
[16757] debug: Event (0:5:0) Processed
PID 14615 Thread 14615: SIGSEGV
[16757] debug: 3 events processed

As i suspect, the problem is in "Sent remote-start request to 0". Anyway, attached patch makes clurgmgrd to work.

diff -U 3 -r ./rgmanager-2.0.38.orig/src/daemons/rg_state.c ./rgmanager-2.0.38/src/daemons/rg_state.c
--- ./rgmanager-2.0.38.orig/src/daemons/rg_state.c	2008-03-27 21:12:36.000000000 +0100
+++ ./rgmanager-2.0.38/src/daemons/rg_state.c	2009-02-21 11:34:54.000000000 +0100
@@ -2057,7 +2057,7 @@
 		      	ret = handle_start_remote_req(svcName, request);
 			if (ret == RG_EAGAIN)
 				goto out;
-		} else if (target < 0) {
+		} else if (!(target > 0)) {
 			ret = RG_EFAIL;
 			goto out;
 		} else {

Comment 1 Yevheniy Demchenko 2009-02-21 11:44:12 UTC
Created attachment 332821 [details]
patch.

Comment 2 Lon Hohberger 2009-02-26 15:48:42 UTC
It looks like this patch is included in your other patch.

Comment 3 Lon Hohberger 2009-02-26 20:16:25 UTC
Marking as a dup of 486717 since that patch includes the fix for this one.

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