blob: 9a835ee85f0423aef88ed3dfab96a7bc4a760483 [file] [log] [blame]
# 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.
does_jvm_support_ti(){
version=$( java -version 2>&1 | awk -F '"' '/version/ {print $2}')
if [[ "$version" < "1.5" ]]; then
return 1
else
return 0
fi
}
set_debug_param(){
OIFS=$IFS
IFS='='
pair=($1)
case "${pair[0]}" in
recursive)
export HIVE_DEBUG_RECURSIVE="${pair[1]}"
;;
port)
port="address=${pair[1]}"
;;
mainSuspend)
main_suspend="suspend=${pair[1]}"
;;
childSuspend)
child_suspend="suspend=${pair[1]}"
;;
swapSuspend)
tmp=$child_suspend
child_suspend=$main_suspend
main_suspend=$tmp
;;
*)
;;
esac
IFS=$OIFS;
}
parse_debug(){
IFS=':'
read -ra params <<< "$1"
IFS=','
for param in ${params[1]}; do
set_debug_param "$param"
done
unset IFS
}
set_debug_defaults(){
export HIVE_DEBUG_RECURSIVE="y"
port="address=8000"
main_suspend="suspend=y"
child_suspend="suspend=n"
}
get_debug_params(){
set_debug_defaults
parse_debug $1
if does_jvm_support_ti; then
export HIVE_MAIN_CLIENT_DEBUG_OPTS=" -agentlib:jdwp=transport=dt_socket,server=y,$port,$main_suspend"
export HIVE_CHILD_CLIENT_DEBUG_OPTS=" -agentlib:jdwp=transport=dt_socket,server=y,$child_suspend"
else
export HIVE_MAIN_CLIENT_DEBUG_OPTS=" -Xdebug -Xrunjdwp:transport=dt_socket,server=y,$port,$main_suspend"
export HIVE_CHILD_CLIENT_DEBUG_OPTS=" -Xdebug -Xrunjdwp:transport=dt_socket,server=y,$child_suspend"
fi
}
debug_help(){
echo
echo "Allows to debug Hive by connecting to it via JDI API"
echo
echo "Usage: hive --debug[:comma-separated parameters list]"
echo
echo "Parameters:"
echo
echo "recursive=<y|n> Should child JVMs also be started in debug mode. Default: y"
echo "port=<port_number> Port on which main JVM listens for debug connection. Default: 8000"
echo "mainSuspend=<y|n> Should main JVM wait with execution for the debugger to connect. Default: y"
echo "childSuspend=<y|n> Should child JVMs wait with execution for the debugger to connect. Default: n"
echo "swapSuspend Swaps suspend options between main and child JVMs"
echo
echo "Environment:"
echo
echo "HADOOP_HOME: [$HADOOP_HOME]"
echo "HIVE_HOME : [$HIVE_HOME]"
echo "HIVE_CONF : [$HIVE_CONF_DIR]"
echo "SPARK_HOME : [$SPARK_HOME]"
echo "TEZ_CONF : [$TEZ_CONF_DIR]"
echo "HBASE_HOME : [$HBASE_HOME]"
echo "HBASE_CONF : [$HBASE_CONF_DIR]"
echo
}