You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bookkeeper.apache.org by "Yixue (Andrew) Zhu" <yx...@gmail.com> on 2012/12/05 03:06:54 UTC

Review Request: SkipList Ledger Store

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/8350/
-----------------------------------------------------------

Review request for bookkeeper, Ivan Kelly, Sijie Guo, and Aniruddha Laud.


Description
-------

Uses skip list to sort entries before adding them to entry log file, to improve ledger read performance. Memory arena is used to allocate skip list entries, to avoid GC impact.
A single-threaded scheduler is used to flush skip list to buffered entry log file channel, once configured data size limit is reached. Sync thread is notified as well to flush file buffers.
Compaction uses Skip list, to  merge entries together as well as remove duplicate entries.
This change also fix an existing issue of old entry logs being removed w/o forcing new entry logs flushed, which is more obvious with SkipList store.


This addresses bug BOOKKEEPER-432.
    https://issues.apache.org/jira/browse/BOOKKEEPER-432


Diffs
-----

  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Bookie.java 929be51 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/CacheCallback.java PRE-CREATION 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/EntryKey.java PRE-CREATION 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/EntryKeyValue.java PRE-CREATION 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/EntryMemTable.java PRE-CREATION 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java cecb74a 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/InterleavedLedgerStorage.java c3f5149 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/LedgerCacheImpl.java c8d2b21 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/LedgerStorage.java 14f1338 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/SkipListArena.java PRE-CREATION 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/SkipListFlusher.java PRE-CREATION 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/SkipListLedgerStorage.java PRE-CREATION 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingAddOp.java acef474 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ServerConfiguration.java d7e5b2c 
  bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java 5d7082a 
  bookkeeper-server/src/main/resources/findbugsExclude.xml 8404e3f 
  bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/CompactionTest.java 720f07b 
  bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/EntryLogTest.java 2d9fa78 
  bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/LedgerCacheTest.java a24b1e2 
  bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/TestEntryMemTable.java PRE-CREATION 
  bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/TestSkipListArena.java PRE-CREATION 
  bookkeeper-server/src/test/java/org/apache/bookkeeper/test/LedgerDeleteTest.java 984c2f8 
  bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ReadOnlyBookieTest.java a375f09 

Diff: https://reviews.apache.org/r/8350/diff/


Testing
-------

Unit tests (new + existing)


Thanks,

Yixue (Andrew) Zhu