Differences between revisions 13 and 14
Revision 13 as of 2012-07-19 02:34:17
Size: 2725
Editor: DaveBrosius
Comment:
Revision 14 as of 2013-10-09 22:07:34
Size: 2709
Editor: DaveBrosius
Comment:
Deletions are marked like this. Additions are marked like this.
Line 13: Line 13:
   2. src/avro

How to debug Cassandra in Eclipse

Create Project in Eclipse

  1. Create a new Java Project in Eclipse
  2. Add the following directories as source folders
    1. src/gen-java
    2. interface/thrift/gen-java
    3. src/resources
    4. src/java
  3. Set the target directory for classes to build/classes
  4. Add the following jars to the eclipse project
    1. All jars in lib
    2. build/lib/jars/hadoop-core-*.jar, build/lib/jars/jna-*.jar, build/lib/jars/commons-logging-*.jar, build/lib/jars/pig-*.jar, build/lib/apache-rat-*.jar
  5. Create a Debug Configuration
    1. Use org.apache.cassandra.thrift.CassandraDaemon as the main class

    2. Add the directory ./conf to your debugging user class path (that will be the location of your log4j.properties file)
    3. Put the following parameters in the VM args section

          -ea -javaagent:${project_loc}/lib/jamm-0.2.5.jar 
          -XX:+UseThreadPriorities 
          -XX:ThreadPriorityPolicy=42 
          -Xms752M 
          -Xmx752M 
          -Xmn188M 
          -XX:+HeapDumpOnOutOfMemoryError 
          -Xss128k 
          -XX:+UseParNewGC 
          -XX:+UseConcMarkSweepGC 
          -XX:+CMSParallelRemarkEnabled 
          -XX:SurvivorRatio=8 
          -XX:MaxTenuringThreshold=1 
          -XX:CMSInitiatingOccupancyFraction=75 
          -XX:+UseCMSInitiatingOccupancyOnly 
          -Djava.net.preferIPv4Stack=true 
          -Dcom.sun.management.jmxremote.port=7199 
          -Dcom.sun.management.jmxremote.ssl=false 
          -Dcom.sun.management.jmxremote.authenticate=false 
          -Dlog4j.configuration=log4j-server.properties 
          -Dlog4j.defaultInitOverride=true

On Linux systems, by default, Cassandra writes various pieces of data to directories that are not owned by the normal user. This will cause failures when debugging in eclipse. To address this you can chown the directories, or if you don't have rights, you should adjust various settings in the cassandra.yaml, cassandra-env.sh and log4j-server.properties files inside the conf directory to account for this. For debugging purposes you probably want to place these in some directory(s) under your home directory.

  1. The entries in the cassandra.yaml file that are effected are:
    1. data_file_directories
    2. commitlog_directory
    3. saved_caches_directory
  2. The entries in the cassandra-env.sh file that are effected are:
    1. JVM_OPTS="$JVM_OPTS -Xloggc
  3. The entries in the log4j-server.properties file that are effected are:
    1. log4j.appender.R.File

Note: You should always build from the command line

HowToDebug (last edited 2014-06-18 02:32:39 by DaveBrosius)