카산드라의 동작을 상세히 알아보기 위해 디버깅을 해보기로 했다.

http://wiki.apache.org/cassandra/HowToDebug

위 사이트에 카산드라를 디버깅하는 방법이 나와있지만 너무 간단히 나와있기 때문에 조금 자세히 설명해 보기로 하겠당.


1. 다운로드

이클립스를 사용하여 디버깅 할 것이므로 이클립스와 디버깅할 카산드라의 소스를 다운받아야 한다.

http://eclipse.org

http://cassandra.apache.org/

 

2. 이클립스에서 자바 프로젝트를 만든다.

3. 소스의 내용을 프로젝트 안으로 전부 카피한다.

4. build.xml 파일을 ant로 build한다.

5. 여기서부터는 위키의 내용과 비슷하다.
    프로젝트의 properties로 가서 기존의 src폴더를 지우고 위키에 나와 있는 대로 수정한다.

1) src/gen-java
2) interface/thrift/gen-java
3) src/resources
4) src/java
5)
src/avro

6. build/classes를 라이브러리에 추가한다.

7. 다음 jar파일들을 라이브러리에 추가한다.

lib/*.jar
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 

8. run/debug configuration을 만들어준다.

1) src/java에 있는 org.apache.cassandra.thrift.cassandradaemon 클래스를 메인 클래스로 지정한다.
2) classpath에 conf 폴더를 추가한다(advanced를 누르면 폴더를 추가할 수 있다.)
3) 다운받은 소스 중 bin/cassandra.bat을 열어 JAVA options 부분(set JAVA_OPTS로 시작되는 부분)아래부터 classpath 부분 전까지를 복사해서 VM arguments에 넣어준다.

-ea
 -javaagent:(workspace의 위치)/workspace/cassandra/lib/jamm-0.2.5.jar
 -Xms1G
 -Xmx1G
 -XX:+HeapDumpOnOutOfMemoryError
 -XX:+UseParNewGC
 -XX:+UseConcMarkSweepGC
 -XX:+CMSParallelRemarkEnabled
 -XX:SurvivorRatio=8
 -XX:MaxTenuringThreshold=1
 -XX:CMSInitiatingOccupancyFraction=75
 -XX:+UseCMSInitiatingOccupancyOnly
 -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


중간중간에 F5를 눌러서 프로젝트를 새로고침하는 것을 잊지 말고 여기까지 하면 기본적인 준비는 끝이 났다. 소스코드에서 에러도 뜨지 않을 것이다.

만약 다음과 같은 오류가 발생한다면



windows -> preferences -> Java -> Compile -> Errors/Warnings -> Deprecated and restricted API에서 Forbidden reference를 Error에서 warning으로 바꿔주면 된다.



자, 디버깅 해보자!

+ Recent posts