Cassandraのロック機能
- ReentrantReadWriteLockクラスを使ったロック
- 読み込みロックは複数のスレッドが取得できる
- 書き込みロックは1つのスレッドのみが取得できる
- 読み込みロックの取得中は、他のスレッドは書き込みロックを取得できない
- 書き込みロックの取得中は、他のスレッドは読み込みロックを取得できない
- 読み込みロック
- commitLog,MemTableにRowMutationを書き込む処理
- Memtable上の値の読み込み処理(SSTableの読み込みはlock free)
- 書き込みロック
- 古いMemTableの swap処理
- ノードTokenの追加や更新管理
MemTable書き込み時にWriteLockを取得しなくていいのだろうか。