Skip to content

Commit c59b0b2

Browse files
committed
Debian/Redhat package improvments
This decision helps people who want to rollout the oracle java without having an openjdk java installed. * Removed any hard dependency on Java in the debian package * The debian init script does not check for an existing JAVA_HOME anymore * Debian and RedHat initscripts now exit if they do not find a java binary (instead of starting elasticsearch in the background and swallowing the error as there is no way to log it in that case) * Changed the debian init script to rely on the pid file instead of the argument name of process * Added a useful error message in case no java binary is available (in elasticsearch shell script) Closes elastic#3304 Closes elastic#3311
1 parent 37edfe0 commit c59b0b2

File tree

4 files changed

+50
-24
lines changed

4 files changed

+50
-24
lines changed

bin/elasticsearch

+7-2
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,12 @@ fi
8989
if [ -x "$JAVA_HOME/bin/java" ]; then
9090
JAVA="$JAVA_HOME/bin/java"
9191
else
92-
JAVA=java
92+
JAVA=$(which java)
93+
fi
94+
95+
if [ ! -x "$JAVA" ]; then
96+
echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME"
97+
exit 1
9398
fi
9499

95100
if [ -z "$ES_CLASSPATH" ]; then
@@ -169,7 +174,7 @@ while true; do
169174
break
170175
;;
171176
*)
172-
echo "Error parsing arguments!" >&2
177+
echo "Error parsing argument $1!" >&2
173178
exit 1
174179
;;
175180
esac

src/deb/control/control

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
Package: elasticsearch
22
Version: [[version]]
33
Architecture: all
4-
Maintainer: Nicolas Huray <nicolas.huray@gmail.com>
4+
Maintainer: Elasticsearch Team <info@elasticsearch.com>
55
Depends: libc6, adduser
6-
Suggest: java7-runtime-headless | java6-runtime-headless | java7-runtime | java6-runtime
76
Section: web
87
Priority: optional
98
Homepage: http://www.elasticsearch.org/

src/deb/init.d/elasticsearch

+26-20
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ JDK_DIRS="/usr/lib/jvm/java-7-oracle /usr/lib/jvm/java-7-openjdk /usr/lib/jvm/ja
5151
# Look for the right JVM to use
5252
for jdir in $JDK_DIRS; do
5353
if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
54-
JAVA_HOME="$jdir"
54+
JAVA_HOME="$jdir"
5555
fi
5656
done
5757
export JAVA_HOME
@@ -112,24 +112,35 @@ export ES_JAVA_OPTS
112112
# Check DAEMON exists
113113
test -x $DAEMON || exit 0
114114

115-
case "$1" in
116-
start)
117-
if [ -z "$JAVA_HOME" ]; then
118-
log_failure_msg "no JDK found - please set JAVA_HOME"
115+
checkJava() {
116+
set +e
117+
if [ -x "$JAVA_HOME/bin/java" ]; then
118+
JAVA="$JAVA_HOME/bin/java"
119+
else
120+
JAVA=$(which java)
121+
fi
122+
123+
if [ ! -x "$JAVA" ]; then
124+
echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME"
119125
exit 1
120126
fi
127+
set -e
128+
}
129+
130+
case "$1" in
131+
start)
132+
checkJava
121133

122134
if [ -n "$MAX_LOCKED_MEMORY" -a -z "$ES_HEAP_SIZE" ]; then
123135
log_failure_msg "MAX_LOCKED_MEMORY is set - ES_HEAP_SIZE must also be set"
124136
exit 1
125137
fi
126138

127139
log_daemon_msg "Starting $DESC"
128-
129-
if start-stop-daemon --test --start --pidfile "$PID_FILE" \
130-
--user "$ES_USER" --exec "$JAVA_HOME/bin/java" \
131-
>/dev/null; then
132-
140+
141+
set +e
142+
start-stop-daemon --status --pidfile "$PID_FILE" >/dev/null
143+
if [ "$?" != "0" ]; then
133144
# Prepare environment
134145
mkdir -p "$LOG_DIR" "$DATA_DIR" "$WORK_DIR" && chown "$ES_USER":"$ES_GROUP" "$LOG_DIR" "$DATA_DIR" "$WORK_DIR"
135146
touch "$PID_FILE" && chown "$ES_USER":"$ES_GROUP" "$PID_FILE"
@@ -143,20 +154,18 @@ case "$1" in
143154
fi
144155

145156
# Start Daemon
146-
start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec /bin/bash -- -c "$DAEMON $DAEMON_OPTS"
157+
start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS
147158

148159
sleep 1
149-
if start-stop-daemon --test --start --pidfile "$PID_FILE" \
150-
--user "$ES_USER" --exec "$JAVA_HOME/bin/java" \
151-
>/dev/null; then
160+
start-stop-daemon --status --pidfile "$PID_FILE" >/dev/null
161+
if [ "$?" != "0" ]; then
152162
if [ -f "$PID_FILE" ]; then
153163
rm -f "$PID_FILE"
154164
fi
155165
log_end_msg 1
156166
else
157167
log_end_msg 0
158168
fi
159-
160169
else
161170
log_progress_msg "(already running)"
162171
log_end_msg 0
@@ -186,11 +195,8 @@ case "$1" in
186195
;;
187196
status)
188197
set +e
189-
start-stop-daemon --test --start --pidfile "$PID_FILE" \
190-
--user "$ES_USER" --exec "$JAVA_HOME/bin/java" \
191-
>/dev/null 2>&1
192-
if [ "$?" = "0" ]; then
193-
198+
start-stop-daemon --status --pidfile "$PID_FILE" >/dev/null 2>&1
199+
if [ "$?" != "0" ]; then
194200
if [ -f "$PID_FILE" ]; then
195201
log_success_msg "$DESC is not running, but pid file exists."
196202
exit 1

src/rpm/init.d/elasticsearch

+16
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,23 @@ if [ -n $USER ] && [ -z $ES_USER ] ; then
4949
ES_USER=$USER
5050
fi
5151

52+
checkJava() {
53+
set +e
54+
if [ -x "$JAVA_HOME/bin/java" ]; then
55+
JAVA="$JAVA_HOME/bin/java"
56+
else
57+
JAVA=$(which java)
58+
fi
59+
60+
if [ ! -x "$JAVA" ]; then
61+
echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME"
62+
exit 1
63+
fi
64+
set -e
65+
}
66+
5267
start() {
68+
checkJava
5369
[ -x $exec ] || exit 5
5470
[ -f $CONF_FILE ] || exit 6
5571
if [ -n "$MAX_LOCKED_MEMORY" -a -z "$ES_HEAP_SIZE" ]; then

0 commit comments

Comments
 (0)