[Cluster-devel] cluster/rgmanager/src/resources apache.metadat ...

mgrac at sourceware.org mgrac at sourceware.org
Fri Sep 29 10:44:11 UTC 2006


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	mgrac at sourceware.org	2006-09-29 10:44:09

Modified files:
	rgmanager/src/resources: apache.metadata apache.sh 
	                         mysql.metadata mysql.sh 
	                         openldap.metadata openldap.sh 
	                         postgres-8.metadata postgres-8.sh 
	                         samba.metadata samba.sh 
	rgmanager/src/resources/utils: messages.sh ra-skelet.sh 

Log message:
	Some application needs time until they stop all theirs processes, so we have to wait a few moments until main/parent process is finished. This patch adds an option 'shutdown_wait' for each application's RA.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/apache.metadata.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/apache.sh.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/mysql.metadata.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/mysql.sh.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/openldap.metadata.diff?cvsroot=cluster&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/openldap.sh.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/postgres-8.metadata.diff?cvsroot=cluster&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/postgres-8.sh.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/samba.metadata.diff?cvsroot=cluster&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/samba.sh.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/utils/messages.sh.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/utils/ra-skelet.sh.diff?cvsroot=cluster&r1=1.3&r2=1.4

--- cluster/rgmanager/src/resources/apache.metadata	2006/09/20 08:07:04	1.2
+++ cluster/rgmanager/src/resources/apache.metadata	2006/09/29 10:44:09	1.3
@@ -50,6 +50,15 @@
 		<content type="string" />
 	</parameter>
 
+	<parameter name="shutdown_wait">
+		<longdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</longdesc>
+		<shortdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</shortdesc>
+		<content type="number" />
+	</parameter>
 
         <parameter name="service_name" inherit="service%name">
             <longdesc lang="en">
