[
https://issues.apache.org/jira/browse/KAFKA-1566?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14267394#comment-14267394
]
Yongkun Wang commented on KAFKA-1566:
-------------------------------------
This is going to be very convenient to remind user to set some important env
variables such as JAVA_HOME.
Setting JAVA_HOME is quite necessary in our case; our default shell is not bash
and there is an old version of java installed in the default shell. I have to
set JAVA_HOME in bin/kafka-run-class.sh, otherwise I got NoClassDefFoundError
as below.
Setting JAVA_HOME in bin/kafka-run-class.sh is not straightforward for other
developers to maintain. So adding conf/kafka-env.sh would be very nice.
{code}
$ bin/kafka-topics.sh --zookeeper zookeeperhost --list
Exception in thread "main" java.lang.NoClassDefFoundError:
scala.collection.mutable.WrappedArray
at java.lang.Class.initializeClass(libgcj.so.10)
at java.lang.Class.initializeClass(libgcj.so.10)
at scala.collection.mutable.WrappedArray$.<init>(WrappedArray.scala:91)
at scala.collection.mutable.WrappedArray$.<clinit>(WrappedArray.scala)
at java.lang.Class.initializeClass(libgcj.so.10)
at scala.LowPriorityImplicits.genericWrapArray(LowPriorityImplicits.scala:65)
at scala.collection.immutable.Set$Set4.$plus(Set.scala:127)
at scala.collection.immutable.Set$Set4.$plus(Set.scala:121)
at scala.collection.mutable.SetBuilder.$plus$eq(SetBuilder.scala:24)
at scala.collection.mutable.SetBuilder.$plus$eq(SetBuilder.scala:22)
at
scala.collection.generic.Growable$$anonfun$$plus$plus$eq$1.apply(Growable.scala:48)
at
scala.collection.generic.Growable$$anonfun$$plus$plus$eq$1.apply(Growable.scala:48)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
at scala.collection.mutable.SetBuilder.$plus$plus$eq(SetBuilder.scala:22)
at scala.collection.TraversableLike$class.to(TraversableLike.scala:629)
at scala.collection.AbstractTraversable.to(Traversable.scala:105)
at scala.collection.TraversableOnce$class.toSet(TraversableOnce.scala:267)
at scala.collection.AbstractTraversable.toSet(Traversable.scala:105)
at scala.runtime.ScalaRunTime$.<init>(ScalaRunTime.scala:50)
at scala.runtime.ScalaRunTime$.<clinit>(ScalaRunTime.scala)
at java.lang.Class.initializeClass(libgcj.so.10)
at
scala.collection.mutable.HashTable$HashUtils$class.elemHashCode(HashTable.scala:398)
at scala.collection.mutable.HashMap.elemHashCode(HashMap.scala:39)
at
scala.collection.mutable.HashTable$class.findOrAddEntry(HashTable.scala:161)
at scala.collection.mutable.HashMap.findOrAddEntry(HashMap.scala:39)
at scala.collection.mutable.HashMap.put(HashMap.scala:75)
at scala.collection.mutable.HashMap.update(HashMap.scala:80)
at scala.sys.SystemProperties$.addHelp(SystemProperties.scala:64)
at scala.sys.SystemProperties$.bool(SystemProperties.scala:68)
at
scala.sys.SystemProperties$.noTraceSupression$lzycompute(SystemProperties.scala:80)
at scala.sys.SystemProperties$.noTraceSupression(SystemProperties.scala:80)
at scala.util.control.NoStackTrace$.<init>(NoStackTrace.scala:31)
at scala.util.control.NoStackTrace$.<clinit>(NoStackTrace.scala)
at java.lang.Class.initializeClass(libgcj.so.10)
at
scala.util.control.NoStackTrace$class.fillInStackTrace(NoStackTrace.scala:22)
at scala.util.control.BreakControl.fillInStackTrace(Breaks.scala:93)
at java.lang.Throwable.<init>(libgcj.so.10)
at java.lang.Throwable.<init>(libgcj.so.10)
at scala.util.control.BreakControl.<init>(Breaks.scala:93)
at scala.util.control.Breaks.<init>(Breaks.scala:28)
at scala.collection.Traversable$.<init>(Traversable.scala:96)
at scala.collection.Traversable$.<clinit>(Traversable.scala)
at java.lang.Class.initializeClass(libgcj.so.10)
at scala.package$.<init>(package.scala:46)
at scala.package$.<clinit>(package.scala)
at java.lang.Class.initializeClass(libgcj.so.10)
at scala.Predef$.<init>(Predef.scala:90)
at scala.Predef$.<clinit>(Predef.scala)
at java.lang.Class.initializeClass(libgcj.so.10)
at
kafka.admin.TopicCommand$TopicCommandOptions.<init>(TopicCommand.scala:258)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:34)
at kafka.admin.TopicCommand.main(TopicCommand.scala)
Caused by: java.lang.ClassFormatError:
scala.collection.parallel.mutable.ParArray (erroneous type descriptor)
at java.lang.VMClassLoader.defineClass(libgcj.so.10)
at java.lang.ClassLoader.defineClass(libgcj.so.10)
at java.security.SecureClassLoader.defineClass(libgcj.so.10)
at java.net.URLClassLoader.findClass(libgcj.so.10)
at java.lang.ClassLoader.loadClass(libgcj.so.10)
at java.lang.ClassLoader.loadClass(libgcj.so.10)
at java.lang.Class.initializeClass(libgcj.so.10)
...52 more
{code}
> Kafka environment configuration (kafka-env.sh)
> ----------------------------------------------
>
> Key: KAFKA-1566
> URL: https://issues.apache.org/jira/browse/KAFKA-1566
> Project: Kafka
> Issue Type: Improvement
> Components: tools
> Reporter: Cosmin Lehene
> Assignee: Cosmin Lehene
> Labels: newbie
> Fix For: 0.8.3
>
>
> It would be useful (especially for automated deployments) to have an
> environment configuration file that could be sourced from the launcher files
> (e.g. kafka-run-server.sh).
> This is how this could look like kafka-env.sh
> {code}
> export KAFKA_JVM_PERFORMANCE_OPTS="-XX:+UseCompressedOops
> -XX:+DisableExplicitGC -Djava.awt.headless=true \ -XX:+UseG1GC
> -XX:PermSize=48m -XX:MaxPermSize=48m -XX:MaxGCPauseMillis=20
> -XX:InitiatingHeapOccupancyPercent=35' %>"
> export KAFKA_HEAP_OPTS="'-Xmx1G -Xms1G' %>"
> export KAFKA_LOG4J_OPTS="-Dkafka.logs.dir=/var/log/kafka"
> {code}
> kafka-server-start.sh
> {code}
> ...
> source $base_dir/config/kafka-env.sh
> ...
> {code}
> This approach is consistent with Hadoop and HBase. However the idea here is
> to be able to set these values in a single place without having to edit
> startup scripts.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)