-
Notifications
You must be signed in to change notification settings - Fork 0
/
tessera-start.sh
142 lines (124 loc) · 3.76 KB
/
tessera-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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/bin/bash
set -u
set -e
function usage() {
echo ""
echo "Usage:"
echo " $0 [--tesseraJar path to Tessera jar file] [--remoteDebug] [--jvmParams \"JVM parameters\"]"
echo ""
echo "Where:"
echo " --tesseraJar specifies path to the jar file, default is to use the vagrant location"
echo " --remoteDebug enables remote debug on port 500n for each Tessera node (for use with JVisualVm etc)"
echo " --jvmParams specifies parameters to be used by JVM when running Tessera"
echo "Notes:"
echo " Tessera jar location defaults to ${defaultTesseraJarExpr};"
echo " however, this can be overridden by environment variable TESSERA_JAR or by the command line option."
echo ""
exit -1
}
defaultTesseraJarExpr="/home/vagrant/tessera/tessera.jar"
set +e
defaultTesseraJar=`find ${defaultTesseraJarExpr} 2>/dev/null`
set -e
if [[ "${TESSERA_JAR:-unset}" == "unset" ]]; then
tesseraJar=${defaultTesseraJar}
else
tesseraJar=${TESSERA_JAR}
fi
remoteDebug=false
jvmParams=
while (( "$#" )); do
case "$1" in
--tesseraJar)
tesseraJar=$2
shift 2
;;
--remoteDebug)
remoteDebug=true
shift
;;
--jvmParams)
jvmParams=$2
shift 2
;;
--help)
shift
usage
;;
*)
echo "Error: Unsupported command line parameter $1"
usage
;;
esac
done
if [ "${tesseraJar}" == "" ]; then
echo "ERROR: unable to find Tessera jar file using TESSERA_JAR envvar, or using ${defaultTesseraJarExpr}"
usage
elif [ ! -f "${tesseraJar}" ]; then
echo "ERROR: unable to find Tessera jar file: ${tesseraJar}"
usage
fi
#extract the tessera version from the jar
TESSERA_VERSION=$(unzip -p $tesseraJar META-INF/MANIFEST.MF | grep Tessera-Version | cut -d" " -f2)
echo "Tessera version (extracted from manifest file): $TESSERA_VERSION"
TESSERA_CONFIG_TYPE=
#TODO - this will break when we get to version 0.10 (hopefully we would have moved to 1.x by then)
if [ "$TESSERA_VERSION" \> "0.8" ] || [ "$TESSERA_VERSION" == "0.8" ]; then
TESSERA_CONFIG_TYPE="-enhanced-"
fi
if [ "$TESSERA_VERSION" \> "0.9" ] || [ "$TESSERA_VERSION" == "0.9" ]; then
TESSERA_CONFIG_TYPE="-09-"
fi
echo Config type $TESSERA_CONFIG_TYPE
currentDir=`pwd`
for i in {1..7}
do
DDIR="qdata/c$i"
mkdir -p ${DDIR}
mkdir -p qdata/logs
rm -f "$DDIR/tm.ipc"
DEBUG=""
if [ "$remoteDebug" == "true" ]; then
DEBUG="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=500$i -Xdebug"
fi
#Only set heap size if not specified on command line
MEMORY=
if [[ ! "$jvmParams" =~ "Xm" ]]; then
MEMORY="-Xms128M -Xmx128M"
fi
CMD="java $jvmParams $DEBUG $MEMORY -jar ${tesseraJar} -configfile $DDIR/tessera-config$TESSERA_CONFIG_TYPE$i.json"
echo "$CMD >> qdata/logs/tessera$i.log 2>&1 &"
${CMD} >> "qdata/logs/tessera$i.log" 2>&1 &
sleep 1
done
echo "Waiting until all Tessera nodes are running..."
DOWN=true
k=10
while ${DOWN}; do
sleep 1
DOWN=false
for i in {1..7}
do
if [ ! -S "qdata/c${i}/tm.ipc" ]; then
echo "Node ${i} is not yet listening on tm.ipc"
DOWN=true
fi
set +e
#NOTE: if using https, change the scheme
#NOTE: if using the IP whitelist, change the host to an allowed host
result=$(curl -s http://localhost:900${i}/upcheck)
set -e
if [ ! "${result}" == "I'm up!" ]; then
echo "Node ${i} is not yet listening on http"
DOWN=true
fi
done
k=$((k - 1))
if [ ${k} -le 0 ]; then
echo "Tessera is taking a long time to start. Look at the Tessera logs in qdata/logs/ for help diagnosing the problem."
fi
echo "Waiting until all Tessera nodes are running..."
sleep 5
done
echo "All Tessera nodes started"
exit 0