cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <>
Subject [Cassandra Wiki] Update of "ArchitectureInternals" by JonathanEllis
Date Tue, 24 Nov 2009 19:16:17 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for change notification.

The "ArchitectureInternals" page has been changed by JonathanEllis.


   * When a Memtable is full, it gets sorted and written out as an !SSTable asynchronously
by !ColumnFamilyStore.switchMemtable
     * When enough SSTables exist, they are merged by !ColumnFamilyStore.doFileCompaction
       * Making this concurrency-safe without blocking writes or reads while we remove the
old SSTables from the list and add the new one is tricky, because naive approaches require
waiting for all readers of the old sstables to finish before deleting them (since we can't
know if they have actually started opening the file yet; if they have not and we delete the
file first, they will error out).  The approach we have settled on is to not actually delete
old SSTables synchronously; instead we register a phantom reference with the garbage collector,
so when no references to the !SSTable exist it will be deleted.  (We also write a compaction
marker to the file system so if the server is restarted before that happens, we clean out
the old SSTables at startup time.)
-  * See ArchitectureSSTable and ArchitectureCommitLog for more details
+  * See [[ArchitectureSSTable]] and ArchitectureCommitLog for more details
  = Read path =
   * !StorageProxy gets the nodes responsible for replicas of the keys from the !ReplicationStrategy,
then sends read messages to them

View raw message