diff options
author | feld <feld@FreeBSD.org> | 2018-02-23 07:03:41 +0800 |
---|---|---|
committer | feld <feld@FreeBSD.org> | 2018-02-23 07:03:41 +0800 |
commit | 718a7a5b74075a34524fbe934c8d2070f50a0223 (patch) | |
tree | d84a2760c568ff3f3df5e94f7c6f83c552e9020f /textproc | |
parent | f35f3b1a01a6f332b9da05142240fc2b687477ec (diff) | |
download | freebsd-ports-gnome-718a7a5b74075a34524fbe934c8d2070f50a0223.tar.gz freebsd-ports-gnome-718a7a5b74075a34524fbe934c8d2070f50a0223.tar.zst freebsd-ports-gnome-718a7a5b74075a34524fbe934c8d2070f50a0223.zip |
textproc/elasticsearch5: Use native facilites for manging the process
start/stop/status will behave correctly with procname set.
This now prevents Elastic from starting when a process is already
running, stops cleanly, and also handles multiple profiles correctly:
if only some of the profile processes are running, a "service
elasticsearch start" will only start the profiles that are not detected
as running already.
All of this comes with the caveat that Elastic is slow to start up and write
its pidfile, so if you are too quick it will allow duplicate processes
to start. Here be JVM dragons.
Approved by: portmgr (with hat)
MFH: 2018Q1
Diffstat (limited to 'textproc')
-rw-r--r-- | textproc/elasticsearch5/Makefile | 5 | ||||
-rw-r--r-- | textproc/elasticsearch5/files/elasticsearch.in | 49 |
2 files changed, 4 insertions, 50 deletions
diff --git a/textproc/elasticsearch5/Makefile b/textproc/elasticsearch5/Makefile index 4ede31eee3f7..0815d62eb44f 100644 --- a/textproc/elasticsearch5/Makefile +++ b/textproc/elasticsearch5/Makefile @@ -3,7 +3,7 @@ PORTNAME= elasticsearch PORTVERSION= 5.3.0 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= textproc java devel MASTER_SITES= https://artifacts.elastic.co/downloads/${PORTNAME}/ \ http://mirrors.rit.edu/zi/ @@ -51,7 +51,8 @@ ELASTIC_LOGDIR= /var/log/elasticsearch SUB_LIST= SEARCHUSER=${SEARCHUSER} \ SEARCHGROUP=${SEARCHGROUP} \ - PORTVERSION=${PORTVERSION} + PORTVERSION=${PORTVERSION} \ + JAVA=${JAVA} SUB_FILES= pkg-message PLIST_SUB+= SEARCHUSER=${SEARCHUSER} \ SEARCHGROUP=${SEARCHGROUP} \ diff --git a/textproc/elasticsearch5/files/elasticsearch.in b/textproc/elasticsearch5/files/elasticsearch.in index 925a3066dc37..2141a5edb8ff 100644 --- a/textproc/elasticsearch5/files/elasticsearch.in +++ b/textproc/elasticsearch5/files/elasticsearch.in @@ -36,12 +36,11 @@ load_rc_config ${name} required_files="${elasticsearch_config}/elasticsearch.yml" _pidprefix=/var/run/elasticsearch pidfile=${_pidprefix}.pid +procname=%%JAVA%% extra_commands="console status" console_cmd=elasticsearch_console start_precmd=elasticsearch_precmd -status_cmd=elasticsearch_status -stop_cmd=elasticsearch_stop command=%%PREFIX%%/lib/elasticsearch/bin/elasticsearch command_args="-d --pidfile=${pidfile} -Epath.conf=${elasticsearch_config}" @@ -59,52 +58,6 @@ elasticsearch_console() run_rc_command "start" } -elasticsearch_stop() -{ - rc_pid=$(elasticsearch_check_pidfile $pidfile) - - if [ -z "$rc_pid" ]; then - [ -n "$rc_fast" ] && return 0 - echo "${name} not running? (check $pidfile)." - return 1 - fi - - echo "Stopping ${name}." - kill $sig_stop ${rc_pid} - wait_for_pids ${rc_pid} -} - -elasticsearch_status() -{ - rc_pid=$(elasticsearch_check_pidfile $pidfile) - - if [ -z "$rc_pid" ]; then - [ -n "$rc_fast" ] && return 0 - echo "${name} not running? (check $pidfile)." - return 1 - fi - echo "${name} is running as pid ${rc_pid}." -} - -elasticsearch_check_pidfile() -{ - _pidfile=$1 - if [ -z "$_pidfile" ]; then - err 3 'USAGE: elasticsearch_check_pidfile pidfile' - fi - if [ ! -f $_pidfile ]; then - debug "pid file ($_pidfile): not readable." - return - fi - read _pid _junk < $_pidfile - if [ -z "$_pid" ]; then - debug "pid file ($_pidfile): no pid in file." - return - fi - if [ -n "`%%PREFIX%%/bin/jps -l | grep -e "^$_pid"`" ]; then - echo -n $_pid - fi -} if [ -n "$2" ]; then profile="$2" if [ "x${elasticsearch_profiles}" != "x" ]; then |