1. 12 9月, 2015 2 次提交
    • D
      Address code review comments both GH and internal · ddc8b449
      Dmitri Smirnov 提交于
       Fix compilation issues on GCC/CLANG
       Address Windows Release test build issues due to Sync
      ddc8b449
    • 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. 03 9月, 2015 1 次提交
    • D
      Make WinEnv::NowMicros return system time · f14c3363
      Dmitri Smirnov 提交于
        Previous change for the function
        https://github.com/facebook/rocksdb/commit/555ca3e7b7f06bd01dfd5e04dbb2cef5360f7917#diff-bdc04e0404c2db4fd3ac5118a63eaa4a
        made use of the QueryPerformanceCounter to return microseconds values that do not repeat
        as std::chrono::system_clock returned values that made auto_roll_logger_test fail.
      
       The interface documentation does not state that we need to return
       system time describing the return value as a number of microsecs since some
       moment in time. However, because on Linux it is implemented using gettimeofday
       various pieces of code (such as GenericRateLimiter) took advantage of that
       and make use of NowMicros() as a system timestamp. Thus the previous change
       broke rate_limiter_test on Windows.
      
       In addition, the interface name NowMicros() suggests that it is actually
       a timestamp so people use it as such.
      
       This change makes use of the new system call on Windows that returns
       system time with required precision. This change preserves the fix
       for  auto_roll_logger_test and fixes rate_limiter_test.
      
       Note that DBTest.RateLimitingTest still fails due to a separately reported issue.
      f14c3363
  3. 27 8月, 2015 1 次提交
  4. 13 8月, 2015 1 次提交
    • I
      [Cleanup] Remove RandomRWFile · 3bd9db42
      Islam AbdelRahman 提交于
      Summary: RandomRWFile is not used anywhere in out code base, this patch remove RandomRWFile
      
      Test Plan:
      make check -j64
      USE_CLANG=1 make all -j64
      OPT=-DROCKSDB_LITE make release -j64
      
      Reviewers: sdong, yhchiang, anthony, kradhakrishnan, rven, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D44091
      3bd9db42
  5. 23 7月, 2015 1 次提交
    • D
      Fix WinEnv::NowMicrosec · 555ca3e7
      Dmitri Smirnov 提交于
        * std::chrono does not provide enough granularity for microsecs and periodically emits
          duplicates
        * the bug is manifested in log rotation logic where we get duplicate
         log file names and loose previous log content
        * msvc does not imlement COW on std::strings adjusted the test to use
          refs in the loops as auto does not retain ref info
        * adjust auto_log rotation test with Windows specific command to remove
          a folder. The test previously worked because we have unix utils installed
          in house but this may not be the case for everyone.
      555ca3e7
  6. 21 7月, 2015 1 次提交
    • A
      Improved FileExists API · 06429408
      agiardullo 提交于
      Summary: Add new CheckFileExists method.  Considered changing the FileExists api but didn't want to break anyone's builds.
      
      Test Plan: unit tests
      
      Reviewers: yhchiang, igor, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D42003
      06429408
  7. 18 7月, 2015 1 次提交
    • 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
  8. 14 7月, 2015 1 次提交
    • S
      "make format" against last 10 commits · f9728640
      sdong 提交于
      Summary: This helps Windows port to format their changes, as discussed. Might have formatted some other codes too becasue last 10 commits include more.
      
      Test Plan: Build it.
      
      Reviewers: anthony, IslamAbdelRahman, kradhakrishnan, yhchiang, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D41961
      f9728640
  9. 09 7月, 2015 1 次提交
    • D
      All of these are in the new code added past 3.10 · d8586ab2
      Dmitri Smirnov 提交于
           1) Crash in env_win.cc that prevented db_test run to completion and some new tests
           2) Fix new corruption tests in DBTest by allowing a shared trunction of files. Note that this is generally needed ONLY for tests.
           3) Close database so WAL is closed prior to inducing corruption similar to what we did within Corruption tests.
      d8586ab2
  10. 08 7月, 2015 1 次提交
  11. 03 7月, 2015 1 次提交
  12. 02 7月, 2015 1 次提交
    • D
      Windows Port from Microsoft · 18285c1e
      Dmitri Smirnov 提交于
       Summary: Make RocksDb build and run on Windows to be functionally
       complete and performant. All existing test cases run with no
       regressions. Performance numbers are in the pull-request.
      
       Test plan: make all of the existing unit tests pass, obtain perf numbers.
      
       Co-authored-by: Praveen Rao praveensinghrao@outlook.com
       Co-authored-by: Sherlock Huang baihan.huang@gmail.com
       Co-authored-by: Alex Zinoviev alexander.zinoviev@me.com
       Co-authored-by: Dmitri Smirnov dmitrism@microsoft.com
      18285c1e