-
Notifications
You must be signed in to change notification settings - Fork 139
/
Copy pathdevicehive-start.sh
84 lines (76 loc) · 3.08 KB
/
devicehive-start.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/bin/bash -e
set -x
trap 'terminate' TERM INT
terminate() {
echo "SIGTERM received, terminating $PID"
kill -TERM "$PID"
wait "$PID"
}
# Check if all required parameters are set
if [ -z "$DH_POSTGRES_ADDRESS" ] \
|| [ -z "$DH_POSTGRES_USERNAME" ] \
|| [ -z "$DH_POSTGRES_PASSWORD" ] \
|| [ -z "$DH_POSTGRES_DB" ] \
|| [ -z "$REDIS_MASTER_HOST" ] \
|| [ -z "$REDIS_MASTER_PORT" ] \
|| [ -z "$DH_ZK_ADDRESS" ] \
|| ( [ -z "$DH_KAFKA_BOOTSTRAP_SERVERS" ] && [ -z "$DH_KAFKA_ADDRESS" ] )
then
echo "Some of required environment variables are not set or empty."
echo "Please check following vars are passed to container:"
echo "- DH_POSTGRES_ADDRESS"
echo "- DH_POSTGRES_USERNAME"
echo "- DH_POSTGRES_PASSWORD"
echo "- DH_POSTGRES_DB"
echo "- REDIS_MASTER_HOST"
echo "- REDIS_MASTER_PORT"
echo "- DH_ZK_ADDRESS"
echo "And one of variants of Kafka bootstrap parameters:"
echo "- DH_KAFKA_BOOTSTRAP_SERVERS for multiple servers"
echo "or"
echo "- DH_KAFKA_ADDRESS for a single server"
exit 1
fi
if [ -z "$DH_KAFKA_BOOTSTRAP_SERVERS" ]
then
DH_KAFKA_BOOTSTRAP_SERVERS="${DH_KAFKA_ADDRESS}:${DH_KAFKA_PORT:-9092}"
fi
# Check if Zookeper, Kafka and Postgres are ready
while true; do
nc -v -z -w1 "$DH_ZK_ADDRESS" "${DH_ZK_PORT:=2181}"
result_zk=$?
FIRST_KAFKA_SERVER="${DH_KAFKA_BOOTSTRAP_SERVERS%%,*}"
nc -v -z -w1 "${FIRST_KAFKA_SERVER%%:*}" $(expr $FIRST_KAFKA_SERVER : '.*:\([0-9]*\)')
result_kafka=$?
nc -v -z -w1 "$DH_POSTGRES_ADDRESS" "${DH_POSTGRES_PORT:=5432}"
result_postgres=$?
if [ "$result_kafka" -eq 0 ] && [ "$result_postgres" -eq 0 ] && [ "$result_zk" -eq 0 ]; then
break
fi
sleep 3
done
echo "Starting DeviceHive backend"
java -server -Xms1g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError -jar \
-Dacks="${DH_ACKS:-1}" \
-Dauto.commit.interval.ms="${DH_AUTO_COMMIT_INTERVAL_MS:-5000}" \
-Dbatch.size="${DH_BATCH_SIZE:-98304}" \
-Dbootstrap.servers="${DH_KAFKA_BOOTSTRAP_SERVERS}" \
-Dcom.devicehive.log.level="${DH_LOG_LEVEL:-WARN}" \
-Denable.auto.commit="${DH_ENABLE_AUTO_COMMIT:-true}" \
-Dfetch.max.wait.ms="${DH_FETCH_MAX_WAIT_MS:-100}" \
-Dfetch.min.bytes="${DH_FETCH_MIN_BYTES:-1}" \
-Dproxy.connect="${DH_WS_PROXY:-localhost:3000}" \
-Dproxy.worker.threads="${DH_WS_PROXY_BE_THREADS:-3}" \
-Dreplication.factor="${DH_REPLICATION_FACTOR:-1}" \
-Droot.log.level="${ROOT_LOG_LEVEL:-WARN}" \
-Drpc.server.request-consumer.threads="${DH_RPC_SERVER_REQ_CONS_THREADS:-3}" \
-Drpc.server.worker.threads="${DH_RPC_SERVER_WORKER_THREADS:-3}" \
-Dspring.datasource.url="jdbc:postgresql://${DH_POSTGRES_ADDRESS}:${DH_POSTGRES_PORT}/${DH_POSTGRES_DB}" \
-Dspring.datasource.username="${DH_POSTGRES_USERNAME}" \
-Dspring.datasource.password="${DH_POSTGRES_PASSWORD}" \
-Dzookeeper.connect="${DH_ZK_ADDRESS}:${DH_ZK_PORT}" \
-Dzookeeper.connectionTimeout="${DH_ZK_CONNECTIONTIMEOUT:-8000}" \
-Dzookeeper.sessionTimeout="${DH_ZK_SESSIONTIMEOUT:-10000}" \
"./devicehive-backend-${DH_VERSION}-boot.jar" &
PID=$!
wait $PID