-
Notifications
You must be signed in to change notification settings - Fork 907
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Issue:2840 Create bookie shellscript for gradle (#2841)
Co-authored-by: Prashant Kumar <[email protected]>
- Loading branch information
1 parent
031d168
commit 919fdd3
Showing
3 changed files
with
540 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,182 @@ | ||
#!/usr/bin/env bash | ||
# | ||
#/** | ||
# * Licensed to the Apache Software Foundation (ASF) under one | ||
# * or more contributor license agreements. See the NOTICE file | ||
# * distributed with this work for additional information | ||
# * regarding copyright ownership. The ASF licenses this file | ||
# * to you under the Apache License, Version 2.0 (the | ||
# * "License"); you may not use this file except in compliance | ||
# * with the License. You may obtain a copy of the License at | ||
# * | ||
# * http://www.apache.org/licenses/LICENSE-2.0 | ||
# * | ||
# * Unless required by applicable law or agreed to in writing, software | ||
# * distributed under the License is distributed on an "AS IS" BASIS, | ||
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# * See the License for the specific language governing permissions and | ||
# * limitations under the License. | ||
# */ | ||
|
||
set -e | ||
|
||
BINDIR=`dirname "$0"` | ||
BK_HOME=`cd ${BINDIR}/..;pwd` | ||
|
||
source ${BK_HOME}/bin/common_gradle.sh | ||
|
||
# default variables | ||
DEFAULT_CONF=${BK_HOME}/conf/bk_server.conf | ||
DEFAULT_ZK_CONF=${BK_HOME}/conf/zookeeper.conf | ||
|
||
if [ -z "$BOOKIE_CONF" ]; then | ||
BOOKIE_CONF_TO_CHECK=${DEFAULT_CONF} | ||
else | ||
BOOKIE_CONF_TO_CHECK=${BOOKIE_CONF} | ||
fi | ||
|
||
FIND_TABLE_SERVICE_RESULT=$(find_table_service ${BOOKIE_CONF_TO_CHECK} $1) | ||
|
||
if [ "x${FIND_TABLE_SERVICE_RESULT}" == "xtrue" ]; then | ||
BOOKIE_MODULE_PATH=stream/server | ||
BOOKIE_MODULE_NAME=${TABLE_SERVICE_MODULE_NAME} | ||
elif [ "x${FIND_TABLE_SERVICE_RESULT}" == "xfalse" ]; then | ||
BOOKIE_MODULE_PATH=bookkeeper-server | ||
BOOKIE_MODULE_NAME=${BOOKIE_SERVER_MODULE_NAME} | ||
else | ||
echo ${FIND_TABLE_SERVICE_RESULT} | ||
exit 1 | ||
fi | ||
|
||
# find the module jar | ||
BOOKIE_JAR=$(find_module_jar ${BOOKIE_MODULE_PATH} ${BOOKIE_MODULE_NAME}) | ||
|
||
# set up the classpath | ||
BOOKIE_CLASSPATH=$(set_module_classpath ${BOOKIE_MODULE_PATH}) | ||
|
||
bookkeeper_help() { | ||
cat <<EOF | ||
Usage: bookkeeper <command> | ||
where command is one of: | ||
[service commands] | ||
bookie Run a bookie server | ||
autorecovery Run AutoRecovery service daemon | ||
zookeeper Run zookeeper server | ||
[development commands] | ||
localbookie <n> Run a test ensemble of <n> bookies locally | ||
standalone Run a standalone cluster (with all service components) locally | ||
[tooling commands] | ||
upgrade Upgrade bookie filesystem | ||
shell Run shell for admin commands | ||
[other commands] | ||
help This help message | ||
or command is the full name of a class with a defined main() method. | ||
Environment variables: | ||
BOOKIE_LOG_CONF Log4j configuration file (default ${DEFAULT_LOG_CONF}) | ||
BOOKIE_CONF Configuration file (default: ${DEFAULT_CONF}) | ||
BOOKIE_ZK_CONF Configuration file for zookeeper (default: $DEFAULT_ZK_CONF) | ||
BOOKIE_EXTRA_OPTS Extra options to be passed to the jvm | ||
BOOKIE_EXTRA_CLASSPATH Add extra paths to the bookkeeper classpath | ||
ENTRY_FORMATTER_CLASS Entry formatter class to format entries. | ||
BOOKIE_PID_DIR Folder where the Bookie server PID file should be stored | ||
BOOKIE_STOP_TIMEOUT Wait time before forcefully kill the Bookie server instance, if the stop is not successful | ||
These variable can also be set in conf/bkenv.sh | ||
EOF | ||
} | ||
|
||
# if no args specified, show usage | ||
if [ $# = 0 ]; then | ||
bookkeeper_help; | ||
exit 1; | ||
fi | ||
|
||
# get arguments | ||
COMMAND=$1 | ||
shift | ||
|
||
LOCALBOOKIES_CONFIG_DIR="${LOCALBOOKIES_CONFIG_DIR:-/tmp/localbookies-config}" | ||
if [ ${COMMAND} == "shell" ]; then | ||
DEFAULT_LOG_CONF=${BK_HOME}/conf/log4j.shell.properties | ||
if [[ $1 == "-localbookie" ]]; then | ||
if [[ $2 == *:* ]]; | ||
then | ||
BOOKIE_CONF=${LOCALBOOKIES_CONFIG_DIR}/$2.conf | ||
shift 2 | ||
else | ||
BOOKIE_CONF=${LOCALBOOKIES_CONFIG_DIR}/baseconf.conf | ||
shift | ||
fi | ||
fi | ||
fi | ||
|
||
if [ -z "$BOOKIE_ZK_CONF" ]; then | ||
BOOKIE_ZK_CONF=$DEFAULT_ZK_CONF | ||
fi | ||
|
||
if [ -z "$BOOKIE_CONF" ]; then | ||
BOOKIE_CONF=${DEFAULT_CONF} | ||
fi | ||
|
||
# Configure logging | ||
if [ -z "$BOOKIE_LOG_CONF" ]; then | ||
BOOKIE_LOG_CONF=${DEFAULT_LOG_CONF} | ||
fi | ||
BOOKIE_LOG_DIR=${BOOKIE_LOG_DIR:-"$BK_HOME/logs"} | ||
BOOKIE_LOG_FILE=${BOOKIE_LOG_FILE:-"bookkeeper-server.log"} | ||
BOOKIE_ROOT_LOGGER=${BOOKIE_ROOT_LOGGER:-"INFO,CONSOLE"} | ||
|
||
# Configure the classpath | ||
BOOKIE_CLASSPATH="$BOOKIE_JAR:$BOOKIE_CLASSPATH:$BOOKIE_EXTRA_CLASSPATH" | ||
BOOKIE_CLASSPATH="`dirname $BOOKIE_LOG_CONF`:$BOOKIE_CLASSPATH" | ||
|
||
# Build the OPTS | ||
BOOKIE_OPTS=$(build_bookie_opts) | ||
GC_OPTS=$(build_bookie_jvm_opts ${BOOKIE_LOG_DIR} "gc_%p.log") | ||
NETTY_OPTS=$(build_netty_opts) | ||
LOGGING_OPTS=$(build_logging_opts ${BOOKIE_LOG_CONF} ${BOOKIE_LOG_DIR} ${BOOKIE_LOG_FILE} ${BOOKIE_ROOT_LOGGER}) | ||
|
||
BOOKIE_EXTRA_OPTS="${BOOKIE_EXTRA_OPTS} -Dorg.bouncycastle.fips.approved_only=true" | ||
OPTS="${OPTS} -cp ${BOOKIE_CLASSPATH} ${BOOKIE_OPTS} ${GC_OPTS} ${NETTY_OPTS} ${LOGGING_OPTS} ${BOOKIE_EXTRA_OPTS}" | ||
|
||
# Create log dir if it doesn't exist | ||
if [ ! -d ${BOOKIE_LOG_DIR} ]; then | ||
mkdir ${BOOKIE_LOG_DIR} | ||
fi | ||
|
||
#Change to BK_HOME to support relative paths | ||
cd "$BK_HOME" | ||
if [ ${COMMAND} == "bookie" ]; then | ||
exec "${JAVA}" ${OPTS} ${JMX_ARGS} org.apache.bookkeeper.server.Main --conf ${BOOKIE_CONF} $@ | ||
elif [ ${COMMAND} == "autorecovery" ]; then | ||
exec "${JAVA}" ${OPTS} ${JMX_ARGS} org.apache.bookkeeper.replication.AutoRecoveryMain --conf ${BOOKIE_CONF} $@ | ||
elif [ ${COMMAND} == "localbookie" ]; then | ||
NUMBER=$1 | ||
shift | ||
exec "${JAVA}" ${OPTS} ${JMX_ARGS} -Dzookeeper.4lw.commands.whitelist='*' org.apache.bookkeeper.util.LocalBookKeeper ${NUMBER} ${BOOKIE_CONF} $@ | ||
elif [ ${COMMAND} == "standalone" ]; then | ||
exec "${JAVA}" ${OPTS} ${JMX_ARGS} -Dzookeeper.4lw.commands.whitelist='*' org.apache.bookkeeper.stream.cluster.StandaloneStarter --conf ${BK_HOME}/conf/standalone.conf $@ | ||
elif [ ${COMMAND} == "upgrade" ]; then | ||
exec "${JAVA}" ${OPTS} org.apache.bookkeeper.bookie.FileSystemUpgrade --conf ${BOOKIE_CONF} $@ | ||
elif [ $COMMAND == "zookeeper" ]; then | ||
BOOKIE_LOG_FILE=${BOOKIE_LOG_FILE:-"zookeeper.log"} | ||
exec "${JAVA}" $OPTS -Dbookkeeper.log.file=$BOOKIE_LOG_FILE org.apache.zookeeper.server.quorum.QuorumPeerMain $BOOKIE_ZK_CONF $@ | ||
elif [ ${COMMAND} == "shell" ]; then | ||
ENTRY_FORMATTER_ARG="-DentryFormatterClass=${ENTRY_FORMATTER_CLASS:-org.apache.bookkeeper.util.StringEntryFormatter}" | ||
exec "${JAVA}" ${OPTS} ${ENTRY_FORMATTER_ARG} org.apache.bookkeeper.bookie.BookieShell -conf ${BOOKIE_CONF} $@ | ||
elif [ ${COMMAND} == "help" ]; then | ||
bookkeeper_help; | ||
else | ||
exec "${JAVA}" ${OPTS} ${COMMAND} $@ | ||
fi | ||
|
Oops, something went wrong.