1. 12 9月, 2015 1 次提交
    • D
      Refactor to support file_reader_writer on Windows. · 30e82d5c
      Dmitri Smirnov 提交于
        Summary. A change https://reviews.facebook.net/differential/diff/224721/
        Has attempted to move common functionality out of platform dependent
        code to a new facility called file_reader_writer.
        This includes:
        - perf counters
        - Buffering
        - RateLimiting
      
        However, the change did not attempt to refactor Windows code.
        To mitigate, we introduce new quering interfaces such as UseOSBuffer(),
        GetRequiredBufferAlignment() and ReaderWriterForward()
        for pure forwarding where required.
        Introduce WritableFile got a new method Truncate(). This is to communicate
        to the file as to how much data it has on close.
         - When space is pre-allocated on Linux it is filled with zeros implicitly,
          no such thing exist on Windows so we must truncate file on close.
         - When operating in unbuffered mode the last page is filled with zeros but we still want to truncate.
      
         Previously, Close() would take care of it but now buffer management is shifted to the wrappers and the file has
         no idea about the file true size.
      
         This means that Close() on the wrapper level must always include
         Truncate() as well as wrapper __dtor should call Close() and
         against double Close().
         Move buffered/unbuffered write logic to the wrapper.
         Utilize Aligned buffer class.
         Adjust tests and implement Truncate() where necessary.
         Come up with reasonable defaults for new virtual interfaces.
         Forward calls for RandomAccessReadAhead class to avoid double
         buffering and locking (double locking in unbuffered mode on WIndows).
      30e82d5c
  2. 18 8月, 2015 1 次提交
    • A
      Simplify querying of merge results · f32a5720
      Andres Notzli 提交于
      Summary:
      While working on supporting mixing merge operators with
      single deletes ( https://reviews.facebook.net/D43179 ),
      I realized that returning and dealing with merge results
      can be made simpler. Submitting this as a separate diff
      because it is not directly related to single deletes.
      
      Before, callers of merge helper had to retrieve the merge
      result in one of two ways depending on whether the merge
      was successful or not (success = result of merge was single
      kTypeValue). For successful merges, the caller could query
      the resulting key/value pair and for unsuccessful merges,
      the result could be retrieved in the form of two deques of
      keys and values. However, with single deletes, a successful merge
      does not return a single key/value pair (if merge
      operands are merged with a single delete, we have to generate
      a value and keep the original single delete around to make
      sure that we are not accidentially producing a key overwrite).
      In addition, the two existing call sites of the merge
      helper were taking the same actions independently from whether
      the merge was successful or not, so this patch simplifies that.
      
      Test Plan: make clean all check
      
      Reviewers: rven, sdong, yhchiang, anthony, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D43353
      f32a5720
  3. 05 8月, 2015 1 次提交
  4. 18 7月, 2015 2 次提交
    • S
      Move rate_limiter, write buffering, most perf context instrumentation and most... · 6e9fbeb2
      sdong 提交于
      Move rate_limiter, write buffering, most perf context instrumentation and most random kill out of Env
      
      Summary: We want to keep Env a think layer for better portability. Less platform dependent codes should be moved out of Env. In this patch, I create a wrapper of file readers and writers, and put rate limiting, write buffering, as well as most perf context instrumentation and random kill out of Env. It will make it easier to maintain multiple Env in the future.
      
      Test Plan: Run all existing unit tests.
      
      Reviewers: anthony, kradhakrishnan, IslamAbdelRahman, yhchiang, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D42321
      6e9fbeb2
    • A
      Fixed and simplified merge_helper · 1d20fa9d
      Andres Notzli 提交于
      Summary:
      MergeUntil was not reporting a success when merging an operand with
      a Value/Deletion despite the comments in MergeHelper and CompactionJob
      indicating otherwise. This lead to operands being written to the compaction
      output unnecessarily:
      
      M1 M2 M3 P M4 M5 --> (P+M1+M2+M3) M2 M3 M4 M5 (before the diff)
      M1 M2 M3 P M4 M5 --> (P+M1+M2+M3) M4 M5 (after the diff)
      
      In addition, the code handling Values/Deletion was basically identical.
      This patch unifies the code. Finally, this patch also adds testing for
      merge_helper.
      
      Test Plan: make && make check
      
      Reviewers: sdong, rven, yhchiang, tnovak, igor
      
      Reviewed By: igor
      
      Subscribers: tnovak, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D42351
      1d20fa9d
  5. 27 2月, 2015 1 次提交
    • I
      rocksdb: Add missing override · 62247ffa
      Igor Sugak 提交于
      Summary:
      When using latest clang (3.6 or 3.7/trunck) rocksdb is failing with many errors. Almost all of them are missing override errors. This diff adds missing override keyword. No manual changes.
      
      Prerequisites: bear and clang 3.5 build with extra tools
      
      ```lang=bash
      % USE_CLANG=1 bear make all # generate a compilation database http://clang.llvm.org/docs/JSONCompilationDatabase.html
      % clang-modernize -p . -include . -add-override
      % make format
      ```
      
      Test Plan:
      Make sure all tests are passing.
      ```lang=bash
      % #Use default fb code clang.
      % make check
      ```
      Verify less error and no missing override errors.
      ```lang=bash
      % # Have trunk clang present in path.
      % ROCKSDB_NO_FBCODE=1 CC=clang CXX=clang++ make
      ```
      
      Reviewers: igor, kradhakrishnan, rven, meyering, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D34077
      62247ffa
  6. 30 10月, 2014 1 次提交
  7. 09 9月, 2014 1 次提交
  8. 28 8月, 2014 1 次提交
  9. 04 2月, 2014 1 次提交
  10. 17 10月, 2013 1 次提交
  11. 06 10月, 2013 1 次提交
  12. 05 10月, 2013 1 次提交
  13. 24 8月, 2013 1 次提交
  14. 21 3月, 2013 1 次提交
    • D
      Ability to configure bufferedio-reads, filesystem-readaheads and mmap-read-write per database. · ad96563b
      Dhruba Borthakur 提交于
      Summary:
      This patch allows an application to specify whether to use bufferedio,
      reads-via-mmaps and writes-via-mmaps per database. Earlier, there
      was a global static variable that was used to configure this functionality.
      
      The default setting remains the same (and is backward compatible):
       1. use bufferedio
       2. do not use mmaps for reads
       3. use mmap for writes
       4. use readaheads for reads needed for compaction
      
      I also added a parameter to db_bench to be able to explicitly specify
      whether to do readaheads for compactions or not.
      
      Test Plan: make check
      
      Reviewers: sheki, heyongqiang, MarkCallaghan
      
      Reviewed By: sheki
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D9429
      ad96563b
  15. 24 1月, 2013 1 次提交
    • C
      Fix a number of object lifetime/ownership issues · 2fdf91a4
      Chip Turner 提交于
      Summary:
      Replace manual memory management with std::unique_ptr in a
      number of places; not exhaustive, but this fixes a few leaks with file
      handles as well as clarifies semantics of the ownership of file handles
      with log classes.
      
      Test Plan: db_stress, make check
      
      Reviewers: dhruba
      
      Reviewed By: dhruba
      
      CC: zshao, leveldb, heyongqiang
      
      Differential Revision: https://reviews.facebook.net/D8043
      2fdf91a4
  16. 01 11月, 2011 1 次提交
    • H
      A number of fixes: · 36a5f8ed
      Hans Wennborg 提交于
      - Replace raw slice comparison with a call to user comparator.
        Added test for custom comparators.
      
      - Fix end of namespace comments.
      
      - Fixed bug in picking inputs for a level-0 compaction.
      
        When finding overlapping files, the covered range may expand
        as files are added to the input set.  We now correctly expand
        the range when this happens instead of continuing to use the
        old range.  For example, suppose L0 contains files with the
        following ranges:
      
            F1: a .. d
            F2:    c .. g
            F3:       f .. j
      
        and the initial compaction target is F3.  We used to search
        for range f..j which yielded {F2,F3}.  However we now expand
        the range as soon as another file is added.  In this case,
        when F2 is added, we expand the range to c..j and restart the
        search.  That picks up file F1 as well.
      
        This change fixes a bug related to deleted keys showing up
        incorrectly after a compaction as described in Issue 44.
      
      (Sync with upstream @25072954)
      36a5f8ed
  17. 20 4月, 2011 2 次提交
  18. 19 4月, 2011 1 次提交
  19. 13 4月, 2011 1 次提交
  20. 31 3月, 2011 1 次提交
  21. 19 3月, 2011 1 次提交