Factor out functions into bin/logstash.lib.sh to keep bin/logstash a bit

cleaner.
This commit is contained in:
Jordan Sissel 2013-12-07 17:18:03 -08:00
parent 43570b6778
commit b43600f823
2 changed files with 88 additions and 46 deletions

View file

@ -15,56 +15,18 @@
# in your environment and this script will download and use
# a release of JRuby for you.
# Defaults you can override with environment variables
LS_HEAP_SIZE="${LS_HEAP_SIZE:=500m}"
basedir=$(cd `dirname $0`/..; pwd)
export RUBYLIB="$basedir/lib"
setup_ruby() {
# Verify ruby works
if ! ruby -e 'puts "HURRAY"' 2> /dev/null | grep -q "HURRAY" ; then
echo "No ruby program found. Cannot start."
exit 1
fi
eval $(ruby -rrbconfig -e 'puts "RUBYVER=#{RbConfig::CONFIG["ruby_version"]}"; puts "RUBY=#{RUBY_ENGINE}"')
RUBYCMD="ruby"
}
setup_vendored_jruby() {
RUBYVER=1.9
RUBY=jruby
# Attempt faster startup; this should be for interactive or "a human is
# watching" execution.
# TODO(sissel): Add 'server' operation with good flags for that situation.
JAVA_OPTS="$JAVA_OPTS -client -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Djruby.compile.mode=OFF"
JAVA_OPTS="$JAVA_OPTS -Xmx500m"
RUBYCMD="java $JAVA_OPTS -jar $basedir/vendor/jar/jruby-complete-*.jar"
}
setup() {
if [ -d "$basedir/.git" -o ! -z "$USE_RUBY" ] ; then
setup_ruby
else
setup_vendored_jruby
fi
export GEM_HOME="$basedir/vendor/bundle/${RUBY}/${RUBYVER}"
export GEM_PATH=
}
. ${basedir}/bin/logstash.lib.sh
setup
case $1 in
deps)
if [ -f "$basedir/logstash.gemspec" ] ; then
program="$basedir/gembag.rb"
set -- "$basedir/logstash.gemspec"
exec $RUBYCMD "$basedir/gembag.rb" "$@"
else
echo "Cannot install dependencies; missing logstash.gemspec. This 'deps' command only works from a logstash git clone."
fi
;;
-*)
deps) install_deps ;;
-*)
# is the first argument a flag? If so, assume 'agent'
program="$basedir/lib/logstash/runner.rb"
exec $RUBYCMD "$program" agent "$@"
;;
@ -73,4 +35,3 @@ case $1 in
exec $RUBYCMD "$program" "$@"
;;
esac

81
bin/logstash.lib.sh Normal file
View file

@ -0,0 +1,81 @@
basedir=$(cd `dirname $0`/..; pwd)
setup_ruby() {
# Verify ruby works
if ! ruby -e 'puts "HURRAY"' 2> /dev/null | grep -q "HURRAY" ; then
echo "No ruby program found. Cannot start."
exit 1
fi
eval $(ruby -rrbconfig -e 'puts "RUBYVER=#{RbConfig::CONFIG["ruby_version"]}"; puts "RUBY=#{RUBY_ENGINE}"')
RUBYCMD="ruby"
}
setup_java() {
if [ -z "$JAVA_HOME/bin/java" ] ; then
JAVA="$JAVA_HOME/bin/java"
else
JAVA=$(which java)
fi
if [ ! -x "$JAVA" ] ; then
echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME."
exit 1
fi
JAVA_OPTS="$JAVA_OPTS -Xmx${LS_HEAP_SIZE}"
JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC"
JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
# Reduce per-thread stack size
JAVA_OPTS="$JAVA_OPTS -Xss256k"
JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=75"
JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
if [ ! -z "$LS_USE_GC_LOGGING" ] ; then
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintClassHistogram"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintTenuringDistribution"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCApplicationStoppedTime"
JAVA_OPTS="$JAVA_OPTS -Xloggc:./logstash-gc.log"
echo "Writing garbage collection logs to ./logstash-gc.log"
fi
}
setup_vendored_jruby() {
RUBYVER=1.9
RUBY=jruby
setup_java
RUBYCMD="$JAVA $JAVA_OPTS -jar $basedir/vendor/jar/jruby-complete-*.jar"
}
setup() {
if [ -z "$USE_JRUBY" -a \( -d "$basedir/.git" -o ! -z "$USE_RUBY" \) ] ; then
setup_ruby
if [ "$RUBY" = "jruby" ] ; then
setup_java
export JAVA_OPTS
fi
else
setup_vendored_jruby
fi
export GEM_HOME="$basedir/vendor/bundle/${RUBY}/${RUBYVER}"
export GEM_PATH=
export RUBYLIB="$basedir/lib"
}
install_deps() {
if [ -f "$basedir/logstash.gemspec" ] ; then
program="$basedir/gembag.rb"
set -- "$basedir/logstash.gemspec"
exec $RUBYCMD "$basedir/gembag.rb" "$@"
else
echo "Cannot install dependencies; missing logstash.gemspec. This 'deps' command only works from a logstash git clone."
fi
}