cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/rg_state.c
@ 2006-09-27 12:22 lhh
  0 siblings, 0 replies; 5+ messages in thread
From: lhh @ 2006-09-27 12:22 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	lhh at sourceware.org	2006-09-27 12:22:41

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: rg_state.c 

Log message:
	Fix failed->disabled state transitions; #208011

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5.2.21&r2=1.5.2.22
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.14&r2=1.4.2.15

--- cluster/rgmanager/ChangeLog	2006/09/07 18:39:45	1.5.2.21
+++ cluster/rgmanager/ChangeLog	2006/09/27 12:22:41	1.5.2.22
@@ -1,3 +1,7 @@
+2006-09-27 Lon Hohberger <lhh@redhat.com>
+	* src/daemons/rg_state.c: Fix fail->disable state transitions,
+	bugzilla #208011
+
 2006-09-07 Lon Hohberger <lhh@redhat.com>
 	* src/daemons/main.c, init.d/rgmanager: Make rgmanager init script
 	report failure correctly in most cases. (#193603)
--- cluster/rgmanager/src/daemons/rg_state.c	2006/06/16 19:57:52	1.4.2.14
+++ cluster/rgmanager/src/daemons/rg_state.c	2006/09/27 12:22:41	1.4.2.15
@@ -879,6 +879,7 @@
 	void *lockp = NULL;
 	rg_state_t svcStatus;
 	int ret;
+	int old_state;
 
 	if (!rg_quorate()) {
 		clulog(LOG_WARNING, "#69: Unclean %s of %s\n", 
@@ -918,6 +919,8 @@
 		break;
 	}
 
+	old_state = svcStatus.rs_state;
+
 	clulog(LOG_NOTICE, "Stopping service %s\n", svcName);
 
 	if (recover)
@@ -937,7 +940,14 @@
 
 	ret = group_op(svcName, RG_STOP);
 
-	_svc_stop_finish(svcName, ret, newstate);
+	if (old_state == RG_STATE_FAILED && newstate == RG_STATE_DISABLED) {
+		if (ret)
+			clulog(LOG_ALERT, "Marking %s as 'disabled', "
+			       "but some resources may still be allocated!\n");
+		_svc_stop_finish(svcName, 0, newstate);
+	} else {
+		_svc_stop_finish(svcName, ret, newstate);
+	}
 
 	return ret;
 }



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/rg_state.c
@ 2006-09-27 12:26 lhh
  0 siblings, 0 replies; 5+ messages in thread
From: lhh @ 2006-09-27 12:26 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	lhh at sourceware.org	2006-09-27 12:26:17

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: rg_state.c 

Log message:
	Fix failed->disabled state transitions; #208011

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&r1=1.23&r2=1.24
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&r1=1.20&r2=1.21

--- cluster/rgmanager/ChangeLog	2006/09/01 19:02:20	1.23
+++ cluster/rgmanager/ChangeLog	2006/09/27 12:26:16	1.24
@@ -1,3 +1,7 @@
+2006-09-27 Lon Hohberger <lhh@redhat.com>
+	* src/daemons/rg_state.c: Fix #208011 - failed->disabled state 
+	transition
+
 2006-09-01 Lon Hohberger <lhh@redhat.com>
 	* include/resgroup.h: Add proto for rg_strerror
 	* include/vf.h: Add proto for vf_invalidate (flushes vf cache)
--- cluster/rgmanager/src/daemons/rg_state.c	2006/08/18 15:26:22	1.20
+++ cluster/rgmanager/src/daemons/rg_state.c	2006/09/27 12:26:17	1.21
@@ -947,6 +947,7 @@
 	struct dlm_lksb lockp;
 	rg_state_t svcStatus;
 	int ret;
+	int old_state;
 
 	if (!rg_quorate()) {
 		clulog(LOG_WARNING, "#69: Unclean %s of %s\n", 
@@ -986,6 +987,8 @@
 		break;
 	}
 
+	old_state = svcStatus.rs_state;
+
 	clulog(LOG_NOTICE, "Stopping service %s\n", svcName);
 
 	if (recover)
@@ -1005,7 +1008,14 @@
 
 	ret = group_op(svcName, RG_STOP);
 
-	_svc_stop_finish(svcName, ret, newstate);
+	if (old_state == RG_STATE_FAILED && newstate == RG_STATE_DISABLED) {
+		if (ret)
+			clulog(LOG_ALERT, "Marking %s as 'disabled', "
+			       "but some resources may still be allocated!\n");
+		_svc_stop_finish(svcName, 0, newstate);
+	} else {
+		_svc_stop_finish(svcName, ret, newstate);
+	}
 
 	return ret;
 }



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/rg_state.c
@ 2007-06-14 14:53 lhh
  0 siblings, 0 replies; 5+ messages in thread
From: lhh @ 2007-06-14 14:53 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL5
Changes by:	lhh at sourceware.org	2007-06-14 14:53:42

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: rg_state.c 

Log message:
	Ancillary patch which goes with fix for #211469

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.31.2.12&r2=1.31.2.13
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.24.2.7&r2=1.24.2.8

--- cluster/rgmanager/ChangeLog	2007/06/14 13:35:58	1.31.2.12
+++ cluster/rgmanager/ChangeLog	2007/06/14 14:53:42	1.31.2.13
@@ -1,3 +1,8 @@
+2007-06-14 Lon Hohberger <lhh@redhat.com>
+	* src/daemons/rg_state.c: Ancillary patch to (a) make clusvcadm get
+	the new owner of the service and (b) ensure allowed_nodes is freed
+	before returning.  #211469
+
 2007-06-14 Marek Grac <mgrac@redhat.com>
 	* src/daemons/main.c, rg_state.c, rg_thread.c,
 	  src/utils/clusvcadm.c
--- cluster/rgmanager/src/daemons/rg_state.c	2007/06/14 13:35:59	1.24.2.7
+++ cluster/rgmanager/src/daemons/rg_state.c	2007/06/14 14:53:42	1.24.2.8
@@ -1676,43 +1676,46 @@
 int
 handle_fd_start_req(char *svcName, int request, int *new_owner)
 {
-       cluster_member_list_t *allowed_nodes;
-       int target, me = my_id();
-       int ret;
+	cluster_member_list_t *allowed_nodes;
+	int target, me = my_id();
+	int ret = RG_EFAIL;
 
-       allowed_nodes = member_list();
+	allowed_nodes = member_list();
 
-       while (memb_count(allowed_nodes)) {
-               target = best_target_node(allowed_nodes, -1,
-                                         svcName, 1);
-               if (target == me) {
-                       ret = handle_start_remote_req(svcName, request);
-               } else if (target < 0) {
-                       free_member_list(allowed_nodes);
-                       return RG_EFAIL;
-               } else {
-                       ret = relocate_service(svcName, request, target);
-               }
+	while (memb_count(allowed_nodes)) {
+		target = best_target_node(allowed_nodes, -1,
+		    			  svcName, 1);
+		if (target == me) {
+		      	ret = handle_start_remote_req(svcName, request);
+		} else if (target < 0) {
+			ret = RG_EFAIL;
+			goto out;
+		} else {
+			ret = relocate_service(svcName, request, target);
+		}
 
-               switch(ret) {
-               case RG_ESUCCESS:
-                       return RG_ESUCCESS;
-               case RG_ERUN:
-                       return RG_ERUN;
-               case RG_EFAIL:
-                       memb_mark_down(allowed_nodes, target);
-                       continue;
-               case RG_EABORT:
-                       svc_report_failure(svcName);
-                       free_member_list(allowed_nodes);
-                       return RG_EFAIL;
-               default:
-                       clulog(LOG_ERR,
-                              "#6X: Invalid reply [%d] from member %d during"
-                              " relocate operation!\n", ret, target);
-               }
-       }
+		switch(ret) {
+		case RG_EABORT:
+			svc_report_failure(svcName);
+			ret = RG_EFAIL;
+			goto out;
+		case RG_ESUCCESS:
+			*new_owner = target;
+			goto out;
+		case RG_ERUN:
+			/* Already running */
+			goto out;
+		case RG_EFAIL:
+			memb_mark_down(allowed_nodes, target);
+			continue;
+		default:
+			clulog(LOG_ERR,
+			       "#6X: Invalid reply [%d] from member %d during"
+			       " relocate operation!\n", ret, target);
+		}
+	}
 
-       free_member_list(allowed_nodes);
-       return RG_EFAIL;
+out:
+	free_member_list(allowed_nodes);
+	return ret;
 }



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/rg_state.c
@ 2007-06-28 11:54 mgrac
  0 siblings, 0 replies; 5+ messages in thread
From: mgrac @ 2007-06-28 11:54 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	mgrac at sourceware.org	2007-06-28 11:54:50

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: rg_state.c 

Log message:
	Fix #236431
	Message in log file: Taking over service serv from down member (null)
	shows correct member (if possible).

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5.2.26&r2=1.5.2.27
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.20&r2=1.4.2.21

--- cluster/rgmanager/ChangeLog	2007/06/22 08:40:20	1.5.2.26
+++ cluster/rgmanager/ChangeLog	2007/06/28 11:54:50	1.5.2.27
@@ -1,3 +1,7 @@
+2007-06-28 Marek Grac <mgrac@redhat.com>
+	* src/daemons/rg_state.c: Fix #236431. Message: Taking over service
+	serv from down member (null) shows correct member (if possible).
+
 2007-06-22 Marek Grac <mgrac@redhat.com>
 	* src/daemons/reslist.c: Apply patch from Lon (same as in RHEL5) to
 	fix #245171 attr inheritance should try all direct ancestors.
--- cluster/rgmanager/src/daemons/rg_state.c	2007/05/03 15:02:47	1.4.2.20
+++ cluster/rgmanager/src/daemons/rg_state.c	2007/06/28 11:54:50	1.4.2.21
@@ -490,6 +490,9 @@
 {
 	cluster_member_list_t *membership = member_list();
 	int ret = 0;
+	int fd;
+	char *nodename = NULL;
+	char query[255];
 	
 	switch(svcStatus->rs_state) {
 	case RG_STATE_FAILED:
@@ -549,10 +552,19 @@
 		/*
 		 * Service is running but owner is down -> FAILOVER
 		 */
+		fd = ccs_connect();
+		if (fd > 0) {
+			snprintf(query,
+				sizeof(query),
+				"/cluster/clusternodes/clusternode[@nodeid=\"%d\"]/@name",
+				svcStatus->rs_owner);
+			ccs_get(fd, query, &nodename);
+			ccs_disconnect(fd);
+		}
+
 		clulog(LOG_NOTICE,
 		       "Taking over service %s from down member %s\n",
-		       svcName, memb_id_to_name(membership,
-						svcStatus->rs_owner));
+		       svcName, nodename);
 		ret = 1;
 		break;
 



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/rg_state.c
@ 2008-01-25 18:09 lhh
  0 siblings, 0 replies; 5+ messages in thread
From: lhh @ 2008-01-25 18:09 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL5
Changes by:	lhh at sourceware.org	2008-01-25 18:09:24

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: rg_state.c 

Log message:
	Fix 430272

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.31.2.35&r2=1.31.2.36
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.24.2.16&r2=1.24.2.17

--- cluster/rgmanager/ChangeLog	2007/12/19 21:34:02	1.31.2.35
+++ cluster/rgmanager/ChangeLog	2008/01/25 18:09:24	1.31.2.36
@@ -1,3 +1,8 @@
+2008-01-25 Lon Hohberger <lhh@redhat.com>
+	* src/daemons/rg_thread.c: Fix case that broke 'clusvcadm -e <service>
+	-n <node>' case #430220
+	* src/daemons/rg_state.c: Don't enable migrate-to-self (#430272)
+
 2007-12-19 Lon Hohberger <lhh@redhat.com>
 	* include/res-ocf.h: Fix typo
 	* src/daemons/restree.c: Export reference counts to resource agents.
--- cluster/rgmanager/src/daemons/rg_state.c	2008/01/16 18:50:29	1.24.2.16
+++ cluster/rgmanager/src/daemons/rg_state.c	2008/01/25 18:09:24	1.24.2.17
@@ -885,6 +885,12 @@
 		return RG_EFAIL;
 	}
 
+	if (svcStatus.rs_owner == target) {
+		rg_unlock(&lockp);
+		/* Do not allow migration to its current owner! */
+		return 0;
+	}
+
 	if (svcStatus.rs_owner != my_id()) {
 		rg_unlock(&lockp);
 		return RG_EFORWARD;



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-01-25 18:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-27 12:26 [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/rg_state.c lhh
  -- strict thread matches above, loose matches on Subject: below --
2008-01-25 18:09 lhh
2007-06-28 11:54 mgrac
2007-06-14 14:53 lhh
2006-09-27 12:22 lhh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).