[ https://issues.apache.org/jira/browse/KAFKA-1109?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Viktor Kolodrevskiy updated KAFKA-1109: --------------------------------------- Description: kafka-run-class.sh contains GC log code: # GC options GC_FILE_SUFFIX='-gc.log' GC_LOG_FILE_NAME='' if [ "$1" = "daemon" ] && [ -z "$KAFKA_GC_LOG_OPTS"] ; then shift GC_LOG_FILE_NAME=$1$GC_FILE_SUFFIX shift KAFKA_GC_LOG_OPTS="-Xloggc:$LOG_DIR/$GC_LOG_FILE_NAME -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps " fi So when in my scripts I start kafka and want to override KAFKA_GC_LOG_OPTS by exporting new values I get: Exception in thread "main" java.lang.NoClassDefFoundError: daemon Caused by: java.lang.ClassNotFoundException: daemon That's because shift is not done when KAFKA_GC_LOG_OPTS is set and "daemon" is passed as main class. I suggest to replace it with this code: # GC options GC_FILE_SUFFIX='-gc.log' GC_LOG_FILE_NAME='' if [ "$1" = "daemon" ] && [ -z "$KAFKA_GC_LOG_OPTS" ] ; then shift GC_LOG_FILE_NAME=$1$GC_FILE_SUFFIX shift KAFKA_GC_LOG_OPTS="-Xloggc:$LOG_DIR/$GC_LOG_FILE_NAME -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps " else if [ "$1" = "daemon" ] && [ "$KAFKA_GC_LOG_OPTS" != "" ] ; then shift 2 fi fi was: kafka-run-class.sh contains GC log code: # GC options GC_FILE_SUFFIX='-gc.log' GC_LOG_FILE_NAME='' if [ "$1" = "daemon" ] && [ -z "$KAFKA_GC_LOG_OPTS"] ; then shift GC_LOG_FILE_NAME=$1$GC_FILE_SUFFIX shift KAFKA_GC_LOG_OPTS="-Xloggc:$LOG_DIR/$GC_LOG_FILE_NAME -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps " fi So when in my scripts I start kafka and want to override KAFKA_GC_LOG_OPTS by exporting new values I get: Exception in thread "main" java.lang.NoClassDefFoundError: daemon Caused by: java.lang.ClassNotFoundException: daemon That's because shift is not done when KAFKA_GC_LOG_OPTS is set and "daemon" is passed as main class. I suggest to replace it with this code: # GC options GC_FILE_SUFFIX='-gc.log' GC_LOG_FILE_NAME='' if [ "$1" = "daemon" ] && [ -z "$KAFKA_GC_LOG_OPTS" ] ; then shift GC_LOG_FILE_NAME=$1$GC_FILE_SUFFIX shift KAFKA_GC_LOG_OPTS="-Xloggc:$LOG_DIR/$GC_LOG_FILE_NAME -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps " else # blackarrow fix for https://issues.apache.org/jira/browse/KAFKA-1109 if [ "$1" = "daemon" ] && [ "$KAFKA_GC_LOG_OPTS" != "" ] ; then shift 2 fi fi > Need to fix GC log configuration code, not able to override KAFKA_GC_LOG_OPTS > ----------------------------------------------------------------------------- > > Key: KAFKA-1109 > URL: https://issues.apache.org/jira/browse/KAFKA-1109 > Project: Kafka > Issue Type: Bug > Affects Versions: 0.8 > Environment: *nix > Reporter: Viktor Kolodrevskiy > > kafka-run-class.sh contains GC log code: > # GC options > GC_FILE_SUFFIX='-gc.log' > GC_LOG_FILE_NAME='' > if [ "$1" = "daemon" ] && [ -z "$KAFKA_GC_LOG_OPTS"] ; then > shift > GC_LOG_FILE_NAME=$1$GC_FILE_SUFFIX > shift > KAFKA_GC_LOG_OPTS="-Xloggc:$LOG_DIR/$GC_LOG_FILE_NAME -verbose:gc > -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps " > fi > So when in my scripts I start kafka and want to override KAFKA_GC_LOG_OPTS by > exporting new values I get: > Exception in thread "main" java.lang.NoClassDefFoundError: daemon > Caused by: java.lang.ClassNotFoundException: daemon > That's because shift is not done when KAFKA_GC_LOG_OPTS is set and "daemon" > is passed as main class. > I suggest to replace it with this code: > # GC options > GC_FILE_SUFFIX='-gc.log' > GC_LOG_FILE_NAME='' > if [ "$1" = "daemon" ] && [ -z "$KAFKA_GC_LOG_OPTS" ] ; then > shift > GC_LOG_FILE_NAME=$1$GC_FILE_SUFFIX > shift > KAFKA_GC_LOG_OPTS="-Xloggc:$LOG_DIR/$GC_LOG_FILE_NAME -verbose:gc > -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps " > else > if [ "$1" = "daemon" ] && [ "$KAFKA_GC_LOG_OPTS" != "" ] ; then > shift 2 > fi > fi -- This message was sent by Atlassian JIRA (v6.1#6144)