1. 03 11月, 2017 12 次提交
    • A
      dynamically change current memtable size · c4c1f961
      Andrew Kryczka 提交于
      Summary:
      Previously setting `write_buffer_size` with `SetOptions` would only apply to new memtables. An internal user wanted it to take effect immediately, instead of at an arbitrary future point, to prevent OOM.
      
      This PR makes the memtable's size mutable, and makes `SetOptions()` mutate it. There is one case when we preserve the old behavior, which is when memtable prefix bloom filter is enabled and the user is increasing the memtable's capacity. That's because the prefix bloom filter's size is fixed and wouldn't work as well on a larger memtable.
      Closes https://github.com/facebook/rocksdb/pull/3119
      
      Differential Revision: D6228304
      
      Pulled By: ajkr
      
      fbshipit-source-id: e44bd9d10a5f8c9d8c464bf7436070bb3eafdfc9
      c4c1f961
    • Z
      add missing else · 30e4e01e
      Zhongyi Xie 提交于
      Summary: Closes https://github.com/facebook/rocksdb/pull/3121
      
      Differential Revision: D6229415
      
      Pulled By: miasantreble
      
      fbshipit-source-id: 57c7ad2fddf5dd6b8d7e3aaf6f62348151327dfb
      30e4e01e
    • P
      Fix coverity issues in include/rocksdb · 602fe945
      Prashant D 提交于
      Summary:
      include/rocksdb/metadata.h:
      struct ColumnFamilyMetaData {
      
      CID 1322804 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
      2. uninit_member: Non-static class member file_count is not initialized in this constructor nor in any functions that it calls.
      
      struct SstFileMetaData {
              2. uninit_member: Non-static class member size is not initialized in this constructor nor in any functions that it calls.
              4. uninit_member: Non-static class member smallest_seqno is not initialized in this constructor nor in any functions that it calls.
              6. uninit_member: Non-static class member largest_seqno is not initialized in this constructor nor in any functions that it calls.
              8. uninit_member: Non-static class member num_reads_sampled is not initialized in this constructor nor in any functions that it calls.
      
      CID 1322807 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
      10. uninit_member: Non-static class member being_compacted is not initialized in this constructor nor in any functions that it calls.
      
      include/rocksdb/sst_file_writer.h:
      struct ExternalSstFileInfo {
              2. uninit_member: Non-static class member sequence_number is not initialized in this constructor nor in any functions that it calls.
              4. uninit_member: Non-static class member file_size is not initialized in this constructor nor in any functions that it calls.
              6. uninit_member: Non-static class member num_entries is not initialized in this constructor nor in any functions that it calls.
      
      CID 1351697 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
      8. uninit_member: Non-static class member version is not initialized in this constructor nor in any functions that it calls.
       31  ExternalSstFileInfo() {}
      
      include/rocksdb/utilities/transaction.h:
      explicit Transaction(const TransactionDB* db) {}
              2. uninit_member: Non-static class member log_number_ is not initialized in this constructor nor in any functions that it calls.
      
      CID 1396133 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
      4. uninit_member: Non-static class member field txn_state_._M_i is not initialized in this constructor nor in any functions that it calls.
      473  Transaction() {}
      Closes https://github.com/facebook/rocksdb/pull/3100
      
      Differential Revision: D6227651
      
      Pulled By: sagar0
      
      fbshipit-source-id: 5caa4a2cf9471d1f9c3c073f81473636e1f0aa14
      602fe945
    • Y
      Blob DB: Add compaction filter to remove expired blob index entries · 62578d80
      Yi Wu 提交于
      Summary:
      After adding expiration to blob index in #3066, we are now able to add a compaction filter to cleanup expired blob index entries.
      Closes https://github.com/facebook/rocksdb/pull/3090
      
      Differential Revision: D6183812
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: 9cb03267a9702975290e758c9c176a2c03530b83
      62578d80
    • S
      Add Memtable Read Tier to RocksJava · 76c3fbd6
      Sagar Vemuri 提交于
      Summary:
      This options was introduced in the C++ API in #1953 .
      Closes https://github.com/facebook/rocksdb/pull/3064
      
      Differential Revision: D6139010
      
      Pulled By: sagar0
      
      fbshipit-source-id: 164de11d539d174cf3afe7cd40e667049f44b0bc
      76c3fbd6
    • Y
      Blob DB: fix snapshot handling · 7bfa8803
      Yi Wu 提交于
      Summary:
      Blob db will keep blob file if data in the file is visible to an active snapshot. Before this patch it checks whether there is an active snapshot has sequence number greater than the earliest sequence in the file. This is problematic since we take snapshot on every read, if it keep having reads, old blob files will not be cleanup. Change to check if there is an active snapshot falls in the range of [earliest_sequence, obsolete_sequence) where obsolete sequence is
      1. if data is relocated to another file by garbage collection, it is the latest sequence at the time garbage collection finish
      2. otherwise, it is the latest sequence of the file
      Closes https://github.com/facebook/rocksdb/pull/3087
      
      Differential Revision: D6182519
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: cdf4c35281f782eb2a9ad6a87b6727bbdff27a45
      7bfa8803
    • Y
      Blob DB: option to enable garbage collection · f662f8f0
      Yi Wu 提交于
      Summary:
      Add an option to enable/disable auto garbage collection, where we keep counting how many keys have been evicted by either deletion or compaction and decide whether to garbage collect a blob file.
      
      Default disable auto garbage collection for now since the whole logic is not fully tested and we plan to make major change to it.
      Closes https://github.com/facebook/rocksdb/pull/3117
      
      Differential Revision: D6224756
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: cdf53bdccec96a4580a2b3a342110ad9e8864dfe
      f662f8f0
    • Y
      Blob DB: Fix flaky BlobDBTest::GCExpiredKeyWhileOverwriting test · 167ba599
      Yi Wu 提交于
      Summary:
      The test intent to wait until key being overwritten until proceed with garbage collection. It failed to wait for `PutUntil` finally finish. Fixing it.
      Closes https://github.com/facebook/rocksdb/pull/3116
      
      Differential Revision: D6222833
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: fa9b57a772b92a66cf250b44e7975c43f62f45c5
      167ba599
    • S
      Blob DB: Evict oldest blob file when close to blob db size limit · 25ac1697
      Sagar Vemuri 提交于
      Summary:
      Evict oldest blob file and put it in obsolete_files list when close to blob db size limit. The file will be delete when the `DeleteObsoleteFiles` background job runs next time.
      For now I set `kEvictOldestFileAtSize` constant, which controls when to evict the oldest file, at 90%. It could be tweaked or made into an option if really needed; I didn't want to expose it as an option pre-maturely as there are already too many :) .
      Closes https://github.com/facebook/rocksdb/pull/3094
      
      Differential Revision: D6187340
      
      Pulled By: sagar0
      
      fbshipit-source-id: 687f8262101b9301bf964b94025a2fe9d8573421
      25ac1697
    • P
      HistogramStat: Handle divide by zero situation · 3c208e76
      Prashant D 提交于
      Summary:
      The num() might return cur_num as 0 and we are making sure that
      cur_num will not be 0 down the path. The mult variable is being set to
      100.0/cur_num which makes program crash when cur_num is 0.
      Closes https://github.com/facebook/rocksdb/pull/3105
      
      Differential Revision: D6222594
      
      Pulled By: ajkr
      
      fbshipit-source-id: 986154709897ff4dbbeb0e8aa81eb8c0b2a2db76
      3c208e76
    • M
      Remove the experimental notes about partitioning · 25fbd9a9
      Maysam Yabandeh 提交于
      Summary:
      This patch will remove the existing comments that declare partitioning indexes and filters as experimental.
      Closes https://github.com/facebook/rocksdb/pull/3115
      
      Differential Revision: D6222227
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 6179ec43b22c518494051b674d91c9e1b54d4ac0
      25fbd9a9
    • M
      WritePrepared Txn: Move DB class to its own file · 60d83df2
      Maysam Yabandeh 提交于
      Summary:
      Move  WritePreparedTxnDB from pessimistic_transaction_db.h to its own header, write_prepared_txn_db.h
      Closes https://github.com/facebook/rocksdb/pull/3114
      
      Differential Revision: D6220987
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 18893fb4fdc6b809fe117dabb544080f9b4a301b
      60d83df2
  2. 02 11月, 2017 5 次提交
    • A
      fix duplicate definition of GetEntryType() · 6778690b
      Andrew Kryczka 提交于
      Summary:
      It's also defined in db/dbformat.cc per 7fe3b328
      Closes https://github.com/facebook/rocksdb/pull/3111
      
      Differential Revision: D6219140
      
      Pulled By: ajkr
      
      fbshipit-source-id: 0f2b14e41457334a4665c6b7e3f42f1a060a0f35
      6778690b
    • A
      release 5.9 · cd124215
      Andrew Kryczka 提交于
      Summary:
      updated HISTORY.md and version.h for the release.
      Closes https://github.com/facebook/rocksdb/pull/3110
      
      Differential Revision: D6218645
      
      Pulled By: ajkr
      
      fbshipit-source-id: 99ab8473e9088b02d7596e92351cce7a60a99e93
      cd124215
    • M
      WritePrepared Txn: ValidateSnapshot · 02693f64
      Maysam Yabandeh 提交于
      Summary:
      Implements ValidateSnapshot for WritePrepared txns and also adds a unit test to clarify the contract of this function.
      Closes https://github.com/facebook/rocksdb/pull/3101
      
      Differential Revision: D6199405
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: ace509934c307ea5d26f4bbac5f836d7c80fd240
      02693f64
    • M
      Added support for differential snapshots · 7fe3b328
      Mikhail Antonov 提交于
      Summary:
      The motivation for this PR is to add to RocksDB support for differential (incremental) snapshots, as snapshot of the DB changes between two points in time (one can think of it as diff between to sequence numbers, or the diff D which can be thought of as an SST file or just set of KVs that can be applied to sequence number S1 to get the database to the state at sequence number S2).
      
      This feature would be useful for various distributed storages layers built on top of RocksDB, as it should help reduce resources (time and network bandwidth) needed to recover and rebuilt DB instances as replicas in the context of distributed storages.
      
      From the API standpoint that would like client app requesting iterator between (start seqnum) and current DB state, and reading the "diff".
      
      This is a very draft PR for initial review in the discussion on the approach, i'm going to rework some parts and keep updating the PR.
      
      For now, what's done here according to initial discussions:
      
      Preserving deletes:
       - We want to be able to optionally preserve recent deletes for some defined period of time, so that if a delete came in recently and might need to be included in the next incremental snapshot it would't get dropped by a compaction. This is done by adding new param to Options (preserve deletes flag) and new variable to DB Impl where we keep track of the sequence number after which we don't want to drop tombstones, even if they are otherwise eligible for deletion.
       - I also added a new API call for clients to be able to advance this cutoff seqnum after which we drop deletes; i assume it's more flexible to let clients control this, since otherwise we'd need to keep some kind of timestamp < -- > seqnum mapping inside the DB, which sounds messy and painful to support. Clients could make use of it by periodically calling GetLatestSequenceNumber(), noting the timestamp, doing some calculation and figuring out by how much we need to advance the cutoff seqnum.
       - Compaction codepath in compaction_iterator.cc has been modified to avoid dropping tombstones with seqnum > cutoff seqnum.
      
      Iterator changes:
       - couple params added to ReadOptions, to optionally allow client to request internal keys instead of user keys (so that client can get the latest value of a key, be it delete marker or a put), as well as min timestamp and min seqnum.
      
      TableCache changes:
       - I modified table_cache code to be able to quickly exclude SST files from iterators heep if creation_time on the file is less then iter_start_ts as passed in ReadOptions. That would help a lot in some DB settings (like reading very recent data only or using FIFO compactions), but not so much for universal compaction with more or less long iterator time span.
      
      What's left:
      
       - Still looking at how to best plug that inside DBIter codepath. So far it seems that FindNextUserKeyInternal only parses values as UserKeys, and iter->key() call generally returns user key. Can we add new API to DBIter as internal_key(), and modify this internal method to optionally set saved_key_ to point to the full internal key? I don't need to store actual seqnum there, but I do need to store type.
      Closes https://github.com/facebook/rocksdb/pull/2999
      
      Differential Revision: D6175602
      
      Pulled By: mikhail-antonov
      
      fbshipit-source-id: c779a6696ee2d574d86c69cec866a3ae095aa900
      7fe3b328
    • M
      WritePrepared Txn: Optimize for recoverable state · 17731a43
      Maysam Yabandeh 提交于
      Summary:
      GetCommitTimeWriteBatch is currently used to store some state as part of commit in 2PC. In MyRocks it is specifically used to store some data that would be needed only during recovery. So it is not need to be stored in memtable right after each commit.
      This patch enables an optimization to write the GetCommitTimeWriteBatch only to the WAL. The batch will be written to memtable during recovery when the WAL is replayed. To cover the case when WAL is deleted after memtable flush, the batch is also buffered and written to memtable right before each memtable flush.
      Closes https://github.com/facebook/rocksdb/pull/3071
      
      Differential Revision: D6148023
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 2d09bae5565abe2017c0327421010d5c0d55eaa7
      17731a43
  3. 01 11月, 2017 4 次提交
  4. 31 10月, 2017 2 次提交
  5. 30 10月, 2017 1 次提交
  6. 29 10月, 2017 1 次提交
  7. 28 10月, 2017 7 次提交
    • A
      always drop tombstones compacted to bottommost level · 6a9335db
      Andrew Kryczka 提交于
      Summary:
      Problem was in bottommost compaction, when an L0->L0 compaction happened and L0 was bottommost. Then we'd preserve tombstones according to `Compaction::KeyNotExistsBeyondOutputLevel`, while zeroing seqnum according to `CompactionIterator::PrepareOutput`, thus triggering the assertion in `PrepareOutput`. To fix, we can just drop tombstones in L0->L0 when the output is "bottommost", i.e., the compaction includes the oldest L0 file and there's nothing at lower levels.
      Closes https://github.com/facebook/rocksdb/pull/3085
      
      Differential Revision: D6175742
      
      Pulled By: ajkr
      
      fbshipit-source-id: 8ab19a2e001496f362e9eb0a71757e2f6ecfdb3b
      6a9335db
    • Y
      TableProperty::oldest_key_time defaults to 0 · 84a04af9
      Yi Wu 提交于
      Summary:
      We don't propagate TableProperty::oldest_key_time on compaction and just write the default value to SST files. It is more natural to default the value to 0.
      
      Also revert db_sst_test back to before #2842.
      Closes https://github.com/facebook/rocksdb/pull/3079
      
      Differential Revision: D6165702
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: ca3ce5928d96ae79a5beb12bb7d8c640a71478a0
      84a04af9
    • I
      Mark files as trash by using .trash extension · 05993155
      Islam AbdelRahman 提交于
      Summary:
      SstFileManager move files that need to be deleted into a trash directory.
      Deprecate this behaviour and instead add ".trash" extension to files that need to be deleted
      Closes https://github.com/facebook/rocksdb/pull/2970
      
      Differential Revision: D5976805
      
      Pulled By: IslamAbdelRahman
      
      fbshipit-source-id: 27374ece4315610b2792c30ffcd50232d4c9a343
      05993155
    • Y
      Blob DB: update blob file format · 3ebb7ba7
      Yi Wu 提交于
      Summary:
      Changing blob file format and some code cleanup around the change. The change with blob log format are:
      * Remove timestamp field in blob file header, blob file footer and blob records. The field is not being use and often confuse with expiration field.
      * Blob file header now come with column family id, which always equal to default column family id. It leaves room for future support of column family.
      * Compression field in blob file header now is a standalone byte (instead of compact encode with flags field)
      * Blob file footer now come with its own crc.
      * Key length now being uint64_t instead of uint32_t
      * Blob CRC now checksum both key and value (instead of value only).
      * Some reordering of the fields.
      
      The list of cleanups:
      * Better inline comments in blob_log_format.h
      * rename ttlrange_t and snrange_t to ExpirationRange and SequenceRange respectively.
      * simplify blob_db::Reader
      * Move crc checking logic to inside blob_log_format.cc
      Closes https://github.com/facebook/rocksdb/pull/3081
      
      Differential Revision: D6171304
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: e4373e0d39264441b7e2fbd0caba93ddd99ea2af
      3ebb7ba7
    • D
      Enable cacheline_aligned_alloc() to allocate from jemalloc if enabled. · 682db813
      Dmitri Smirnov 提交于
      Summary:
      Reuse WITH_JEMALLOC option in preparation for module search unification.
        Move jemalloc overrides into a separate .cc
        Remote obsolete JEMALLOC_NOINIT option.
      Closes https://github.com/facebook/rocksdb/pull/3078
      
      Differential Revision: D6174826
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: 9970a0289b4490272d15853920d9d7531af91140
      682db813
    • P
      Fix coverity uninitialized fields warnings in lru_cache · d9240b54
      Prashant D 提交于
      Summary:
      Coverity uninitialized member variable warnings in lru_cache
      Closes https://github.com/facebook/rocksdb/pull/3082
      
      Differential Revision: D6173062
      
      Pulled By: sagar0
      
      fbshipit-source-id: 7bcfc653457bd362d46045d06527838c9a6adad6
      d9240b54
    • P
      Fix coverity issues column_family, compaction_db/iterator · 50e95a63
      Prashant D 提交于
      Summary:
      db/column_family.h :
      79  ColumnFamilyHandleInternal()
      
      CID 1322806 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)
      2. uninit_member: Non-static class member internal_cfd_ is not initialized in this constructor nor in any functions that it calls.
       80      : ColumnFamilyHandleImpl(nullptr, nullptr, nullptr) {}
      
      db/compacted_db_impl.cc:
       18CompactedDBImpl::CompactedDBImpl(
       19  const DBOptions& options, const std::string& dbname)
       20  : DBImpl(options, dbname) {
         	2. uninit_member: Non-static class member cfd_ is not initialized in this constructor nor in any functions that it calls.
         	4. uninit_member: Non-static class member version_ is not initialized in this constructor nor in any functions that it calls.
      
      CID 1396120 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)
      6. uninit_member: Non-static class member user_comparator_ is not initialized in this constructor nor in any functions that it calls.
       21}
      
      db/compaction_iterator.cc:
      9. uninit_member: Non-static class member current_user_key_sequence_ is not initialized in this constructor nor in any functions that it calls.
      11. uninit_member: Non-static class member current_user_key_snapshot_ is not initialized in this constructor nor in any functions that it calls.
      
      CID 1419855 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
      13. uninit_member: Non-static class member current_key_committed_ is not initialized in this constructor nor in any functions that it calls.
      Closes https://github.com/facebook/rocksdb/pull/3084
      
      Differential Revision: D6172999
      
      Pulled By: sagar0
      
      fbshipit-source-id: 084d73393faf8022c01359cfb445807b6a782460
      50e95a63
  8. 27 10月, 2017 4 次提交
    • P
      Fix coverity uninitialized fields warnings · 47166bae
      Prashant D 提交于
      Pulled By: ajkr
      
      Differential Revision: D6170448
      
      fbshipit-source-id: 5fd6d1608fc0df27c94d9f5059315ce7f79b8f5c
      47166bae
    • P
      Fix coverity issue for MutableDBOptions default constructor · 67b29e26
      Prashant D 提交于
      Summary:
      228MutableDBOptions::MutableDBOptions()
      229    : max_background_jobs(2),
      230      base_background_compactions(-1),
      231      max_background_compactions(-1),
      232      avoid_flush_during_shutdown(false),
      233      delayed_write_rate(2 * 1024U * 1024U),
      234      max_total_wal_size(0),
      235      delete_obsolete_files_period_micros(6ULL * 60 * 60 * 1000000),
      236      stats_dump_period_sec(600),
         	2. uninit_member: Non-static class member bytes_per_sync is not initialized in this constructor nor in any functions that it calls.
      
      CID 1419857 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
      4. uninit_member: Non-static class member wal_bytes_per_sync is not initialized in this constructor nor in any functions that it calls.
      237      max_open_files(-1) {}
      Closes https://github.com/facebook/rocksdb/pull/3069
      
      Differential Revision: D6170424
      
      Pulled By: ajkr
      
      fbshipit-source-id: 1f94e86b87611ad2330b8b1707911150978d68b8
      67b29e26
    • A
      implement lower bound for iterators · 95667383
      Andrew Kryczka 提交于
      Summary:
      - for `SeekToFirst()`, just convert it to a regular `Seek()` if lower bound is specified
      - for operations that iterate backwards over user keys (`SeekForPrev`, `SeekToLast`, `Prev`), change `PrevInternal` to check whether user key went below lower bound every time the user key changes -- same approach we use to ensure we stay within a prefix when `prefix_same_as_start=true`.
      Closes https://github.com/facebook/rocksdb/pull/3074
      
      Differential Revision: D6158654
      
      Pulled By: ajkr
      
      fbshipit-source-id: cb0e3a922e2650d2cd4d1c6e1c0f1e8b729ff518
      95667383
    • Y
      Blob DB: Inline small values in base DB · 5a2a6483
      Yi Wu 提交于
      Summary:
      Adding the `min_blob_size` option to allow storing small values in base db (in LSM tree) together with the key. The goal is to improve performance for small values, while taking advantage of blob db's low write amplification for large values.
      
      Also adding expiration timestamp to blob index. It will be useful to evict stale blob indexes in base db by adding a compaction filter. I'll work on the compaction filter in future patches.
      
      See blob_index.h for the new blob index format. There are 4 cases when writing a new key:
      * small value w/o TTL: put in base db as normal value (i.e. ValueType::kTypeValue)
      * small value w/ TTL: put (type, expiration, value) to base db.
      * large value w/o TTL: write value to blob log and put (type, file, offset, size, compression) to base db.
      * large value w/TTL: write value to blob log and put (type, expiration, file, offset, size, compression) to base db.
      Closes https://github.com/facebook/rocksdb/pull/3066
      
      Differential Revision: D6142115
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: 9526e76e19f0839310a3f5f2a43772a4ad182cd0
      5a2a6483
  9. 26 10月, 2017 3 次提交
    • A
      single-file bottom-level compaction when snapshot released · 9b18cc23
      Andrew Kryczka 提交于
      Summary:
      When snapshots are held for a long time, files may reach the bottom level containing overwritten/deleted keys. We previously had no mechanism to trigger compaction on such files. This particularly impacted DBs that write to different parts of the keyspace over time, as such files would never be naturally compacted due to second-last level files moving down. This PR introduces a mechanism for bottommost files to be recompacted upon releasing all snapshots that prevent them from dropping their deleted/overwritten keys.
      
      - Changed `CompactionPicker` to compact files in `BottommostFilesMarkedForCompaction()`. These are the last choice when picking. Each file will be compacted alone and output to the same level in which it originated. The goal of this type of compaction is to rewrite the data excluding deleted/overwritten keys.
      - Changed `ReleaseSnapshot()` to recompute the bottom files marked for compaction when the oldest existing snapshot changes, and schedule a compaction if needed. We cache the value that oldest existing snapshot needs to exceed in order for another file to be marked in `bottommost_files_mark_threshold_`, which allows us to avoid recomputing marked files for most snapshot releases.
      - Changed `VersionStorageInfo` to track the list of bottommost files, which is recomputed every time the version changes by `UpdateBottommostFiles()`. The list of marked bottommost files is first computed in `ComputeBottommostFilesMarkedForCompaction()` when the version changes, but may also be recomputed when `ReleaseSnapshot()` is called.
      - Extracted core logic of `Compaction::IsBottommostLevel()` into `VersionStorageInfo::RangeMightExistAfterSortedRun()` since logic to check whether a file is bottommost is now necessary outside of compaction.
      Closes https://github.com/facebook/rocksdb/pull/3009
      
      Differential Revision: D6062044
      
      Pulled By: ajkr
      
      fbshipit-source-id: 123d201cf140715a7d5928e8b3cb4f9cd9f7ad21
      9b18cc23
    • S
      Return write error on reaching blob dir size limit · 96e3a600
      Sagar Vemuri 提交于
      Summary:
      I found that we continue accepting writes even when the blob db goes beyond the configured blob directory size limit. Now, we return an error for writes on reaching `blob_dir_size` limit and if `is_fifo` is set to false. (We cannot just drop any file when `is_fifo` is true.)
      
      Deleting the oldest file when `is_fifo` is true will be handled in a later PR.
      Closes https://github.com/facebook/rocksdb/pull/3060
      
      Differential Revision: D6136156
      
      Pulled By: sagar0
      
      fbshipit-source-id: 2f11cb3f2eedfa94524fbfa2613dd64bfad7a23c
      96e3a600
    • I
      Fix tombstone scans in SeekForPrev outside prefix · addfe1ef
      Islam AbdelRahman 提交于
      Summary:
      When doing a Seek() or SeekForPrev() we should stop the moment we see a key with a different prefix as start if ReadOptions:: prefix_same_as_start was set to true
      
      Right now we don't stop if we encounter a tombstone outside the prefix while executing SeekForPrev()
      Closes https://github.com/facebook/rocksdb/pull/3067
      
      Differential Revision: D6149638
      
      Pulled By: IslamAbdelRahman
      
      fbshipit-source-id: 7f659862d2bf552d3c9104a360c79439ceba2f18
      addfe1ef
  10. 25 10月, 2017 1 次提交