I missed the bit down the end ;) On 20 January 2011 09:55, Brett Delle Grazie <brett.dellegra...@gmail.com> wrote: > Hi, > > On 19 January 2011 12:20, Dejan Muhamedagic <deja...@fastmail.fm> wrote: >> Hi, >> >> On Tue, Jan 18, 2011 at 07:28:55PM +0000, Brett Delle Grazie wrote: >>> Hi Dejan, >>> >>> My changes were in a completely separate SVN repository with other >>> client work. They were rather ad-hoc as I edited things and >>> then fixed them after finding problems. After a while I completely >>> forgot about posting back the changes so apologies there. >>> I had to rebase my changes using git against the mercurial tip, I'd >>> have learnt mercurial but I've only just got my head around git >>> and didn't want to make matters worse. >>> >>> Comments below :) >>> >>> On 18 January 2011 17:32, Dejan Muhamedagic <deja...@fastmail.fm> wrote: >>> > Hi Brett, >>> > >>> > On Tue, Jan 18, 2011 at 04:08:05PM +0000, Brett Delle Grazie wrote: >>> >> Hi, >>> >> >>> >> Its been a while but here are the patches for using multiple instances >>> >> of Tomcat. >>> >> >>> >> The last one (7) you may or may not wish to use... >>> >> >>> >> I apologies for having missed this for so long. >>> > >>> > NP. I appreciate your effort. Comments below. >>> > >>> >> Enjoy! >>> >> >>> >> -- >>> >> Best Regards, >>> >> >>> >> Brett Delle Grazie >>> > >>> >> From 1c0a2ef05bfbde930962befd99799d4f6a318231 Mon Sep 17 00:00:00 2001 >>> >> From: Brett Delle Grazie <bdellegra...@iee.org> >>> >> Date: Mon, 17 Jan 2011 22:09:44 +0000 >>> >> Subject: [PATCH 1/7] Low: tomcat: Use here-documents to simplify >>> >> start/stop operations >>> >> >>> >> --- >>> >> heartbeat/tomcat | 30 +++++++++++++++--------------- >>> >> 1 files changed, 15 insertions(+), 15 deletions(-) >>> >> >>> >> diff --git a/heartbeat/tomcat b/heartbeat/tomcat >>> >> index 689edc7..671ba82 100755 >>> >> --- a/heartbeat/tomcat >>> >> +++ b/heartbeat/tomcat >>> >> @@ -146,14 +146,14 @@ start_tomcat() >>> >> "$CATALINA_HOME/bin/catalina.sh" start $TOMCAT_START_OPTS \ >>> >> >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> else >>> >> - su - -s /bin/sh "$RESOURCE_TOMCAT_USER" \ >>> >> - -c "export JAVA_HOME=${OCF_RESKEY_java_home};\ >>> >> - export JAVA_OPTS=-Dname=${TOMCAT_NAME};\ >>> >> - export >>> >> CATALINA_HOME=${OCF_RESKEY_catalina_home};\ >>> >> - export >>> >> CATALINA_PID=${OCF_RESKEY_catalina_pid};\ >>> >> - export >>> >> CATALINA_OPTS=\"${OCF_RESKEY_catalina_opts}\";\ >>> >> - $CATALINA_HOME/bin/catalina.sh start >>> >> ${OCF_RESKEY_tomcat_start_opts}" \ >>> >> - >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> + cat<<-END_TOMCAT_START | su - -s /bin/sh >>> >> "$RESOURCE_TOMCAT_USER" >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> + export JAVA_HOME=${OCF_RESKEY_java_home} >>> >> + export JAVA_OPTS=-Dname=${TOMCAT_NAME} >>> >> + export CATALINA_HOME=${OCF_RESKEY_catalina_home} >>> >> + export CATALINA_PID=${OCF_RESKEY_catalina_pid} >>> >> + export >>> >> CATALINA_OPTS=\"${OCF_RESKEY_catalina_opts}\" >>> >> + $CATALINA_HOME/bin/catalina.sh start >>> >> ${OCF_RESKEY_tomcat_start_opts} >>> >> +END_TOMCAT_START >>> >> fi >>> >> >>> >> while true; do >>> >> @@ -181,13 +181,13 @@ stop_tomcat() >>> >> >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> eval $tomcat_stop_cmd >> "$TOMCAT_CONSOLE" 2>&1 >>> >> else >>> >> - su - -s /bin/sh "$RESOURCE_TOMCAT_USER" \ >>> >> - -c "export JAVA_HOME=${OCF_RESKEY_java_home};\ >>> >> - export JAVA_OPTS=-Dname=${TOMCAT_NAME};\ >>> >> - export >>> >> CATALINA_HOME=${OCF_RESKEY_catalina_home};\ >>> >> - export >>> >> CATALINA_PID=${OCF_RESKEY_catalina_pid};\ >>> >> - $CATALINA_HOME/bin/catalina.sh stop" \ >>> >> - >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> + cat<<-END_TOMCAT_STOP | su - -s /bin/sh >>> >> "$RESOURCE_TOMCAT_USER" >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> + export JAVA_HOME=${OCF_RESKEY_java_home} >>> >> + export JAVA_OPTS=-Dname=${TOMCAT_NAME} >>> >> + export CATALINA_HOME=${OCF_RESKEY_catalina_home} >>> >> + export CATALINA_PID=${OCF_RESKEY_catalina_pid} >>> >> + $CATALINA_HOME/bin/catalina.sh stop >>> >> +END_TOMCAT_STOP >>> >> fi >>> >> >>> >> lapse_sec=0 >>> >> -- >>> >> 1.7.1 >>> > >>> > This seems to be OK. >>> > >>> >> From 8a7e6c8fd4c5f130e19eadf669550a67473f2fa5 Mon Sep 17 00:00:00 2001 >>> >> From: Brett Delle Grazie <bdellegra...@iee.org> >>> >> Date: Tue, 18 Jan 2011 10:42:16 +0000 >>> >> Subject: [PATCH 2/7] Low: tomcat: Fix to ensure default OCF_RESKEY_xx >>> >> values are observed >>> >> >>> >> Use the internal name of the OCF_RESKEY_xx variables throughout >>> >> ensuring that any defaults set at the beginning are observed. >>> >> --- >>> >> heartbeat/tomcat | 16 ++++++++-------- >>> >> 1 files changed, 8 insertions(+), 8 deletions(-) >>> >> >>> >> diff --git a/heartbeat/tomcat b/heartbeat/tomcat >>> >> index 671ba82..9fb948a 100755 >>> >> --- a/heartbeat/tomcat >>> >> +++ b/heartbeat/tomcat >>> >> @@ -147,12 +147,12 @@ start_tomcat() >>> >> >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> else >>> >> cat<<-END_TOMCAT_START | su - -s /bin/sh >>> >> "$RESOURCE_TOMCAT_USER" >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> - export JAVA_HOME=${OCF_RESKEY_java_home} >>> >> + export JAVA_HOME=${JAVA_HOME} >>> >> export JAVA_OPTS=-Dname=${TOMCAT_NAME} >>> >> - export CATALINA_HOME=${OCF_RESKEY_catalina_home} >>> >> - export CATALINA_PID=${OCF_RESKEY_catalina_pid} >>> >> - export >>> >> CATALINA_OPTS=\"${OCF_RESKEY_catalina_opts}\" >>> >> - $CATALINA_HOME/bin/catalina.sh start >>> >> ${OCF_RESKEY_tomcat_start_opts} >>> >> + export CATALINA_HOME=${CATALINA_HOME} >>> >> + export CATALINA_PID=${CATALINA_PID} >>> >> + export CATALINA_OPTS="${CATALINA_OPTS}" >>> >> + $CATALINA_HOME/bin/catalina.sh start >>> >> ${TOMCAT_START_OPTS} >>> >> END_TOMCAT_START >>> >> fi >>> >> >>> >> @@ -182,10 +182,10 @@ stop_tomcat() >>> >> eval $tomcat_stop_cmd >> "$TOMCAT_CONSOLE" 2>&1 >>> >> else >>> >> cat<<-END_TOMCAT_STOP | su - -s /bin/sh >>> >> "$RESOURCE_TOMCAT_USER" >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> - export JAVA_HOME=${OCF_RESKEY_java_home} >>> >> + export JAVA_HOME=${JAVA_HOME} >>> >> export JAVA_OPTS=-Dname=${TOMCAT_NAME} >>> >> - export CATALINA_HOME=${OCF_RESKEY_catalina_home} >>> >> - export CATALINA_PID=${OCF_RESKEY_catalina_pid} >>> >> + export CATALINA_HOME=${CATALINA_HOME} >>> >> + export CATALINA_PID=${CATALINA_PID} >>> >> $CATALINA_HOME/bin/catalina.sh stop >>> >> END_TOMCAT_STOP >>> >> fi >>> >> -- >>> >> 1.7.1 >>> >> >>> > >>> > This too. Though the use of variables is making my head spin. >>> >>> Yes, I know - but these are the same variables (with the same names) >>> as used by Tomcat >>> when running manually from the command line. >>> >>> I configure a setenv.sh/setenv.bat file as well but the above >>> variables are still needed regardless >> >> Yes, just wanted to say that it was hard for me to follow. >> > > You and the rest of us too ;) > See the other thread for a 'minimalist' resource agent idea. > >>> >> From 26326c4e3f762efd09b54f9eab3ed79da4192b9c Mon Sep 17 00:00:00 2001 >>> >> From: Brett Delle Grazie <bdellegra...@iee.org> >>> >> Date: Tue, 18 Jan 2011 11:03:15 +0000 >>> >> Subject: [PATCH 3/7] Low: tomcat: Ensure name of tomcat resource is only >>> >> used on start operation and expose JAVA_OPTS variable for use >>> >> >>> >> A specific string (the 'name') of the tomcat resource agent is added as a >>> >> define to the JVM. This is used with a grep against the process table in >>> >> the monitor operation to determine if the process is still running. >>> >> This patch ensures the string is only added to the process on the start >>> >> operation. This patch also exposes the JAVA_OPTS variable for use in >>> >> resource definitions. >>> >> --- >>> >> heartbeat/tomcat | 19 ++++++++++++++----- >>> >> 1 files changed, 14 insertions(+), 5 deletions(-) >>> >> >>> >> diff --git a/heartbeat/tomcat b/heartbeat/tomcat >>> >> index 9fb948a..89c20bd 100755 >>> >> --- a/heartbeat/tomcat >>> >> +++ b/heartbeat/tomcat >>> >> @@ -29,6 +29,7 @@ >>> >> # OCF_RESKEY_tomcat_user - A user name to start a resource. Default >>> >> is root >>> >> # OCF_RESKEY_statusurl - URL for state confirmation. Default is >>> >> http://127.0.0.1:8080 >>> >> # OCF_RESKEY_java_home - Home directory of Java. Default is none >>> >> +# OCF_RESKEY_java_opts - Options to pass to Java JVM for start and >>> >> stop. Default is none >>> >> # OCF_RESKEY_catalina_home - Home directory of Tomcat. Default is none >>> >> # OCF_RESKEY_catalina_pid - A PID file name of Tomcat. Default is >>> >> OCF_RESKEY_catalina_home/logs/catalina.pid >>> >> # OCF_RESKEY_tomcat_start_opts - Start options of Tomcat. Default is >>> >> none. >>> >> @@ -148,7 +149,7 @@ start_tomcat() >>> >> else >>> >> cat<<-END_TOMCAT_START | su - -s /bin/sh >>> >> "$RESOURCE_TOMCAT_USER" >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> export JAVA_HOME=${JAVA_HOME} >>> >> - export JAVA_OPTS=-Dname=${TOMCAT_NAME} >>> >> + export JAVA_OPTS="${JAVA_OPTS}" >>> >> export CATALINA_HOME=${CATALINA_HOME} >>> >> export CATALINA_PID=${CATALINA_PID} >>> >> export CATALINA_OPTS="${CATALINA_OPTS}" >>> >> @@ -183,7 +184,7 @@ stop_tomcat() >>> >> else >>> >> cat<<-END_TOMCAT_STOP | su - -s /bin/sh >>> >> "$RESOURCE_TOMCAT_USER" >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> export JAVA_HOME=${JAVA_HOME} >>> >> - export JAVA_OPTS=-Dname=${TOMCAT_NAME} >>> >> + export JAVA_OPTS="${JAVA_OPTS}" >>> >> export CATALINA_HOME=${CATALINA_HOME} >>> >> export CATALINA_PID=${CATALINA_PID} >>> >> $CATALINA_HOME/bin/catalina.sh stop >>> >> @@ -319,6 +320,14 @@ Home directory of Java. >>> >> <content type="string" default="" /> >>> >> </parameter> >>> >> >>> >> +<parameter name="java_opts" unique="0"> >>> >> +<longdesc lang="en"> >>> >> +Java JVM options used on start and stop. >>> >> +</longdesc> >>> >> +<shortdesc>Java options parsed to JVM, used on start and >>> >> stop.</shortdesc> >>> >> +<content type="string" default="" /> >>> >> +</parameter> >>> >> + >>> >> <parameter name="catalina_home" unique="1" required="1"> >>> >> <longdesc lang="en"> >>> >> Home directory of Tomcat. >>> >> @@ -400,15 +409,15 @@ >>> >> RESOURCE_TOMCAT_USER="${OCF_RESKEY_tomcat_user-RUNASIS}" >>> >> RESOURCE_STATUSURL="${OCF_RESKEY_statusurl-http://127.0.0.1:8080}" >>> >> >>> >> JAVA_HOME="${OCF_RESKEY_java_home}" >>> >> -JAVA_OPTS="-Dname=$TOMCAT_NAME" >>> >> -SEARCH_STR="\\""${JAVA_OPTS}" >>> >> +JAVA_OPTS="${OCF_RESKEY_java_opts}" >>> >> CATALINA_HOME="${OCF_RESKEY_catalina_home}" >>> >> CATALINA_PID="${OCF_RESKEY_catalina_pid-$CATALINA_HOME/logs/catalina.pid}" >>> >> >>> >> TOMCAT_START_OPTS="${OCF_RESKEY_tomcat_start_opts}" >>> >> -CATALINA_OPTS="${OCF_RESKEY_catalina_opts}" >>> >> +CATALINA_OPTS="-Dname=$TOMCAT_NAME ${OCF_RESKEY_catalina_opts}" >>> >> CATALINA_ROTATE_LOG="${OCF_RESKEY_catalina_rotate_log-NO}" >>> >> CATALINA_ROTATETIME="${OCF_RESKEY_catalina_rotatetime-86400}" >>> >> +SEARCH_STR="\\""${CATALINA_OPTS}" >>> >> >>> >> export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_PID CATALINA_OPTS >>> >> >>> >> -- >>> >> 1.7.1 >>> >> >>> > >>> > OK. The point is that -Dname=$TOMCAT_NAME moved to >>> > CATALINA_OPTS, right? >>> >>> Yes. CATALINA_OPTS is only used on start and that's the only time we >>> want the -Dname=$TOMCAT_NAME to appear >>> in the process list. >> >> OK. >> >>> >> From b01f09a8033d6a04130fc7e49d7f48844fa72b40 Mon Sep 17 00:00:00 2001 >>> >> From: Brett Delle Grazie <bdellegra...@iee.org> >>> >> Date: Tue, 18 Jan 2011 14:16:08 +0000 >>> >> Subject: [PATCH 4/7] Low: tomcat: remove eval of empty variable - does >>> >> nothing. >>> >> >>> >> Looks like a left-over from a possible 'execute this on stop' hook. >>> >> The variable is not used anywhere else in the file, therefore removing >>> >> it. >>> >> --- >>> >> heartbeat/tomcat | 1 - >>> >> 1 files changed, 0 insertions(+), 1 deletions(-) >>> >> >>> >> diff --git a/heartbeat/tomcat b/heartbeat/tomcat >>> >> index 89c20bd..723e6d8 100755 >>> >> --- a/heartbeat/tomcat >>> >> +++ b/heartbeat/tomcat >>> >> @@ -180,7 +180,6 @@ stop_tomcat() >>> >> if [ "$RESOURCE_TOMCAT_USER" = RUNASIS ]; then >>> >> "$CATALINA_HOME/bin/catalina.sh" stop \ >>> >> >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> - eval $tomcat_stop_cmd >> "$TOMCAT_CONSOLE" 2>&1 >>> >> else >>> >> cat<<-END_TOMCAT_STOP | su - -s /bin/sh >>> >> "$RESOURCE_TOMCAT_USER" >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> export JAVA_HOME=${JAVA_HOME} >>> >> -- >>> >> 1.7.1 >>> >> >>> > >>> > Good catch. It's been there from the beginning. >>> > >>> >> From b140750fd2de4992e7d3959c68a4194f07594d6b Mon Sep 17 00:00:00 2001 >>> >> From: Brett Delle Grazie <bdellegra...@iee.org> >>> >> Date: Tue, 18 Jan 2011 14:24:06 +0000 >>> >> Subject: [PATCH 5/7] Med: tomcat: Add CATALINA_BASE parameter, defaults >>> >> to CATALINA_HOME, permits multiple tomcat instances >>> >> >>> >> By exposing the CATALINA_BASE parameter it is possible to have multiple >>> >> instances of Tomcat using the same binaries but with each instance >>> >> having its >>> >> own configuration, applications etc. >>> >> >>> >> Existing behaviour is preserved as CATALINA_BASE defaults to >>> >> CATALINA_HOME >>> >> which is the default. >>> >> --- >>> >> heartbeat/tomcat | 14 +++++++++++++- >>> >> 1 files changed, 13 insertions(+), 1 deletions(-) >>> >> >>> >> diff --git a/heartbeat/tomcat b/heartbeat/tomcat >>> >> index 723e6d8..1248a97 100755 >>> >> --- a/heartbeat/tomcat >>> >> +++ b/heartbeat/tomcat >>> >> @@ -31,6 +31,7 @@ >>> >> # OCF_RESKEY_java_home - Home directory of Java. Default is none >>> >> # OCF_RESKEY_java_opts - Options to pass to Java JVM for start and >>> >> stop. Default is none >>> >> # OCF_RESKEY_catalina_home - Home directory of Tomcat. Default is none >>> >> +# OCF_RESKEY_catalina_base - Base directory of Tomcat. Default is >>> >> OCF_RESKEY_catalina_home >>> >> # OCF_RESKEY_catalina_pid - A PID file name of Tomcat. Default is >>> >> OCF_RESKEY_catalina_home/logs/catalina.pid >>> >> # OCF_RESKEY_tomcat_start_opts - Start options of Tomcat. Default is >>> >> none. >>> >> # OCF_RESKEY_catalina_opts - CATALINA_OPTS environment variable. >>> >> Default is none. >>> >> @@ -151,6 +152,7 @@ start_tomcat() >>> >> export JAVA_HOME=${JAVA_HOME} >>> >> export JAVA_OPTS="${JAVA_OPTS}" >>> >> export CATALINA_HOME=${CATALINA_HOME} >>> >> + export CATALINA_BASE=${CATALINA_BASE} >>> >> export CATALINA_PID=${CATALINA_PID} >>> >> export CATALINA_OPTS="${CATALINA_OPTS}" >>> >> $CATALINA_HOME/bin/catalina.sh start >>> >> ${TOMCAT_START_OPTS} >>> >> @@ -185,6 +187,7 @@ stop_tomcat() >>> >> export JAVA_HOME=${JAVA_HOME} >>> >> export JAVA_OPTS="${JAVA_OPTS}" >>> >> export CATALINA_HOME=${CATALINA_HOME} >>> >> + export CATALINA_BASE=${CATALINA_BASE} >>> >> export CATALINA_PID=${CATALINA_PID} >>> >> $CATALINA_HOME/bin/catalina.sh stop >>> >> END_TOMCAT_STOP >>> >> @@ -335,6 +338,14 @@ Home directory of Tomcat. >>> >> <content type="string" default="" /> >>> >> </parameter> >>> >> >>> >> +<parameter name="catalina_base" unique="1"> >>> >> +<longdesc lang="en"> >>> >> +Instance directory of Tomcat >>> >> +</longdesc> >>> >> +<shortdesc>Instance directory of Tomcat, defaults to >>> >> catalina_home</shortdesc> >>> >> +<content type="string" default="" /> >>> >> +</parameter> >>> >> + >>> >> <parameter name="catalina_pid" unique="1"> >>> >> <longdesc lang="en"> >>> >> A PID file name for Tomcat. >>> >> @@ -410,6 +421,7 @@ >>> >> RESOURCE_STATUSURL="${OCF_RESKEY_statusurl-http://127.0.0.1:8080}" >>> >> JAVA_HOME="${OCF_RESKEY_java_home}" >>> >> JAVA_OPTS="${OCF_RESKEY_java_opts}" >>> >> CATALINA_HOME="${OCF_RESKEY_catalina_home}" >>> >> +CATALINA_BASE="${OCF_RESKEY_catalina_base-${OCF_RESKEY_catalina_home}}" >>> >> CATALINA_PID="${OCF_RESKEY_catalina_pid-$CATALINA_HOME/logs/catalina.pid}" >>> >> >>> >> TOMCAT_START_OPTS="${OCF_RESKEY_tomcat_start_opts}" >>> >> @@ -418,7 +430,7 @@ >>> >> CATALINA_ROTATE_LOG="${OCF_RESKEY_catalina_rotate_log-NO}" >>> >> CATALINA_ROTATETIME="${OCF_RESKEY_catalina_rotatetime-86400}" >>> >> SEARCH_STR="\\""${CATALINA_OPTS}" >>> >> >>> >> -export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_PID CATALINA_OPTS >>> >> +export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE CATALINA_PID >>> >> CATALINA_OPTS >>> >> >>> >> JAVA=${JAVA_HOME}/bin/java >>> >> >>> >> -- >>> >> 1.7.1 >>> >> >>> > >>> > OK. >>> > >>> >> From b4f9901de0d87cd380dac690fc1f274e526ce53f Mon Sep 17 00:00:00 2001 >>> >> From: Brett Delle Grazie <bdellegra...@iee.org> >>> >> Date: Tue, 18 Jan 2011 14:47:48 +0000 >>> >> Subject: [PATCH 6/7] Med: tomcat: add timeout to monitor operation >>> >> >>> >> wget is used as part of monitor operation, ensure timeout specified in >>> >> configuration is obeyed. This is also used during start operation, use >>> >> hard-coded 1s timeout for that (since its only meant to determine if >>> >> service is running or not). >>> >> --- >>> >> heartbeat/tomcat | 15 ++++++++++----- >>> >> 1 files changed, 10 insertions(+), 5 deletions(-) >>> >> >>> >> diff --git a/heartbeat/tomcat b/heartbeat/tomcat >>> >> index 1248a97..dd4ea12 100755 >>> >> --- a/heartbeat/tomcat >>> >> +++ b/heartbeat/tomcat >>> >> @@ -68,6 +68,7 @@ action: >>> >> >>> >> ############################################################################ >>> >> # Check tomcat service availability >>> >> +# $1 is timeout >>> >> isrunning_tomcat() >>> >> { >>> >> if ! have_binary $WGET; then >>> >> @@ -75,7 +76,9 @@ isrunning_tomcat() >>> >> ocf_log info "Please make sure that wget is available" >>> >> return $OCF_ERR_CONFIGURED >>> >> fi >>> >> - $WGET -O /dev/null $RESOURCE_STATUSURL >/dev/null 2>&1 >>> >> + $WGET -O /dev/null -q -T $1 $RESOURCE_STATUSURL >/dev/null 2>&1 || >>> >> return $OCF_ERR_GENERIC >>> >> + >>> >> + return $OCF_SUCCESS >>> >> } >>> >> >>> >> ############################################################################ >>> >> @@ -84,15 +87,17 @@ isalive_tomcat() >>> >> { >>> >> pgrep -f "${SEARCH_STR}" > /dev/null >>> >> } >>> >> + >>> >> ############################################################################ >>> >> # Check tomcat process and service availability >>> >> +# $1 is timeout >>> >> monitor_tomcat() >>> >> { >>> >> + MONITOR_TIMEOUT=${1-1} >>> >> + >>> >> isalive_tomcat || >>> >> return $OCF_NOT_RUNNING >>> >> - isrunning_tomcat || >>> >> - return $OCF_NOT_RUNNING >>> >> - return $OCF_SUCCESS >>> >> + isrunning_tomcat $MONITOR_TIMEOUT >>> >> } >>> >> >>> >> ############################################################################ >>> >> @@ -463,7 +468,7 @@ case "$COMMAND" in >>> >> ;; >>> >> monitor) >>> >> #ocf_log debug "[$TOMCAT_NAME] Enter tomcat monitor" >>> >> - monitor_tomcat >>> >> + monitor_tomcat ${OCF_RESKEY_CRM_timeout} >>> > >>> > This should be $((OCF_RESKEY_CRM_meta_timeout / 1000)). >>> >>> Oops! >>> >>> > >>> >> func_status=$? >>> >> #ocf_log debug "[$TOMCAT_NAME] Leave tomcat monitor >>> >> $func_status" >>> >> exit $func_status >>> >> -- >>> >> 1.7.1 >>> >> >>> > >>> > If wget doesn't finish within OCF_RESKEY_CRM_meta_timeout, the >>> > monitor operation will timeout and it would be cleaned up by >>> > lrmd. Actually, it's better if the error is reported as timeout >>> > rather than generic error. So, I'd rather skip this patch, >>> > unless you give me better arguments :) >>> >>> Not going to argue but would like to discuss a little and will defer >>> to your judgement: >>> monitor_tomcat is used in three places: >>> (a) During the monitor operation >>> (b) At the beginning of the start operation, to test if tomcat is >>> already running (thereby skipping start operation) >>> (c) At the end of the start operation, to ensure its running properly >>> (confirmed start). >> >> It is only this last point which may make a difference. > > To me, the only real evidence that Tomcat has started successfully is the > output of a particular line in the Tomcat logs: > 2011-01-14 17:21:46,104 INFO main startup.Catalina:589 - Server > startup in 49856 ms > > At this point, Tomcat is running and applications have been started and are > past > the initial 'startup' phase and are now ready to receive requests. > > This is very difficult to monitor however as Tomcat can have many different > log files using many different log formats and only one of them might > contain the necessary > line. :( > >> >>> Without explicitly specifying a timeout wget may block for a length of >>> time that might exceed >>> the timeout of the operation (monitor or start). >>> >>> Reasons wget might block: >>> 1. target IP can't be reached (should be the server running tomcat but >>> you never know) >>> 2. request sent but response not received (i.e. busy) >>> 3. numerous others... >>> >>> Is the result of wget's operation important enough to be communicated >>> back to Pacemaker? >>> Will it help Pacemaker make a decision? >> >> Well, if immediately after start wget may block unnecessarily >> thus wasting precious time, a wget timeout could be in order. >> But note that if it's too short it could make wget repeatedly >> timeout and make the start action fail. It would be difficult to >> gauge what kind of timeout is safe. At any rate, 1 second looks >> dangerous to me. Any value would for that matter, since it >> depends on the application, right? > > Yes. It certainly would, perhaps it would be better to merely check > for 'process active' > rather than full status check at the start. > > A subsequent normal 'status' operation (with its proper timeout) could > determine if > the process is working or not. > > Does that fit with normal operation? > >> >>> >> From 67cbaeed384a9b2db61ccca44751c100a8a66e07 Mon Sep 17 00:00:00 2001 >>> >> From: Brett Delle Grazie <bdellegra...@iee.org> >>> >> Date: Tue, 18 Jan 2011 15:46:26 +0000 >>> >> Subject: [PATCH 7/7] Med: tomcat: Use Tomcat stop TIMEOUT -force to >>> >> improve stop >>> >> >>> >> The tomcat stop script can be told to forcefully terminate tomcat if it >>> >> doesn't shut down nicely within a specified period. Using this reduces >>> > >>> > Has this been true for all supported tomcat releases? >>> >>> Since at least 09/2004 (5.0.28) >>> >>> Note that 5.0.x is no longer supported by Tomcat >>> Versions 5.5.x, 6.0.x and 7.0.x all have it in there. >> >> OK. >> >>> >> the stop case to almost a simple 'call tomcat stop script in blocking >>> >> mode'. The timeout is set to slightly shorter than the stop operation >>> >> timeout. The tomcat stop script checks for and uses the PID file. >>> >> --- >>> >> heartbeat/tomcat | 67 >>> >> ++++++++--------------------------------------------- >>> >> 1 files changed, 10 insertions(+), 57 deletions(-) >>> >> >>> >> diff --git a/heartbeat/tomcat b/heartbeat/tomcat >>> >> index dd4ea12..8fb2b2b 100755 >>> >> --- a/heartbeat/tomcat >>> >> +++ b/heartbeat/tomcat >>> >> @@ -24,8 +24,6 @@ >>> >> # OCF parameters: >>> >> # OCF_RESKEY_tomcat_name - The name of the resource. Default is tomcat >>> >> # OCF_RESKEY_script_log - A destination of the log of this script. >>> >> Default /var/log/OCF_RESKEY_tomcat_name.log >>> >> -# OCF_RESKEY_tomcat_stop_timeout - Time-out at the time of the stop. >>> >> Default is 5 >>> >> -# OCF_RESKEY_tomcat_suspend_trialcount - The re-try number of times >>> >> awaiting a stop. Default is 10 >>> >> # OCF_RESKEY_tomcat_user - A user name to start a resource. Default >>> >> is root >>> >> # OCF_RESKEY_statusurl - URL for state confirmation. Default is >>> >> http://127.0.0.1:8080 >>> >> # OCF_RESKEY_java_home - Home directory of Java. Default is none >>> >> @@ -180,12 +178,19 @@ END_TOMCAT_START >>> >> # Stop Tomcat >>> >> stop_tomcat() >>> >> { >>> >> + TOMCAT_STOP_TIMEOUT=${OCF_RESKEY_CRM_timeout-5} >>> > >>> > Again, this should be $((OCF_RESKEY_CRM_meta_timeout / 1000)). >>> >>> Oops! >>> >>> > >>> >> + if [ $TOMCAT_STOP_TIMEOUT -gt 1 ]; then >>> > >>> > This should always evaluate to true. OCF_RESKEY_CRM_meta_timeout >>> > is always going to be set, by default to 20000 (20 seconds). >>> >>> Okay noted, I was being a safety bunny. >>> >>> > >>> >> + TOMCAT_STOP_TIMEOUT =`expr $TOMCAT_STOP_TIMEOUT - 1` >>> >> + else >>> >> + TOMCAT_STOP_TIMEOUT = 1 >>> >> + fi >>> >> + >>> >> cd "$CATALINA_HOME/bin" >>> >> >>> >> echo "`date "+%Y/%m/%d %T"`: stop ###########################" >> >>> >> "$TOMCAT_CONSOLE" >>> >> >>> >> if [ "$RESOURCE_TOMCAT_USER" = RUNASIS ]; then >>> >> - "$CATALINA_HOME/bin/catalina.sh" stop \ >>> >> + "$CATALINA_HOME/bin/catalina.sh" stop $TOMCAT_STOP_TIMEOUT >>> >> -force \ >>> >> >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> else >>> >> cat<<-END_TOMCAT_STOP | su - -s /bin/sh >>> >> "$RESOURCE_TOMCAT_USER" >> "$TOMCAT_CONSOLE" 2>&1 & >>> >> @@ -194,7 +199,7 @@ stop_tomcat() >>> >> export CATALINA_HOME=${CATALINA_HOME} >>> >> export CATALINA_BASE=${CATALINA_BASE} >>> >> export CATALINA_PID=${CATALINA_PID} >>> >> - $CATALINA_HOME/bin/catalina.sh stop >>> >> + $CATALINA_HOME/bin/catalina.sh stop >>> >> $TOMCAT_STOP_TIMEOUT -force >>> >> END_TOMCAT_STOP >>> >> fi >>> >> >>> >> @@ -202,40 +207,7 @@ END_TOMCAT_STOP >>> >> while isalive_tomcat; do >>> >> sleep 1 >>> >> lapse_sec=`expr $lapse_sec + 1` >>> >> - ocf_log debug "stop_tomcat[$TOMCAT_NAME]: stop NORM >>> >> $lapse_sec/$TOMCAT_STOP_TIMEOUT" >>> >> - if [ $lapse_sec -ge $TOMCAT_STOP_TIMEOUT ]; then >>> >> - break >>> >> - fi >>> >> - done >>> >> - >>> >> - if isalive_tomcat; then >>> >> - lapse_sec=0 >>> >> - while true; do >>> >> - sleep 1 >>> >> - lapse_sec=`expr $lapse_sec + 1` >>> >> - ocf_log debug "stop_tomcat[$TOMCAT_NAME]: suspend >>> >> tomcat by SIGTERM ($lapse_sec/$TOMCAT_SUSPEND_TRIALCOUNT)" >>> >> - pkill -TERM -f "${SEARCH_STR}" >>> >> - if isalive_tomcat; then >>> >> - ocf_log debug "stop_tomcat[$TOMCAT_NAME]: >>> >> suspend tomcat by SIGQUIT ($lapse_sec/$TOMCAT_SUSPEND_TRIALCOUNT)" >>> >> - pkill -QUIT -f "${SEARCH_STR}" >>> >> - if isalive_tomcat; then >>> >> - if [ $lapse_sec -ge >>> >> $TOMCAT_SUSPEND_TRIALCOUNT ]; then >>> >> - break >>> >> - fi >>> >> - else >>> >> - break >>> >> - fi >>> >> - else >>> >> - break >>> >> - fi >>> >> - done >>> >> - fi >>> >> - >>> >> - lapse_sec=0 >>> >> - while isalive_tomcat; do >>> >> - sleep 1 >>> >> - lapse_sec=`expr $lapse_sec + 1` >>> >> - ocf_log debug "stop_tomcat[$TOMCAT_NAME]: suspend tomcat >>> >> by SIGKILL ($lapse_sec)" >>> >> + ocf_log debug "stop_tomcat[$TOMCAT_NAME]: stop failed, >>> >> killing with SIGKILL ($lapse_sec)" >>> >> pkill -KILL -f "${SEARCH_STR}" >>> >> done >>> >> >>> >> @@ -286,23 +258,6 @@ Log file, used during start and stop operations. >>> >> <content type="string" default="" /> >>> >> </parameter> >>> >> >>> >> -<parameter name="tomcat_stop_timeout" unique="0"> >>> >> -<longdesc lang="en"> >>> >> -Time-out for stop operation. >>> >> -</longdesc> >>> >> -<shortdesc>Time-out for the stop operation</shortdesc> >>> >> -<content type="integer" default="" /> >>> >> -</parameter> >>> >> - >>> >> -<parameter name="tomcat_suspend_trialcount" unique="0"> >>> >> -<longdesc lang="en"> >>> >> -Maximum number of times to retry stop operation before suspending >>> >> -and killing Tomcat. >>> >> -</longdesc> >>> >> -<shortdesc>Max retry count for stop operation</shortdesc> >>> >> -<content type="integer" default="" /> >>> >> -</parameter> >>> >> - >>> >> <parameter name="tomcat_user" unique="0"> >>> >> <longdesc lang="en"> >>> >> The user who starts Tomcat. >>> >> @@ -418,8 +373,6 @@ validate_all_tomcat() >>> >> >>> >> TOMCAT_NAME="${OCF_RESKEY_tomcat_name-tomcat}" >>> >> TOMCAT_CONSOLE="${OCF_RESKEY_script_log-/var/log/$TOMCAT_NAME.log}" >>> >> -TOMCAT_STOP_TIMEOUT="${OCF_RESKEY_tomcat_stop_timeout-5}" >>> >> -TOMCAT_SUSPEND_TRIALCOUNT="${OCF_RESKEY_tomcat_suspend_trialcount-10}" >>> >> RESOURCE_TOMCAT_USER="${OCF_RESKEY_tomcat_user-RUNASIS}" >>> >> RESOURCE_STATUSURL="${OCF_RESKEY_statusurl-http://127.0.0.1:8080}" >>> >> >>> >> -- >>> >> 1.7.1 >>> >> >>> > >>> > Of the answer to the above question is yes, then I'd like to see >>> > this patch go in as well. Unless somebody objects. We'd need >>> > though to keep the parameters for the time being. The first one >>> > may get obsoleted in future, and the second one simply ignored >>> > until obsoleted. >>> >>> Sounds good to me. >> >> OK. Could you please produce new patch which would keep the >> obsolete parameters, but mark them as such in the meta-data. >> That way we can keep the existing installations happy. I guess >> that you could anyway use the meta timeout parameter, it would >> anyway need to be set to something higher than >> tomcat_stop_timeout.
Will do. >> >>> > Patches 1-5 are pushed. Is there anything else? Oh, and did you >>> > test the changes thoroughly? >>> >>> The changes have been in use in production on client systems for the >>> past 6 months. >>> This doesn't mean there aren't bugs - it just means they haven't come >>> across them yet. >>> e.g. my mistake with the timeouts. >> >> Good. But note that your timeout is always set to 4 seconds. Yes noted, will correct. >> BTW, what does catalina.sh do when this times out, uses kill -9? Yes it does. >> >> Cheers, >> >> Dejan >> >>> > Many thanks for the contribution! >>> >>> You're welcome, it was a pleasure to be able to contribute something >>> back for a change. >>> >>> > >>> > Cheers, >>> > >>> > Dejan >>> > >>> >>> -- >>> Best Regards, >>> >>> Brett Delle Grazie >>> _______________________________________________ >>> Linux-HA mailing list >>> Linux-HA@lists.linux-ha.org >>> http://lists.linux-ha.org/mailman/listinfo/linux-ha >>> See also: http://linux-ha.org/ReportingProblems >> _______________________________________________ >> Linux-HA mailing list >> Linux-HA@lists.linux-ha.org >> http://lists.linux-ha.org/mailman/listinfo/linux-ha >> See also: http://linux-ha.org/ReportingProblems >> > > > > -- > Best Regards, > > Brett Delle Grazie > -- Best Regards, Brett Delle Grazie _______________________________________________ Linux-HA mailing list Linux-HA@lists.linux-ha.org http://lists.linux-ha.org/mailman/listinfo/linux-ha See also: http://linux-ha.org/ReportingProblems