You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@bookkeeper.apache.org by GitBox <gi...@apache.org> on 2017/12/22 18:46:59 UTC

[GitHub] ivankelly opened a new pull request #913: [WIP] Refactor FileInfo locking and refcounting out IndexPersistenceMgr

ivankelly opened a new pull request #913: [WIP] Refactor FileInfo locking and refcounting out IndexPersistenceMgr
URL: https://github.com/apache/bookkeeper/pull/913
 
 
   There is a number of bugs in index persistence mgr related to how
   refcounts are handled and how FileInfos are freed, due to the locking
   mechanism. These can result in the fencing bit being lost in ledgers,
   which is a serious issue. They also cause flakes in
   IndexPersistenceMgrTest#testEvictFileInfoWhenUnderlyingFileExists.
   
   For details see the discussion at:
   https://github.com/apache/bookkeeper/pull/513/files/8075b0#r156676238
   
   There are two key problems.
   
   1. FileInfos are flushed asynchronously on eviction. If another thread
   tries to read the FileInfo after the flush has been scheduled, but
   before it runs, it will read stale date (and we'll possibly lose the
   fence bit).
   2. FileInfos can be closed while it is still references in the
   IndexPersistenceMgr. This means that it can be fenced, but this will
   very be flushed to disk because the FileInfo is already closed.
   
   The patch solves this by moving FileInfo locking and refcount into a
   separate class, FileInfoBackingCache. When either the write cache or
   read cache load a file info, it tries to load it from this backing
   cache. All writes to the the backing cache are done under a write
   lock. This class also takes care of reference counting. It hands out
   CachedFileInfo objects, which will be flushed to disk when all
   references are released.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services