[ 
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)

Reply via email to