stop-ds revision 2976
12343c067e12be071a68bbb10d1d1c4870696769Tinderbox User#!/bin/sh
6c2a76b3e2ccd32c35814b6e0f54da00190749d7Evan Hunt#
6fe48fb46e53ffc37542853a1edb74cb481b7d94Automatic Updater# CDDL HEADER START
c7fd128f8ea8a527fe27c1b95ab46df7155bc8e4Tinderbox User#
c7fd128f8ea8a527fe27c1b95ab46df7155bc8e4Tinderbox User# The contents of this file are subject to the terms of the
ba9e87b35e561bc7354ce3f4b9685b747b7be507Tinderbox User# Common Development and Distribution License, Version 1.0 only
1f9754245cbd5eec2d2a667bb292f62f72386d4bMark Andrews# (the "License"). You may not use this file except in compliance
59663800d2ec04777dae2791dd92aa563faf94c8Evan Hunt# with the License.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews#
1f9754245cbd5eec2d2a667bb292f62f72386d4bMark Andrews# You can obtain a copy of the license at
59663800d2ec04777dae2791dd92aa563faf94c8Evan Hunt# trunk/opends/resource/legal-notices/OpenDS.LICENSE
1ca2cf024391992fe14b2df7d3ae0f575d074452Evan Hunt# or https://OpenDS.dev.java.net/OpenDS.LICENSE.
0726d872f6f36901ea09321df57084614e5bb6faTinderbox User# See the License for the specific language governing permissions
1ca2cf024391992fe14b2df7d3ae0f575d074452Evan Hunt# and limitations under the License.
a2c370ca12bb0360ff7e969474ead3f788c65fffTinderbox User#
8de3f14f1c300c3e1ed99084cc03485b42c92bf1Tinderbox User# When distributing Covered Code, include this CDDL HEADER in each
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# file and include the License file at
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User# add the following below this CDDL HEADER, with the fields enclosed
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# by brackets "[]" replaced with your own identifying information:
2b7254075b883d70852a2757210793603085a0f1Tinderbox User# Portions Copyright [yyyy] [name of copyright owner]
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews#
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# CDDL HEADER END
b91d11bfcc30b96f2c80f3a76d12e3dcc8597a68Mark Andrews#
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews#
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# Portions Copyright 2006-2007 Sun Microsystems, Inc.
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# This script may be used to request that the Directory Server shut down.
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# It operates in two different ways, depending on how it is invoked. If it
415d630b6309922caee8469384a6fab75cf05032Mark Andrews# is invoked without any arguments and a local PID file is available, then it
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews# will stop the server by sending a TERM signal to the process, and this
415d630b6309922caee8469384a6fab75cf05032Mark Andrews# script will wait until the server has stopped before exiting. If any
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews# arguments were provided or there is no local PID file, then it will attempt
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User# to stop the server using an LDAP request.
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
415d630b6309922caee8469384a6fab75cf05032Mark Andrews
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews# Capture the current working directory so that we can change to it later.
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews# Then capture the location of this script and the Directory Server instance
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User# root so that we can use them to create appropriate paths.
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsWORKING_DIR=`pwd`
415d630b6309922caee8469384a6fab75cf05032Mark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewscd `dirname "${0}"`
415d630b6309922caee8469384a6fab75cf05032Mark AndrewsSCRIPT_DIR=`pwd`
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox Usercd ..
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsINSTANCE_ROOT=`pwd`
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox Userexport INSTANCE_ROOT
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Huntcd "${WORKING_DIR}"
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# Specify the script name so that we can use the specified java properties.
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan HuntSCRIPT_NAME="stop-ds"
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrewsexport SCRIPT_NAME
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt# Set environment variables
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark AndrewsSCRIPT_UTIL_CMD=set-full-environment-and-test-java
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrewsexport SCRIPT_UTIL_CMD
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews. "${INSTANCE_ROOT}/lib/_script-util.sh"
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark AndrewsRETURN_CODE=$?
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsif test ${RETURN_CODE} -ne 0
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updaterthen
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews exit ${RETURN_CODE}
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox Userfi
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater"${OPENDS_JAVA_BIN}" ${JAVA_ARGS} ${SCRIPT_NAME_ARG} \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews org.opends.server.tools.StopDS --checkStoppability "${@}"
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark AndrewsEC=${?}
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsSTOPPED=1
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark AndrewsEXIT_CODE=1
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsMUST_START_USING_SYSTEM_CALL=1
eabc9c3c07cd956d3c436bd7614cb162dabdda76Mark AndrewsMUST_STOP_USING_SYSTEM_CALL=1
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsQUIET_MODE=1
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox Userif test ${EC} -eq 98
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User# Already stopped and nothing else to do.
3ccf87473f7cf6d9faac156df38a935a238f96fdTinderbox User#
fec6e13f2d1e69fe1c2b8fac36f732f124cf5398Mark Andrewsthen
b378314925e78f21853a98cec924788ce1822c6cTinderbox User STOPPED=0
ebe53509ca55a141131c104b6d722236b606e0efTinderbox Userelse
fec6e13f2d1e69fe1c2b8fac36f732f124cf5398Mark Andrews if test ${EC} -eq 99 -o ${EC} -eq 105
415d630b6309922caee8469384a6fab75cf05032Mark Andrews #
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt # Already stopped and must start locally.
415d630b6309922caee8469384a6fab75cf05032Mark Andrews #
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews then
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User STOPPED=0
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt MUST_START_USING_SYSTEM_CALL=0
7cc0a5d21ef046bfd630c4769943d896a7d7472cTinderbox User if test ${EC} -eq 105
3ccf87473f7cf6d9faac156df38a935a238f96fdTinderbox User then
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews QUIET_MODE=0
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User fi
551e6d2414c4f47d58a9bb0b37f206f915a4f5acTinderbox User else
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews if test ${EC} -eq 100
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User then
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews #
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User # Stop using system call
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User #
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews MUST_STOP_USING_SYSTEM_CALL=0
51aeb0ae19596e99b029cfa933e73b76ebec480aTinderbox User else
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews if test ${EC} -eq 101 -o ${EC} -eq 106
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User then
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User #
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews # Restart using system call
415d630b6309922caee8469384a6fab75cf05032Mark Andrews #
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson MUST_STOP_USING_SYSTEM_CALL=0
415d630b6309922caee8469384a6fab75cf05032Mark Andrews MUST_START_USING_SYSTEM_CALL=0
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews if test ${EC} -eq 106
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews QUIET_MODE=0
415d630b6309922caee8469384a6fab75cf05032Mark Andrews fi
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews else
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews if test ${EC} -ne 102
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews exit ${EC}
415d630b6309922caee8469384a6fab75cf05032Mark Andrews fi
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson fi
415d630b6309922caee8469384a6fab75cf05032Mark Andrews fi
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews fi
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox Userfi
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
415d630b6309922caee8469384a6fab75cf05032Mark Andrewsif test ${MUST_STOP_USING_SYSTEM_CALL} -eq 0
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafssonthen
415d630b6309922caee8469384a6fab75cf05032Mark Andrews if test -f "${INSTANCE_ROOT}/logs/server.pid"
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews then
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User kill `cat "${INSTANCE_ROOT}/logs/server.pid"`
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews EXIT_CODE=${?}
28a5dd720187fddb16055a0f64b63a7b66f29f64Mark Andrews if test ${EXIT_CODE} -eq 0
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews then
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews "${OPENDS_JAVA_BIN}" -Xms8M -Xmx8M org.opends.server.tools.WaitForFileDelete \
ebe53509ca55a141131c104b6d722236b606e0efTinderbox User --targetFile "${INSTANCE_ROOT}/logs/server.pid" \
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews --logFile "${INSTANCE_ROOT}/logs/errors"
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews EXIT_CODE=${?}
fec6e13f2d1e69fe1c2b8fac36f732f124cf5398Mark Andrews if test ${EXIT_CODE} -eq 0
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews then
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews STOPPED=0
fec6e13f2d1e69fe1c2b8fac36f732f124cf5398Mark Andrews fi
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont fi
51aeb0ae19596e99b029cfa933e73b76ebec480aTinderbox User else
baeaed18341c015e9ad54ffa21973184c1bc432bMark Andrews echo "ERROR: Unable to find the server.pid file to determine the process"
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont echo " ID of the OpenDS process to terminate."
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews exit 1
51aeb0ae19596e99b029cfa933e73b76ebec480aTinderbox User fi
baeaed18341c015e9ad54ffa21973184c1bc432bMark Andrewsfi
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews# Delete the pid file if the server is stopped (this can occur if the process
33b0d10552ea5f7716385b2cedff64daa1486c50Tinderbox User# has been killed using kill -9).
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrewsif test ${STOPPED} -eq 0
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrewsthen
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews if test -f "${INSTANCE_ROOT}/logs/server.pid"
33b0d10552ea5f7716385b2cedff64daa1486c50Tinderbox User then
b378314925e78f21853a98cec924788ce1822c6cTinderbox User rm "${INSTANCE_ROOT}/logs/server.pid"
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews fi
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsfi
2b7254075b883d70852a2757210793603085a0f1Tinderbox User
66317da170ed35b08f5847db2d48b225826327cbTinderbox User# Now if the user wants to restart the server, try to restart it if the server
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# is stopped.
fec6e13f2d1e69fe1c2b8fac36f732f124cf5398Mark Andrewsif test ${MUST_START_USING_SYSTEM_CALL} -eq 0
b625bdae12277225b076a002dd4af80902529181Tinderbox Userthen
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews if test ${STOPPED} -eq 0
01a5c5503482fb3ba52088bf0178a7213273bf96Mark Andrews then
2b7254075b883d70852a2757210793603085a0f1Tinderbox User if test ${QUIET_MODE} -eq 0
33b0d10552ea5f7716385b2cedff64daa1486c50Tinderbox User then
415d630b6309922caee8469384a6fab75cf05032Mark Andrews "${INSTANCE_ROOT}/bin/start-ds" --quiet
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updater EXIT_CODE=${?}
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews exit ${EXIT_CODE}
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User else
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews "${INSTANCE_ROOT}/bin/start-ds"
415d630b6309922caee8469384a6fab75cf05032Mark Andrews EXIT_CODE=${?}
fe80a4909bf62b602feaf246866e9d29f7654194Automatic Updater exit ${EXIT_CODE}
415d630b6309922caee8469384a6fab75cf05032Mark Andrews fi
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews fi
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User#
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews# The user does not want to start the server locally and it is already stopped.
415d630b6309922caee8469384a6fab75cf05032Mark Andrews# Just exit.
fa0326cc2cf428f67575b6ba3b97b528a31b0010Tinderbox User#
415d630b6309922caee8469384a6fab75cf05032Mark Andrewselse
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews if test ${STOPPED} -eq 0
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews exit 0
415d630b6309922caee8469384a6fab75cf05032Mark Andrews fi
fe80a4909bf62b602feaf246866e9d29f7654194Automatic Updaterfi
415d630b6309922caee8469384a6fab75cf05032Mark Andrews
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews# If we've gotten here, then we should try to stop the server over LDAP.
9218b940febade3085fd6d95a15e67d5f94833f0Tinderbox User"${OPENDS_JAVA_BIN}" ${JAVA_ARGS} ${SCRIPT_NAME_ARG} \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews org.opends.server.tools.StopDS "${@}"
415d630b6309922caee8469384a6fab75cf05032Mark Andrews