Cassandra 0.7の「CassandraDaemon」クラスを読む。



thriftのデータオブジェクト「class Column」等を眺めようとしたのだが、
具体的な処理・構造が分かりにくかったので、とりあえずCassandraの起動クラスからクラス図を
作っていくことにした。
 

 

対象パッケージに関して

「org.apache.cassandra.thrift」ぺっケージのクラスを対象としてとりあえず読んでいくことにしました。
 

対象パッケージに関して

cassandra/bin/cassandraのスクリプトをみると「org.apache.cassandra.thrift.CassandraDaemon」
で起動が始まっている。

とりあえず、このクラスを起点に確認していくことにした。
 

実装に関して

「CassandraDaemon.java」は、1つのクラスと1つのinterfaceを実装している。

No クラス名 概要
1 org.apache.cassandra.service.AbstractCassandraDaemon 認証用?
2 org.apache.cassandra.service.CassandraDaemon commons daemonを利用しているようだ


ところどころ、「this is a hook for JSVC」とコメントがあるので、JSVC(commons daemon
で必要なメソッドがある模様。
 
「public interface CassandraDaemon」では、シンプルなinterfaceになっており
importクラスが「java.io.IOException」の為、パッケージ依存があまりない形になっている。
 
「public abstract class AbstractCassandraDaemon」も「protected void setup()」に
処理が実装されていたが、他はシンプルな内容だった。*1
 
「public class CassandraDaemon」では、「org.apache.thrift」系のクラスを利用して
いろいろ処理をしていた。
「org.apache.thrift.server.TServer」クラスが、核のようで、interface 「java.util.concurrent.ExecutorService」
を渡していた。
 
実際のサーバ処理などは、下記のクラスのようでした。

// now we start listening for clients
final CassandraServer cassandraServer = new CassandraServer();
Cassandra.Processor processor = new Cassandra.Processor(cassandraServer);

もう少しいろいろ見ていきたいと思う。
 


*1: setup()は、start()から呼ばれる