-
Notifications
You must be signed in to change notification settings - Fork 0
/
centos-cassandra-scripts.patch
411 lines (376 loc) · 16.1 KB
/
centos-cassandra-scripts.patch
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
diff -Naur cassandra-3.9-orig/bin/cassandra cassandra-3.9/bin/cassandra
--- cassandra-3.9-orig/bin/cassandra 2016-09-26 16:02:27.000000000 +0200
+++ cassandra-3.9/bin/cassandra 2017-10-31 18:37:34.877510920 +0100
@@ -69,9 +69,9 @@
# Locations (in order) to use when searching for an include file.
for include in "`dirname "$0"`/cassandra.in.sh" \
"$HOME/.cassandra.in.sh" \
- /usr/share/cassandra/cassandra.in.sh \
- /usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh; do
+ /opt/rh/sclo-cassandra3/root/usr/share/cassandra/cassandra.in.sh \
+ /opt/rh/sclo-cassandra3/root/usr/local/share/cassandra/cassandra.in.sh \
+ /opt/rh/sclo-cassandra3/root/opt/cassandra/cassandra.in.sh; do
if [ -r "$include" ]; then
. "$include"
break
@@ -122,6 +122,10 @@
if [ -f "$CASSANDRA_CONF/cassandra-env.sh" ]; then
. "$CASSANDRA_CONF/cassandra-env.sh"
+else
+ if [ -f "/opt/rh/sclo-cassandra3/root/usr/share/cassandra/cassandra-env.sh" ]; then
+ . "/opt/rh/sclo-cassandra3/root/usr/share/cassandra/cassandra-env.sh"
+ fi
fi
# Special-case path variables.
@@ -188,7 +192,7 @@
props="$3"
class="$4"
cassandra_parms="-Dlogback.configurationFile=logback.xml"
- cassandra_parms="$cassandra_parms -Dcassandra.logdir=$CASSANDRA_HOME/logs"
+ cassandra_parms="$cassandra_parms -Dcassandra.logdir=/var/opt/rh/sclo-cassandra3/log/cassandra"
cassandra_parms="$cassandra_parms -Dcassandra.storagedir=$cassandra_storagedir"
if [ "x$pidpath" != "x" ]; then
@@ -210,6 +214,20 @@
return $?
}
+wait_for_service_available()
+{
+ host=$(cat $CASSANDRA_CONF/cassandra.yaml | grep listen_address: | cut -d' ' -f2)
+ [ -z "$host" ] && host=$(hostname -I | cut -d' ' -f1)
+ port=$(cat $CASSANDRA_CONF/cassandra.yaml | grep native_transport_port | head -1 | cut -d' ' -f2)
+ if ! nc --send-only < /dev/null $host $port &> /dev/null; then
+ # echo "Waiting for Cassandra to start at $host:$port ..."
+ while ! nc --send-only < /dev/null $host $port &> /dev/null; do
+ sleep 1
+ done
+ # echo "Cassandra is ready."
+ fi
+}
+
# Parse any command line options.
args=`getopt vRfhp:bD:H:E: "$@"`
eval set -- "$args"
@@ -276,6 +289,14 @@
# Start up the service
launch_service "$pidfile" "$foreground" "$properties" "$classname"
-exit $?
+ret=$?
+
+if [ 0$ret -ne "0" ]; then
+ exit $ret
+fi
+
+wait_for_service_available
+
+exit 0
# vi:ai sw=4 ts=4 tw=0 et
diff -Naur cassandra-3.9-orig/bin/cassandra.in.sh cassandra-3.9/bin/cassandra.in.sh
--- cassandra-3.9-orig/bin/cassandra.in.sh 2016-09-26 16:02:27.000000000 +0200
+++ cassandra-3.9/bin/cassandra.in.sh 2017-10-31 18:27:43.335614556 +0100
@@ -15,62 +15,54 @@
# limitations under the License.
if [ "x$CASSANDRA_HOME" = "x" ]; then
- CASSANDRA_HOME="`dirname "$0"`/.."
+ CASSANDRA_HOME="/var/opt/rh/sclo-cassandra3/lib/cassandra"
fi
# The directory where Cassandra's configs live (required)
if [ "x$CASSANDRA_CONF" = "x" ]; then
- CASSANDRA_CONF="$CASSANDRA_HOME/conf"
+ CASSANDRA_CONF="/etc/opt/rh/sclo-cassandra3/cassandra/"
fi
-# This can be the path to a jar file, or a directory containing the
-# compiled classes. NOTE: This isn't needed by the startup script,
-# it's just used here in constructing the classpath.
-cassandra_bin="$CASSANDRA_HOME/build/classes/main"
-cassandra_bin="$cassandra_bin:$CASSANDRA_HOME/build/classes/thrift"
-#cassandra_bin="$CASSANDRA_HOME/build/cassandra.jar"
-
# the default location for commitlogs, sstables, and saved caches
# if not set in cassandra.yaml
-cassandra_storagedir="$CASSANDRA_HOME/data"
-
-# JAVA_HOME can optionally be set here
-#JAVA_HOME=/usr/local/jdk6
+cassandra_storagedir="$CASSANDRA_HOME"
# The java classpath (required)
-CLASSPATH="$CASSANDRA_CONF:$cassandra_bin"
+CLASSPATH="$CASSANDRA_CONF"
-for jar in "$CASSANDRA_HOME"/lib/*.jar; do
- CLASSPATH="$CLASSPATH:$jar"
-done
+DEPS=( cassandra/cassandra-all metrics slf4j/api guava snakeyaml commons-codec jackson/jackson-mapper-asl jackson/jackson-core-asl netty/netty-all lz4 logback/logback-classic logback/logback-core jna sigar high-scale-lib/high-scale-lib antlr3-runtime concurrentlinkedhashmap-lru commons-lang3 json_simple stream-lib caffeine snappy-java jBCrypt jctools metrics-reporter-config jamm netty/netty-transport-native-epoll)
-# JSR223 - collect all JSR223 engines' jars
-for jsr223jar in "$CASSANDRA_HOME"/lib/jsr223/*/*.jar; do
- CLASSPATH="$CLASSPATH:$jsr223jar"
+for dep in "${DEPS[@]}"; do
+ CLASSPATH="$CLASSPATH:`build-classpath $dep`"
done
-# JSR223/JRuby - set ruby lib directory
-if [ -d "$CASSANDRA_HOME"/lib/jsr223/jruby/ruby ] ; then
- export JVM_OPTS="$JVM_OPTS -Djruby.lib=$CASSANDRA_HOME/lib/jsr223/jruby"
-fi
-# JSR223/JRuby - set ruby JNI libraries root directory
-if [ -d "$CASSANDRA_HOME"/lib/jsr223/jruby/jni ] ; then
- export JVM_OPTS="$JVM_OPTS -Djffi.boot.library.path=$CASSANDRA_HOME/lib/jsr223/jruby/jni"
-fi
-# JSR223/Jython - set python.home system property
-if [ -f "$CASSANDRA_HOME"/lib/jsr223/jython/jython.jar ] ; then
- export JVM_OPTS="$JVM_OPTS -Dpython.home=$CASSANDRA_HOME/lib/jsr223/jython"
-fi
-# JSR223/Scala - necessary system property
-if [ -f "$CASSANDRA_HOME"/lib/jsr223/scala/scala-compiler.jar ] ; then
- export JVM_OPTS="$JVM_OPTS -Dscala.usejavacp=true"
-fi
# set JVM javaagent opts to avoid warnings/errors
if [ "$JVM_VENDOR" != "OpenJDK" -o "$JVM_VERSION" \> "1.6.0" ] \
|| [ "$JVM_VERSION" = "1.6.0" -a "$JVM_PATCH_VERSION" -ge 23 ]
then
- JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.3.0.jar"
+ JAVA_AGENT="$JAVA_AGENT -javaagent:`build-classpath jamm`"
fi
-# Added sigar-bin to the java.library.path CASSANDRA-7838
-JAVA_OPTS="$JAVA_OPTS:-Djava.library.path=$CASSANDRA_HOME/lib/sigar-bin"
+java_ver_output=`"${JAVA:-java}" -version 2>&1`
+jvm=`echo "$java_ver_output" | grep -A 1 'version' | awk 'NR==2 {print $1}'`
+case "$jvm" in
+ OpenJDK)
+ # this will be "64-Bit" or "32-Bit"
+ JVM_ARCH=`echo "$java_ver_output" | awk 'NR==3 {print $2}'`
+ ;;
+ "Java(TM)")
+ # this will be "64-Bit" or "32-Bit"
+ JVM_ARCH=`echo "$java_ver_output" | awk 'NR==3 {print $3}'`
+ ;;
+ *)
+ # Help fill in other JVM values
+ JVM_ARCH=unknown
+ ;;
+esac
+
+# Added libsigar.so to the java.library.path CASSANDRA-7838
+if [ "$JVM_ARCH" = "64-Bit" ]; then
+ JVM_OPTS="$JVM_OPTS -Djava.library.path=/opt/rh/sclo-cassandra3/root/usr/lib64/sigar:usr/lib64:/usr/lib64/sigar"
+else
+ JVM_OPTS="$JVM_OPTS -Djava.library.path=/opt/rh/sclo-cassandra3/root/usr/lib/sigar:/usr/lib:/usr/lib/sigar"
+fi
diff -Naur cassandra-3.9-orig/bin/cqlsh.py cassandra-3.9/bin/cqlsh.py
--- cassandra-3.9-orig/bin/cqlsh.py 2017-10-31 18:27:01.349267023 +0100
+++ cassandra-3.9/bin/cqlsh.py 2017-10-31 18:27:43.336614564 +0100
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/usr/bin/python
# -*- mode: Python -*-
# Licensed to the Apache Software Foundation (ASF) under one
@@ -17,18 +17,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-""":"
-# bash code here; finds a suitable python interpreter and execs this file.
-# prefer unqualified "python" if suitable:
-python -c 'import sys; sys.exit(not (0x020700b0 < sys.hexversion < 0x03000000))' 2>/dev/null \
- && exec python "$0" "$@"
-for pyver in 2.7; do
- which python$pyver > /dev/null 2>&1 && exec python$pyver "$0" "$@"
-done
-echo "No appropriate python interpreter found." >&2
-exit 1
-":"""
-
from __future__ import with_statement
import cmd
@@ -237,7 +225,7 @@
(options, arguments) = parser.parse_args(sys.argv[1:], values=optvalues)
# BEGIN history/config definition
-HISTORY_DIR = os.path.expanduser(os.path.join('~', '.cassandra'))
+HISTORY_DIR = os.path.expanduser(os.path.join('~', 'cassandra'))
if hasattr(options, 'cqlshrc'):
CONFIG_FILE = options.cqlshrc
diff -Naur cassandra-3.9-orig/bin/nodetool cassandra-3.9/bin/nodetool
--- cassandra-3.9-orig/bin/nodetool 2016-09-26 16:02:27.000000000 +0200
+++ cassandra-3.9/bin/nodetool 2017-10-31 18:27:43.336614564 +0100
@@ -22,22 +22,28 @@
echo "***************************************************************" >&2
fi
-if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
- # Locations (in order) to use when searching for an include file.
- for include in "`dirname "$0"`/cassandra.in.sh" \
- "$HOME/.cassandra.in.sh" \
- /usr/share/cassandra/cassandra.in.sh \
- /usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh; do
- if [ -r "$include" ]; then
- . "$include"
- break
- fi
- done
-elif [ -r "$CASSANDRA_INCLUDE" ]; then
- . "$CASSANDRA_INCLUDE"
+if [ "x$CASSANDRA_HOME" = "x" ]; then
+ CASSANDRA_HOME=~/cassandra
fi
+# The directory where Cassandra's configs live (required)
+if [ "x$CASSANDRA_CONF" = "x" ]; then
+ CASSANDRA_CONF="/etc/opt/rh/sclo-cassandra3/cassandra"
+fi
+
+# the default location for commitlogs, sstables, and saved caches
+# if not set in cassandra.yaml
+cassandra_storagedir="$CASSANDRA_HOME"
+
+# The java classpath (required)
+CLASSPATH="$CASSANDRA_CONF"
+
+DEPS=( airline cassandra/cassandra-all guava atinject slf4j/api jackson/jackson-mapper-asl jackson/jackson-core-asl logback/logback-classic logback/logback-core commons-lang3 high-scale-lib/high-scale-lib antlr3-runtime metrics concurrentlinkedhashmap-lru snakeyaml commons-codec netty/netty-all)
+
+for dep in "${DEPS[@]}"; do
+ CLASSPATH="$CLASSPATH:`build-classpath $dep`"
+done
+
# Use JAVA_HOME if set, otherwise look for java in PATH
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="$JAVA_HOME/bin/java"
@@ -50,19 +56,23 @@
exit 1
fi
-if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then
- echo "You must set the CASSANDRA_CONF and CLASSPATH vars" >&2
+if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" -o -z "$CASSANDRA_HOME" ]; then
+ echo "You must set the CASSANDRA_CONF, $CASSANDRA_HOME and CLASSPATH vars" >&2
exit 1
fi
# Run cassandra-env.sh to pick up JMX_PORT
+JVM_OPTS_SAVE=$JVM_OPTS
+MAX_HEAP_SIZE_SAVE=$MAX_HEAP_SIZE
if [ -f "$CASSANDRA_CONF/cassandra-env.sh" ]; then
- JVM_OPTS_SAVE=$JVM_OPTS
- MAX_HEAP_SIZE_SAVE=$MAX_HEAP_SIZE
. "$CASSANDRA_CONF/cassandra-env.sh"
- MAX_HEAP_SIZE=$MAX_HEAP_SIZE_SAVE
- JVM_OPTS=$JVM_OPTS_SAVE
+else
+ if [ -f "/opt/rh/sclo-cassandra3/root/usr/share/cassandra/cassandra-env.sh" ]; then
+ . "/opt/rh/sclo-cassandra3/root/usr/share/cassandra/cassandra-env.sh"
+ fi
fi
+MAX_HEAP_SIZE=$MAX_HEAP_SIZE_SAVE
+JVM_OPTS=$JVM_OPTS_SAVE
# JMX Port passed via cmd line args (-p 9999 / --port 9999 / --port=9999)
# should override the value from cassandra-env.sh
diff -Naur cassandra-3.9-orig/conf/cassandra-env.sh cassandra-3.9/conf/cassandra-env.sh
--- cassandra-3.9-orig/conf/cassandra-env.sh 2016-09-26 16:02:27.000000000 +0200
+++ cassandra-3.9/conf/cassandra-env.sh 2017-10-31 18:27:43.336614564 +0100
@@ -88,21 +88,17 @@
# Determine the sort of JVM we'll be running on.
java_ver_output=`"${JAVA:-java}" -version 2>&1`
-jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}' | cut -d\- -f1`
-JVM_VERSION=${jvmver%_*}
-JVM_PATCH_VERSION=${jvmver#*_}
+jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}'`
+tmp=(${jvmver//_/ })
+JVM_VERSION="${tmp[0]}"
+JVM_PATCH_VERSION="${tmp[1]}"
-if [ "$JVM_VERSION" \< "1.8" ] ; then
+if [ "$JVM_VERSION" \< "1.8" ] || [ "$JVM_PATCH_VERSION" -lt 40 ] ; then
echo "Cassandra 3.0 and later require Java 8u40 or later."
exit 1;
fi
-if [ "$JVM_VERSION" \< "1.8" ] && [ "$JVM_PATCH_VERSION" -lt 40 ] ; then
- echo "Cassandra 3.0 and later require Java 8u40 or later."
- exit 1;
-fi
-
-jvm=`echo "$java_ver_output" | grep -A 1 'java version' | awk 'NR==2 {print $1}'`
+jvm=`echo "$java_ver_output" | grep -A 1 'version' | awk 'NR==2 {print $1}'`
case "$jvm" in
OpenJDK)
JVM_VENDOR=OpenJDK
@@ -121,9 +117,6 @@
;;
esac
-#GC log path has to be defined here because it needs to access CASSANDRA_HOME
-JVM_OPTS="$JVM_OPTS -Xloggc:${CASSANDRA_HOME}/logs/gc.log"
-
# Here we create the arguments that will get passed to the jvm when
# starting cassandra.
@@ -207,7 +200,7 @@
JVM_OPTS="$JVM_OPTS -XX:CompileCommandFile=$CASSANDRA_CONF/hotspot_compiler"
# add the jamm javaagent
-JVM_OPTS="$JVM_OPTS -javaagent:$CASSANDRA_HOME/lib/jamm-0.3.0.jar"
+JVM_OPTS="$JVM_OPTS -javaagent:`build-classpath jamm`"
# set jvm HeapDumpPath with CASSANDRA_HEAPDUMP_DIR
if [ "x$CASSANDRA_HEAPDUMP_DIR" != "x" ]; then
@@ -271,7 +264,7 @@
## which delegates to the IAuthenticator configured in cassandra.yaml. See the sample JAAS configuration
## file cassandra-jaas.config
#JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.remote.login.config=CassandraLogin"
-#JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_HOME/conf/cassandra-jaas.config"
+#JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_CONF/cassandra-jaas.config"
## Cassandra also ships with a helper for delegating JMX authz calls to the configured IAuthorizer,
## uncomment this to use it. Requires one of the two authentication options to be enabled
@@ -288,7 +281,11 @@
# Cassandra uses SIGAR to capture OS metrics CASSANDRA-7838
# for SIGAR we have to set the java.library.path
# to the location of the native libraries.
-JVM_OPTS="$JVM_OPTS -Djava.library.path=$CASSANDRA_HOME/lib/sigar-bin"
+if [ "$JVM_ARCH" = "64-Bit" ]; then
+ JVM_OPTS="$JVM_OPTS -Djava.library.path=/opt/rh/sclo-cassandra3/root/usr/lib64/sigar:/usr/lib64:/usr/lib64/sigar"
+else
+ JVM_OPTS="$JVM_OPTS -Djava.library.path=/opt/rh/sclo-cassandra3/root/usr/lib/sigar:/usr/lib:/usr/lib/sigar"
+fi
JVM_OPTS="$JVM_OPTS $MX4J_ADDRESS"
JVM_OPTS="$JVM_OPTS $MX4J_PORT"
diff -Naur cassandra-3.9-orig/conf/jvm.options cassandra-3.9/conf/jvm.options
--- cassandra-3.9-orig/conf/jvm.options 2017-10-31 18:27:01.350267031 +0100
+++ cassandra-3.9/conf/jvm.options 2017-10-31 18:27:43.336614564 +0100
@@ -233,7 +233,7 @@
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintPromotionFailure
#-XX:PrintFLSStatistics=1
-#-Xloggc:/var/log/cassandra/gc.log
+-Xloggc:/var/opt/rh/sclo-cassandra3/log/cassandra/gc.log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=10
-XX:GCLogFileSize=10M
diff -Naur cassandra-3.9-orig/tools/bin/cassandra-stress cassandra-3.9/tools/bin/cassandra-stress
--- cassandra-3.9-orig/tools/bin/cassandra-stress 2016-09-26 16:02:27.000000000 +0200
+++ cassandra-3.9/tools/bin/cassandra-stress 2017-10-31 18:27:43.337614572 +0100
@@ -22,7 +22,8 @@
"$HOME/.cassandra.in.sh" \
/usr/share/cassandra/cassandra.in.sh \
/usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh; do
+ /opt/cassandra/cassandra.in.sh \
+ /opt/rh/sclo-cassandra3/root/usr/share/cassandra/cassandra.in.sh; do
if [ -r "$include" ]; then
. "$include"
break
@@ -49,6 +50,8 @@
exit 1
fi
+CLASSPATH="$CLASSPATH:`build-classpath cassandra-stress`"
+
"$JAVA" -server -ea -cp "$CLASSPATH" $JVM_OPTS \
-Dcassandra.storagedir="$cassandra_storagedir" \
-Dlogback.configurationFile=logback-tools.xml \
diff -Naur cassandra-3.9-orig/tools/bin/cassandra-stressd cassandra-3.9/tools/bin/cassandra-stressd
--- cassandra-3.9-orig/tools/bin/cassandra-stressd 2016-09-26 16:02:27.000000000 +0200
+++ cassandra-3.9/tools/bin/cassandra-stressd 2017-10-31 18:27:43.337614572 +0100
@@ -23,7 +23,8 @@
"$HOME/.cassandra.in.sh" \
/usr/share/cassandra/cassandra.in.sh \
/usr/local/share/cassandra/cassandra.in.sh \
- /opt/cassandra/cassandra.in.sh; do
+ /opt/cassandra/cassandra.in.sh \
+ /opt/rh/sclo-cassandra3/root/usr/share/cassandra/cassandra.in.sh; do
if [ -r "$include" ]; then
. "$include"
break
@@ -50,6 +51,8 @@
exit 1
fi
+CLASSPATH="$CLASSPATH:`build-classpath cassandra-stress`"
+
case "$1" in
start)
echo "Starting $DESC: "