diff --git a/solr/manifests/init.pp b/solr/manifests/init.pp index 8aa70b0..b35103f 100644 --- a/solr/manifests/init.pp +++ b/solr/manifests/init.pp @@ -137,9 +137,10 @@ class solr { } service { "solr": - ensure => running, - enable => true, - hasstatus => true, + ensure => running, + enable => true, + hasstatus => true, + hasrestart => true, } file { "/etc/solr": diff --git a/solr/templates/solr.init.erb b/solr/templates/solr.init.erb index 327b132..81b723b 100644 --- a/solr/templates/solr.init.erb +++ b/solr/templates/solr.init.erb @@ -48,51 +48,70 @@ if [ ! -e "${HOMEDIR}/solr.xml" ]; then exit 1 fi -start_solr() { - # Check to see if Solr is running +do_status() { pgrep -u ${SOLRUSER} -f start.jar >/dev/null - RUNNING=$? - if [ $RUNNING -eq 0 ]; then - echo "[FAILED]" - echo - echo "Reason: Solr already running" +} + +do_start() { + echo -n "Starting Solr... " + + # Check to see if Solr is running + do_status + if [ $? -eq 0 ]; then + echo "failed. Solr already running." exit 1 fi # Start Solr - echo "Starting Solr" COMMAND="java -Djetty.host=127.0.0.1 -Dlog4j.configuration=${LOG4JCONFIG} -Dsolr.solr.home=${HOMEDIR} ${MEMORYLIMIT} -jar start.jar > /dev/null &" su -s /bin/sh - ${SOLRUSER} -c "umask 007; cd ${RUNDIR}; ${COMMAND}" + if [ $? -eq 0 ]; then + echo "done." + else + echo "failed." + exit 1 + fi } -stop_solr() { - echo -n "Stopping Solr: " +do_stop() { + echo -n "Stopping Solr... " pkill -u ${SOLRUSER} -f start.jar - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - echo "Success" + if [ $? -ne 0 ]; then + echo "not running." else - echo "Failed" + for seq in 1 2 3 4 5 6 7 8 9 10; do + do_status + if [ $? -ne 0 ]; then + success=1 + break + fi + sleep 1 + done + if [ -n "${success}" ]; then + echo "done." + else + echo "failed." + exit 1 + fi fi } case "$1" in start) - start_solr + do_start ;; stop) - stop_solr + do_stop ;; restart) - stop_solr - sleep 2 - start_solr + do_stop + do_start ;; status) - pgrep -u ${SOLRUSER} -f start.jar >/dev/null + do_status exit $? ;;