--- cluster/rgmanager/src/resources/apache.sh	2006/09/26 23:59:14	1.6
+++ cluster/rgmanager/src/resources/apache.sh	2006/09/29 10:44:09	1.7
@@ -210,7 +210,7 @@
 {
 	clog_service_stop $CLOG_INIT
 
-	stop_generic "$APACHE_pid_file"
+	stop_generic "$APACHE_pid_file" "$OCF_RESKEY_shutdown_wait"
 	
 	if [ $? -ne 0 ]; then
 		clog_service_stop $CLOG_FAILED
--- cluster/rgmanager/src/resources/mysql.metadata	2006/09/20 08:15:01	1.2
+++ cluster/rgmanager/src/resources/mysql.metadata	2006/09/29 10:44:09	1.3
@@ -51,6 +51,16 @@
 		<content type="string" />
 	</parameter>
 
+	<parameter name="shutdown_wait">
+		<longdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</longdesc>
+		<shortdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</shortdesc>
+		<content type="number" />
+	</parameter>
+
         <parameter name="service_name" inherit="service%name">
             <longdesc lang="en">
 	    	Inherit the service name.  We need to know
--- cluster/rgmanager/src/resources/mysql.sh	2006/09/26 23:59:14	1.6
+++ cluster/rgmanager/src/resources/mysql.sh	2006/09/29 10:44:09	1.7
@@ -144,7 +144,7 @@
 {
 	clog_service_stop $CLOG_INIT
 
-	stop_generic "$MYSQL_pid_file"
+	stop_generic "$MYSQL_pid_file" "$OCF_RESKEY_shutdown_wait"
 	
 	if [ $? -ne 0 ]; then
 		clog_service_stop $CLOG_FAILED
--- cluster/rgmanager/src/resources/openldap.metadata	2006/09/14 12:22:32	1.1
+++ cluster/rgmanager/src/resources/openldap.metadata	2006/09/29 10:44:09	1.2
@@ -54,6 +54,16 @@
 		<content type="string" />
 	</parameter>
 
+	<parameter name="shutdown_wait">
+		<longdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</longdesc>
+		<shortdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</shortdesc>
+		<content type="number" />
+	</parameter>
+
         <parameter name="service_name" inherit="service%name">
             <longdesc lang="en">
 	    	Inherit the service name.  We need to know
--- cluster/rgmanager/src/resources/openldap.sh	2006/09/26 23:59:14	1.4
+++ cluster/rgmanager/src/resources/openldap.sh	2006/09/29 10:44:09	1.5
@@ -178,7 +178,7 @@
 {
 	clog_service_stop $CLOG_INIT
 
-	stop_generic "$LDAP_pid_file"
+	stop_generic "$LDAP_pid_file" "$OCF_RESKEY_shutdown_wait"
 	
 	if [ $? -ne 0 ]; then
 		clog_service_stop $CLOG_FAILED
--- cluster/rgmanager/src/resources/postgres-8.metadata	2006/09/20 07:14:54	1.1
+++ cluster/rgmanager/src/resources/postgres-8.metadata	2006/09/29 10:44:09	1.2
@@ -51,6 +51,16 @@
 		<content type="string" />
 	</parameter>
 
+	<parameter name="shutdown_wait">
+		<longdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</longdesc>
+		<shortdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</shortdesc>
+		<content type="number" />
+	</parameter>
+
         <parameter name="service_name" inherit="service%name">
             <longdesc lang="en">
 	    	Inherit the service name.  We need to know
--- cluster/rgmanager/src/resources/postgres-8.sh	2006/09/26 23:59:14	1.2
+++ cluster/rgmanager/src/resources/postgres-8.sh	2006/09/29 10:44:09	1.3
@@ -163,7 +163,7 @@
 {
 	clog_service_stop $CLOG_INIT
 
-	stop_generic "$PSQL_pid_file"	
+	stop_generic "$PSQL_pid_file" "$OCF_RESKEY_shutdown_wait"
 	if [ $? -ne 0 ]; then
 		clog_service_stop $CLOG_FAILED
 		return $OCF_ERR_GENERIC
--- cluster/rgmanager/src/resources/samba.metadata	2006/09/26 23:18:44	1.1
+++ cluster/rgmanager/src/resources/samba.metadata	2006/09/29 10:44:09	1.2
@@ -50,6 +50,16 @@
 		<content type="string" />
 	</parameter>
 
+	<parameter name="shutdown_wait">
+		<longdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</longdesc>
+		<shortdesc lang="en">
+			Wait X seconds for correct end of service shutdown
+		</shortdesc>
+		<content type="number" />
+	</parameter>
+
         <parameter name="service_name" inherit="service%name">
             <longdesc lang="en">
 	    	Inherit the service name.  We need to know
--- cluster/rgmanager/src/resources/samba.sh	2006/09/26 23:59:14	1.2
+++ cluster/rgmanager/src/resources/samba.sh	2006/09/29 10:44:09	1.3
@@ -166,7 +166,7 @@
 {
 	clog_service_stop $CLOG_INIT
 
-	stop_generic "$SAMBA_smbd_pid_file"
+	stop_generic "$SAMBA_smbd_pid_file" "$OCF_RESKEY_shutdown_wait"
 	
 	if [ $? -ne 0 ]; then
 		clog_service_stop $CLOG_FAILED
--- cluster/rgmanager/src/resources/utils/messages.sh	2006/09/26 23:12:38	1.2
+++ cluster/rgmanager/src/resources/utils/messages.sh	2006/09/29 10:44:09	1.3
@@ -74,6 +74,9 @@
 		$CLOG_FAILED)
 			ocf_log error "Stopping Service $OCF_RESOURCE_INSTANCE > Failed"
 			;;
+		$CLOG_FAILED_NOT_STOPPED)
+			ocf_log error "Stopping Service $OCF_RESOURCE_INSTANCE > Failed - Application Is Still Running"
+			;;
 	esac
 	return 0
 }
@@ -115,6 +118,9 @@
 		$CLOG_SUCCEED)
 			ocf_log debug "Verifying Configuration Of $OCF_RESOURCE_INSTANCE > Succeed"
 			;;
+		$CLOG_FAILED_NOT_CHILD)
+			ocf_log error "Service $OCF_RESOURCE_INSTANCE Is Not A Child Of A Service"
+			;;
 		$CLOG_FAILED)
 			if [ "x$2" = "x" ]; then
 				ocf_log error "Verifying Configuration Of $OCF_RESOURCE_INSTANCE > Failed"
--- cluster/rgmanager/src/resources/utils/ra-skelet.sh	2006/09/20 07:14:55	1.3
+++ cluster/rgmanager/src/resources/utils/ra-skelet.sh	2006/09/29 10:44:09	1.4
@@ -46,17 +46,37 @@
 stop_generic()
 {
 	declare pid_file="$1"
+	declare kill_timeout="$2"
+	declare pid;
+	declare count=0;
 
 	if [ ! -e "$pid_file" ]; then
 		clog_check_file_exist $CLOG_FAILED_NOT_FOUND "$pid_file"
 		return $OCF_ERR_GENERIC
 	fi
 
-	kill -TERM `cat "$pid_file"`
+	if [ -z "$kill_timeout" ]; then
+		kill_timeout=20
+	fi
+
+	read pid < "$pid_file"
+
+	kill -TERM "$pid"
 
 	if [ $? -ne 0 ]; then
 		return $OCF_ERR_GENERIC
 	fi
+
+	until [ `ps --pid "$pid" &> /dev/null; echo $?` = '1' ] || [ $count -gt $kill_timeout ]
+	do
+		sleep 1
+		let count=$count+1
+	done
+
+	if [ $count -gt $kill_timeout ]; then
+		clog_service_stop $CLOG_FAILED_NOT_STOPPED
+		return $OCF_ERR_GENERIC
+	fi
 	
 	return 0;
 }




More information about the Cluster-devel mailing list