1. 20 1月, 2018 1 次提交
  2. 19 1月, 2018 3 次提交
    • Y
      Fix Flush() keep waiting after flush finish · f1cb83fc
      Yi Wu 提交于
      Summary:
      Flush() call could be waiting indefinitely if min_write_buffer_number_to_merge is used. Consider the sequence:
      1. User call Flush() with flush_options.wait = true
      2. The manual flush started in the background
      3. New memtable become immutable because of writes. The new memtable will not trigger flush if min_write_buffer_number_to_merge is not reached.
      4. The manual flush finish.
      
      Because of the new memtable created at step 3 not being flush, previous logic of WaitForFlushMemTable() keep waiting, despite the memtables it intent to flush has been flushed.
      
      Here instead of checking if there are any more memtables to flush, WaitForFlushMemTable() also check the id of the earliest memtable. If the id is larger than that of latest memtable at the time flush was initiated, it means all the memtable at the time of flush start has all been flush.
      Closes https://github.com/facebook/rocksdb/pull/3378
      
      Differential Revision: D6746789
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: 35e698f71c7f90b06337a93e6825f4ea3b619bfa
      f1cb83fc
    • T
      Fixed get version on windows, moved throwing exceptions into cc file. · b9873162
      topilski 提交于
      Summary:
      Fixes for msys2 and mingw, hide exceptions into cpp  file.
      Closes https://github.com/facebook/rocksdb/pull/3377
      
      Differential Revision: D6746707
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: 456b38df80bc48b8386a2cf87f669b5a4f9999a4
      b9873162
    • J
      Add possibility to change ttl on open DB · 4decff6f
      jonasf 提交于
      Summary:
      We have seen cases where it could be good to change TTL on already open DB.
      Change ttl in TtlCompactionFilterFactory on open db.
      Next time a filter is created, it will filter accroding to the set TTL.
      
      Is this something that could be useful for others?
      Any downsides?
      Closes https://github.com/facebook/rocksdb/pull/3292
      
      Differential Revision: D6731993
      
      Pulled By: miasantreble
      
      fbshipit-source-id: 73b94d69237b11e8730734389052429d621a6b1e
      4decff6f
  3. 18 1月, 2018 1 次提交
    • A
      fix live WALs purged while file deletions disabled · 46e599fc
      Andrew Kryczka 提交于
      Summary:
      When calling `DisableFileDeletions` followed by `GetSortedWalFiles`, we guarantee the files returned by the latter call won't be deleted until after file deletions are re-enabled. However, `GetSortedWalFiles` didn't omit files already planned for deletion via `PurgeObsoleteFiles`, so the guarantee could be broken.
      
      We fix it by making `GetSortedWalFiles` wait for the number of pending purges to hit zero if file deletions are disabled. This condition is eventually met since `PurgeObsoleteFiles` is guaranteed to be called for the existing pending purges, and new purges cannot be scheduled while file deletions are disabled. Once the condition is met, `GetSortedWalFiles` simply returns the content of DB and archive directories, which nobody can delete (except for deletion scheduler, for which I plan to fix this bug later) until deletions are re-enabled.
      Closes https://github.com/facebook/rocksdb/pull/3341
      
      Differential Revision: D6681131
      
      Pulled By: ajkr
      
      fbshipit-source-id: 90b1e2f2362ea9ef715623841c0826611a817634
      46e599fc
  4. 17 1月, 2018 5 次提交
    • A
      fix DBTest.AutomaticConflictsWithManualCompaction · 266d85fb
      Andrew Kryczka 提交于
      Summary:
      After af92d4ad, only exclusive manual compaction can have conflict. dc360df8 updated the conflict-checking test case accordingly. But we missed the point that exclusive manual compaction can only conflict with automatic compactions scheduled after it, since it waits on pending automatic compactions before it begins running.
      
      This PR updates the test case to ensure the automatic compactions are scheduled after the manual compaction starts but before it finishes, thus ensuring a conflict. I also cleaned up the test case to use less space as I saw it cause out-of-space error on travis.
      Closes https://github.com/facebook/rocksdb/pull/3375
      
      Differential Revision: D6735162
      
      Pulled By: ajkr
      
      fbshipit-source-id: 020530a4e150a4786792dce7cec5d66b420cb884
      266d85fb
    • Y
      Fix multiple build failures · dc360df8
      Yi Wu 提交于
      Summary:
      * Fix DBTest.CompactRangeWithEmptyBottomLevel lite build failure
      * Fix DBTest.AutomaticConflictsWithManualCompaction failure introduce by #3366
      * Fix BlockBasedTableTest::IndexUncompressed should be disabled if snappy is disabled
      * Fix ASAN failure with DBBasicTest::DBClose test
      Closes https://github.com/facebook/rocksdb/pull/3373
      
      Differential Revision: D6732313
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: 1eb9b9d9a8d795f56188fa9770db9353f6fdedc5
      dc360df8
    • B
      Issue #3370 Broken CMakeLists.txt · bf6f03f3
      Bartek Wrona 提交于
      Summary:
      Issue #3370 Simple fixes to make RocksDB project working also as a submodule of other bigger one.
      Closes https://github.com/facebook/rocksdb/pull/3372
      
      Differential Revision: D6729595
      
      Pulled By: ajkr
      
      fbshipit-source-id: eee2589e7a7c4322873dff8510eebd050301c54c
      bf6f03f3
    • S
      Avoid too frequent MaybeScheduleFlushOrCompaction() call · af92d4ad
      Sunguck Lee 提交于
      Summary:
      If there's manual compaction in the queue, then "HaveManualCompaction(compaction_queue_.front())" will return true, and this cause too frequent MaybeScheduleFlushOrCompaction().
      
      https://github.com/facebook/rocksdb/issues/3198
      Closes https://github.com/facebook/rocksdb/pull/3366
      
      Differential Revision: D6729575
      
      Pulled By: ajkr
      
      fbshipit-source-id: 96da04f8fd33297b1ccaec3badd9090403da29b0
      af92d4ad
    • A
      Add a Close() method to DB to return status when closing a db · d0f1b49a
      Anand Ananthabhotla 提交于
      Summary:
      Currently, the only way to close an open DB is to destroy the DB
      object. There is no way for the caller to know the status. In one
      instance, the destructor encountered an error due to failure to
      close a log file on HDFS. In order to prevent silent failures, we add
      DB::Close() that calls CloseImpl() which must be implemented by its
      descendants.
      The main failure point in the destructor is closing the log file. This
      patch also adds a Close() entry point to Logger in order to get status.
      When DBOptions::info_log is allocated and owned by the DBImpl, it is
      explicitly closed by DBImpl::CloseImpl().
      Closes https://github.com/facebook/rocksdb/pull/3348
      
      Differential Revision: D6698158
      
      Pulled By: anand1976
      
      fbshipit-source-id: 9468e2892553eb09c4c41b8723f590c0dbd8ab7d
      d0f1b49a
  5. 13 1月, 2018 4 次提交
  6. 12 1月, 2018 7 次提交
    • A
      fix Gemfile.lock nokogiri dependencies · 6d7e3b9f
      Andrew Kryczka 提交于
      Summary:
      I installed the ruby dependencies and ran `bundle update nokogiri`. It depends on a newer version of "mini_portile2" which I missed in 9c2f64e1. Now `bundle install` works again.
      Closes https://github.com/facebook/rocksdb/pull/3361
      
      Differential Revision: D6710164
      
      Pulled By: ajkr
      
      fbshipit-source-id: 9a08d6cc6400ef495b715b3d68b04ce3f3367031
      6d7e3b9f
    • P
      Consider an increase to buffer size when reading option file, from 4K to 8K. · 45828c72
      Peter (Stig) Edwards 提交于
      Summary:
      Hello and thank you for RocksDB,
      
      While looking into the buffered io used when an `OPTIONS` file is read I noticed the `OPTIONS` files produced by RocksDB 5.8.8 (and head of master) were just over 4096 bytes in size, resulting in the version of glibc I am using (glibc-2.17-196.el7) (on the filesystem used) being passed a 4K buffer for the `fread_unlocked` call and 2 system call reads using a 4096 buffer being used to read the contents of the `OPTIONS` file.
      
        If the buffer size is increased to 8192 then 1 system call read is used to read the contents.
      
        As I think the buffer size is just used for reading `OPTIONS` files, and I thought it likely that `OPTIONS` files have increased in size (as more options are added), I thought I would suggest an increase.
      
      [  If the comments from the top of the `OPTIONS` file are removed, and white space from the start of lines is removed then the size can be reduced to be under 4K, but as more options are added the size seems likely to grow again. ]
      
      Create a new database:
      
      ```
      > ./ldb --create_if_missing --db=/tmp/rdb_tmp put 1 1
      OK
      ```
      
      The OPTIONS file is 4252 bytes:
      
      ```
      > stat /tmp/rdb_tmp/OPTIONS* | head -n 2
        File: ‘/tmp/rdb_tmp/OPTIONS-000005’
        Size: 4252            Blocks: 16         IO Block: 4096   regular file
      ```
      
      Before, the 4096 byte buffer is used from 2 system read calls:
      
      ```
      > strace -f ./ldb --try_load_options --db=/tmp/rdb_tmp get DOES_NOT_EXIST 2>&1 |
          grep -A 1 'RocksDB option file'
      read(3, "# This is a RocksDB option file."..., 4096) = 4096
      read(3, "e\n  metadata_block_size=4096\n  c"..., 4096) = 156
      ```
      
      ltrace shows 4096 passed to fread_unlocked
      
      ```
      > ltrace -S -f ./ldb --try_load_options --db=/tmp/rdb_tmp get DOES_NOT_EXIST 2>&1 |
          grep -C 3 'RocksDB option file'
      [pid 51013] fread_unlocked(0x7ffd5fbf2d50, 1, 4096, 0x7fd2e084e780 <unfinished ...>
      [pid 51013] fstat@SYS(3, 0x7ffd5fbf28f0)         = 0
      [pid 51013] mmap@SYS(nil, 4096, 3, 34, -1, 0)    = 0x7fd2e318c000
      [pid 51013] read@SYS(3, "# This is a RocksDB option file."..., 4096) = 4096
      [pid 51013] <... fread_unlocked resumed> )       = 4096
      ...
      ```
      
      After, the 8192 byte buffer is used from 1 system read call:
      
      ```
      > strace -f ./ldb --try_load_options --db=/tmp/rdb_tmp get DOES_NOT_EXIST 2>&1 | grep -A 1 'RocksDB option file'
      read(3, "# This is a RocksDB option file."..., 8192) = 4252
      read(3, "", 4096)                       = 0
      ```
      
      ltrace shows 8192 passed to fread_unlocked
      
      ```
      > ltrace -S -f ./ldb --try_load_options --db=/tmp/rdb_tmp get DOES_NOT_EXIST 2>&1 | grep -C 3 'RocksDB option file'
      [pid 146611] fread_unlocked(0x7ffcfba382f0, 1, 8192, 0x7fc4e844e780 <unfinished ...>
      [pid 146611] fstat@SYS(3, 0x7ffcfba380f0)        = 0
      [pid 146611] mmap@SYS(nil, 4096, 3, 34, -1, 0)   = 0x7fc4eaee0000
      [pid 146611] read@SYS(3, "# This is a RocksDB option file."..., 8192) = 4252
      [pid 146611] read@SYS(3, "", 4096)               = 0
      [pid 146611] <... fread_unlocked resumed> )      = 4252
      [pid 146611] feof(0x7fc4e844e780)                = 1
      ```
      Closes https://github.com/facebook/rocksdb/pull/3294
      
      Differential Revision: D6653684
      
      Pulled By: ajkr
      
      fbshipit-source-id: 222f25f5442fefe1dcec18c700bd9e235bb63491
      45828c72
    • C
      Fix memleak when DB::DeleteFile() · 0a7ba0e5
      Changli Gao 提交于
      Summary:
      Because the corresponding read_first_record_cache_ item wasn't
      erased, memory leaked.
      Closes https://github.com/facebook/rocksdb/pull/1712
      
      Differential Revision: D4363654
      
      Pulled By: ajkr
      
      fbshipit-source-id: 7da1adcfc8c380e4ffe05b8769fc2221ad17a225
      0a7ba0e5
    • A
      Update Gemfile.lock · 9c2f64e1
      Andrew Kryczka 提交于
      Summary:
      bump nokogiri number
      Closes https://github.com/facebook/rocksdb/pull/3358
      
      Differential Revision: D6708596
      
      Pulled By: ajkr
      
      fbshipit-source-id: 6662c3ba4994374ecf8a13928e915b655a980b70
      9c2f64e1
    • B
      add WriteBatch::WriteBatch(std::string&&) · 204af1ec
      Bo Liu 提交于
      Summary:
      to save a string copy for some use cases.
      
      The change is pretty straightforward, please feel free to let me know if you want to suggest any tests for it.
      Closes https://github.com/facebook/rocksdb/pull/3349
      
      Differential Revision: D6706828
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: 873ce4442937bdc030b395c7f99228eda7f59eb7
      204af1ec
    • A
      Add Jenkins for PPC64le build status badge · d4da02d1
      Adam Retter 提交于
      Summary: Closes https://github.com/facebook/rocksdb/pull/3356
      
      Differential Revision: D6706909
      
      Pulled By: sagar0
      
      fbshipit-source-id: 6e4757d9eceab3e8a6c1b83c1be4108e86576cb2
      d4da02d1
    • A
      FreeBSD build support for RocksDB and RocksJava · a53c571d
      Adam Retter 提交于
      Summary:
      Tested on a clean FreeBSD 11.01 x64.
      
      Closes https://github.com/facebook/rocksdb/pull/1423
      Closes https://github.com/facebook/rocksdb/pull/3357
      
      Differential Revision: D6705868
      
      Pulled By: sagar0
      
      fbshipit-source-id: cbccbbdafd4f42922512ca03619a5d5583a425fd
      a53c571d
  7. 11 1月, 2018 4 次提交
  8. 10 1月, 2018 6 次提交
  9. 09 1月, 2018 2 次提交
  10. 06 1月, 2018 4 次提交
  11. 05 1月, 2018 1 次提交
    • M
      Remove assert(s.ok()) from ::DeleteFile · 1c9ada59
      Maysam Yabandeh 提交于
      Summary:
      DestroyDB that is used in tests loops over the files returned by ::GetChildren and delete them one by one. Such files might be already deleted in the file system (during DeleteObsoleteFileImpl for example) but will get actually deleted with a delay sometimes before ::DeleteFile is called on the file name. We have some test failures where FaultInjectionTestEnv::DeleteFile fails on assert(s.ok()) during DestroyDB. This patch removes the assert statement to fix that.
      Closes https://github.com/facebook/rocksdb/pull/3324
      
      Differential Revision: D6659545
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 4c9552fbcd494dcf3e61d475c11fc965c4388b2c
      1c9ada59
  12. 04 1月, 2018 2 次提交