1. 08 2月, 2019 1 次提交
  2. 30 1月, 2019 1 次提交
  3. 29 1月, 2019 1 次提交
  4. 24 1月, 2019 3 次提交
  5. 23 1月, 2019 1 次提交
  6. 20 1月, 2019 1 次提交
  7. 17 1月, 2019 1 次提交
  8. 12 1月, 2019 1 次提交
  9. 11 1月, 2019 1 次提交
  10. 05 1月, 2019 1 次提交
    • A
      Fix point lookup on range tombstone sentinel endpoint (#4829) · 9e2c804f
      Andrew Kryczka 提交于
      Summary:
      Previously for point lookup we decided which file to look into based on user key overlap only. We also did not truncate range tombstones in the point lookup code path. These two ideas did not interact well in cases like this:
      
      - L1 has range tombstone [a, c)#1 and point key b#2. The data is split between file1 with range [a#1,1, b#72057594037927935,15], and file2 with range [b#2, c#1].
      - L1's file2 gets compacted to L2.
      - User issues `Get()` for b#3.
      - L1's file1 is opened and the range tombstone [a, c)#1 is found for b, while no point-key for b is found in L1.
      - `Get()` assumes that the range tombstone must cover all data in that range in lower levels, so short circuits and returns `NotFound`.
      
      The solution to this problem is to not look into files that only overlap with the point lookup at a range tombstone sentinel endpoint. In the above example, this would mean not opening L1's file1 or its tombstones during the `Get()`.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4829
      
      Differential Revision: D13561355
      
      Pulled By: ajkr
      
      fbshipit-source-id: a13c21c816870a2f5d32a48af6dbd719a7d9d19f
      9e2c804f
  11. 04 1月, 2019 1 次提交
  12. 03 1月, 2019 2 次提交
    • A
      fix accounting for range tombstones in TableProperties (#4841) · ace543a8
      Andrew Kryczka 提交于
      Summary:
      - To be consistent with the accounting of other optypes in `TableProperties`, we should count range tombstones in `TableProperties::num_entries` and `TableProperties::num_deletions`.
      - Updated assertions in stress test's `OnTableFileCreated` handler to accept files with range tombstones only.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4841
      
      Differential Revision: D13568424
      
      Pulled By: ajkr
      
      fbshipit-source-id: 0139d7806494eda20ece67ec460d2458dbbf6026
      ace543a8
    • A
      Lock free MultiGet (#4754) · b9d6ecca
      Anand Ananthabhotla 提交于
      Summary:
      Avoid locking the DB mutex in order to reference SuperVersions. Instead, we get the thread local cached SuperVersion for each column family in the list. It depends on finding a sequence number that overlaps with all the open memtables. We start with the latest published sequence number, and if any of the memtables is sealed before we can get all the SuperVersions, the process is repeated. After a few times, give up and lock the DB mutex.
      
      Tests:
      1. Unit tests
      2. make check
      3. db_bench -
      
      TEST_TMPDIR=/dev/shm ./db_bench -use_existing_db=true -benchmarks=readrandom -write_buffer_size=4194304 -target_file_size_base=4194304 -max_bytes_for_level_base=16777216 -num=5000000 -reads=1000000 -threads=32 -compression_type=none -cache_size=1048576000 -batch_size=1 -bloom_bits=1
      readrandom   :       0.167 micros/op 5983920 ops/sec;  426.2 MB/s (1000000 of 1000000 found)
      
      Multireadrandom with batch size 1:
      multireadrandom :       0.176 micros/op 5684033 ops/sec; (1000000 of 1000000 found)
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4754
      
      Differential Revision: D13363550
      
      Pulled By: anand1976
      
      fbshipit-source-id: 6243e8de7dbd9c8bb490a8eca385da0c855b1dd4
      b9d6ecca
  13. 29 12月, 2018 1 次提交
    • S
      Preload some files even if options.max_open_files (#3340) · f0dda35d
      Siying Dong 提交于
      Summary:
      Choose to preload some files if options.max_open_files != -1. This can slightly narrow the gap of performance between options.max_open_files is -1 and a large number. To avoid a significant regression to DB reopen speed if options.max_open_files != -1. Limit the files to preload in DB open time to 16.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/3340
      
      Differential Revision: D6686945
      
      Pulled By: siying
      
      fbshipit-source-id: 8ec11bbdb46e3d0cdee7b6ad5897a09c5a07869f
      f0dda35d
  14. 21 12月, 2018 1 次提交
    • A
      fix DeleteRange memory leak for mmap and block cache (#4810) · e0be1bc4
      Andrew Kryczka 提交于
      Summary:
      Previously we were cleaning up range tombstone meta-block by calling `ReleaseCachedEntry`, which wouldn't work if `value != nullptr && cache_handle == nullptr`. This happened at least in the case with mmap reads and block cache both enabled. I noticed `NewDataBlockIterator` intends to handle all these cases, so migrated to that instead of `NewUnfragmentedRangeTombstoneIterator`.
      
      Also changed the table-opening logic to fail on `ReadRangeDelBlock` failure, since that can cause data corruption. Added a test case to verify this behavior. Note the test case does not fail on `TryReopen` because failure to preload table handlers is not considered critical. However, it does fail on any read involving that file since it cannot return correct data.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4810
      
      Differential Revision: D13534296
      
      Pulled By: ajkr
      
      fbshipit-source-id: 55dde1111717cea6ec4bf38418daab81ccef3599
      e0be1bc4
  15. 14 12月, 2018 1 次提交
    • Y
      Improve flushing multiple column families (#4708) · 4fce44fc
      Yanqin Jin 提交于
      Summary:
      If one column family is dropped, we should simply skip it and continue to flush
      other active ones.
      Currently we use Status::ShutdownInProgress to notify caller of column families
      being dropped. In the future, we should consider using a different Status code.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4708
      
      Differential Revision: D13378954
      
      Pulled By: riversand963
      
      fbshipit-source-id: 42f248cdf2d32d4c0f677cd39012694b8f1328ca
      4fce44fc
  16. 08 12月, 2018 1 次提交
    • Y
      Enable checkpoint of read-only db (#4681) · f307479b
      Yanqin Jin 提交于
      Summary:
      1. DBImplReadOnly::GetLiveFiles should not return NotSupported. Instead, it
         should call DBImpl::GetLiveFiles(flush_memtable=false).
      2. In DBImp::Recover, we should also recover the OPTIONS file name and/or
         number so that an immediate subsequent GetLiveFiles will get the correct
         OPTIONS name.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4681
      
      Differential Revision: D13069205
      
      Pulled By: riversand963
      
      fbshipit-source-id: 3e6a0174307d06db5a01feb099b306cea1f7f88a
      f307479b
  17. 07 12月, 2018 1 次提交
    • M
      Extend Transaction::GetForUpdate with do_validate (#4680) · b878f93c
      Maysam Yabandeh 提交于
      Summary:
      Transaction::GetForUpdate is extended with a do_validate parameter with default value of true. If false it skips validating the snapshot (if there is any) before doing the read. After the read it also returns the latest value (expects the ReadOptions::snapshot to be nullptr). This allows RocksDB applications to use GetForUpdate similarly to how InnoDB does. Similarly ::Merge, ::Put, ::Delete, and ::SingleDelete are extended with assume_exclusive_tracked with default value of false. It true it indicates that call is assumed to be after a ::GetForUpdate(do_validate=false).
      The Java APIs are accordingly updated.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4680
      
      Differential Revision: D13068508
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: f0b59db28f7f6a078b60844d902057140765e67d
      b878f93c
  18. 06 12月, 2018 1 次提交
  19. 01 12月, 2018 2 次提交
  20. 29 11月, 2018 1 次提交
  21. 28 11月, 2018 1 次提交
  22. 22 11月, 2018 2 次提交
  23. 21 11月, 2018 1 次提交
    • A
      Fix range tombstone covering short-circuit logic (#4698) · ed5aec5b
      Abhishek Madan 提交于
      Summary:
      Since a range tombstone seen at one level will cover all keys
      in the range at lower levels, there was a short-circuiting check in Get
      that reported a key was not found at most one file after the range
      tombstone was discovered. However, this was incorrect for merge
      operands, since a deletion might only cover some merge operands,
      which implies that the key should be found. This PR fixes this logic in
      the Version portion of Get, and removes the logic from the MemTable
      portion of Get, since the perforamnce benefit provided there is minimal.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4698
      
      Differential Revision: D13142484
      
      Pulled By: abhimadan
      
      fbshipit-source-id: cbd74537c806032f2bfa564724d01a80df7c8f10
      ed5aec5b
  24. 14 11月, 2018 4 次提交
    • Y
      Move MemoryAllocator option from Cache to BlockBasedTableOptions (#4676) · b32d087d
      Yi Wu 提交于
      Summary:
      Per offline discussion with siying, `MemoryAllocator` and `Cache` should be decouple. The idea is that memory allocator handles memory allocation, while cache handle cache policy.
      
      It is normal that external cache libraries pack couple the two components for better optimization. If we want to integrate with such library in the future, we can make a wrapper of the library implementing both `Cache` and `MemoryAllocator` interface.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4676
      
      Differential Revision: D13047662
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: cd42e246d80ab600b4de47d073f7d2db308ce6dd
      b32d087d
    • S
      Divide `NO_ITERATORS` into two counters `NO_ITERATOR_CREATED` and `NO_ITERATOR_DELETE` (#4498) · 5945e16d
      Soli Como 提交于
      Summary:
      Currently, `Statistics` can record tick by `recordTick()` whose second parameter is an `uint64_t`.
      That means tick can only increase.
      If we want to reduce tick, we have to work around like `RecordTick(statistics_, NO_ITERATORS, uint64_t(-1));`.
      That's kind of a hack.
      
      So, this PR divide `NO_ITERATORS` into two counters `NO_ITERATOR_CREATED` and `NO_ITERATOR_DELETE`, making the counters increase only.
      
      Fixes #3013 .
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4498
      
      Differential Revision: D10395010
      
      Pulled By: sagar0
      
      fbshipit-source-id: cfb523b22a37411c794b4e9da090f1ae30293db2
      5945e16d
    • A
      Backup engine support for direct I/O reads (#4640) · ea945470
      Andrew Kryczka 提交于
      Summary:
      Use the `DBOptions` that the backup engine already holds to figure out the right `EnvOptions` to use when reading the DB files. This means that, if a user opened a DB instance with `use_direct_reads=true`, then using `BackupEngine` to back up that DB instance will use direct I/O to read files when calculating checksums and copying. Currently the WALs and manifests would still be read using buffered I/O to prevent mixing direct I/O reads with concurrent buffered I/O writes.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4640
      
      Differential Revision: D13015268
      
      Pulled By: ajkr
      
      fbshipit-source-id: 77006ad6f3e00ce58374ca4793b785eea0db6269
      ea945470
    • Z
      use per-level perfcontext for DB::Get calls (#4617) · b3130193
      Zhongyi Xie 提交于
      Summary:
      this PR adds two more per-level perf context counters to track
      * number of keys returned in Get call, break down by levels
      * total processing time at each level during Get call
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4617
      
      Differential Revision: D12898024
      
      Pulled By: miasantreble
      
      fbshipit-source-id: 6b84ef1c8097c0d9e97bee1a774958f56ab4a6c4
      b3130193
  25. 13 11月, 2018 1 次提交
  26. 07 11月, 2018 1 次提交
  27. 06 11月, 2018 2 次提交
    • M
      WritePrepared: Fix bug in searching in non-cached snapshots (#4639) · 2b5b7bc7
      Maysam Yabandeh 提交于
      Summary:
      When evicting an entry form the commit_cache, it is verified against the list of old snapshots to see if it overlaps with any. The list of old snapshots is split into two lists: an efficient concurrent cache and an slow vector protected by a lock. The patch fixes a bug that would stop the search in the cache if it finds any and yet would not include the larger snapshots in the slower list.
      An extra info log entry is also removed. The condition to trigger that although very rare is still feasible and should not spam the LOG when that happens.
      Fixes #4621
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4639
      
      Differential Revision: D12934989
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 4e0fe8147ba292b554ae78e94c21c2ef31e03e2d
      2b5b7bc7
    • A
      Add DB property for SST files kept from deletion (#4618) · fffac43c
      Andrew Kryczka 提交于
      Summary:
      This property can help debug why SST files aren't being deleted. Previously we only had the property "rocksdb.is-file-deletions-enabled". However, even when that returned true, obsolete SSTs may still not be deleted due to the coarse-grained mechanism we use to prevent newly created SSTs from being accidentally deleted. That coarse-grained mechanism uses a lower bound file number for SSTs that should not be deleted, and this property exposes that lower bound.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4618
      
      Differential Revision: D12898179
      
      Pulled By: ajkr
      
      fbshipit-source-id: fe68acc041ddbcc9276bbd48976524d95aafc776
      fffac43c
  28. 03 11月, 2018 1 次提交
  29. 31 10月, 2018 1 次提交
    • A
      Promote rocksdb.{deleted.keys,merge.operands} to main table properties (#4594) · eaaf1a6f
      Abhishek Madan 提交于
      Summary:
      Since the number of range deletions are reported in
      TableProperties, it is confusing to not report the number of merge
      operands and point deletions as top-level properties; they are
      accessible through the public API, but since they are not the "main"
      properties, they do not appear in aggregated table properties, or the
      string representation of table properties.
      
      This change promotes those two property keys to
      `rocksdb/table_properties.h`, adds corresponding uint64 members for
      them, deprecates the old access methods `GetDeletedKeys()` and
      `GetMergeOperands()` (though they are still usable for now), and removes
      `InternalKeyPropertiesCollector`. The property key strings are the same
      as before this change, so this should be able to read DBs written from older
      versions (though I haven't tested this yet).
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4594
      
      Differential Revision: D12826893
      
      Pulled By: abhimadan
      
      fbshipit-source-id: 9e4e4fbdc5b0da161c89582566d184101ba8eb68
      eaaf1a6f
  30. 27 10月, 2018 2 次提交