1. 17 12月, 2016 1 次提交
  2. 02 12月, 2016 1 次提交
  3. 30 11月, 2016 1 次提交
  4. 19 11月, 2016 1 次提交
  5. 17 11月, 2016 1 次提交
    • Y
      Introduce Lua Extension: RocksLuaCompactionFilter · 647eafdc
      Yueh-Hsuan Chiang 提交于
      Summary:
      This diff includes an implementation of CompactionFilter that allows
      users to write CompactionFilter in Lua.  With this ability, users can
      dynamically change compaction filter logic without requiring building
      the rocksdb binary and restarting the database.
      
      To compile, WITH_LUA_PATH must be specified to the base directory
      of lua.
      Closes https://github.com/facebook/rocksdb/pull/1478
      
      Differential Revision: D4150138
      
      Pulled By: yhchiang
      
      fbshipit-source-id: ed84222
      647eafdc
  6. 16 11月, 2016 1 次提交
  7. 14 11月, 2016 1 次提交
    • Y
      Optimize sequential insert into memtable - Part 1: Interface · 1ea79a78
      Yi Wu 提交于
      Summary:
      Currently our skip-list have an optimization to speedup sequential
      inserts from a single stream, by remembering the last insert position.
      We extend the idea to support sequential inserts from multiple streams,
      and even tolerate small reordering wihtin each stream.
      
      This PR is the interface part adding the following:
      - Add `memtable_insert_prefix_extractor` to allow specifying prefix for each key.
      - Add `InsertWithHint()` interface to memtable, to allow underlying
        implementation to return a hint of insert position, which can be later
        pass back to optimize inserts.
      - Memtable will maintain a map from prefix to hints and pass the hint
        via `InsertWithHint()` if `memtable_insert_prefix_extractor` is non-null.
      Closes https://github.com/facebook/rocksdb/pull/1419
      
      Differential Revision: D4079367
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: 3555326
      1ea79a78
  8. 01 11月, 2016 1 次提交
  9. 29 10月, 2016 1 次提交
  10. 26 10月, 2016 1 次提交
    • K
      Makefile: generate util/build_version.cc from .in file (#1384) · 60a2bbba
      Kefu Chai 提交于
      * util/build_verion.cc.in: add this file, so cmake and make can share the
        template file for generating util/build_version.cc.
      * CMakeLists.txt: also, cmake v2.8.11 does not support file(GENERATE ...),
        so we are using configure_file() for creating build_version.cc.
      * Makefile: use util/build_verion.cc.in for creating build_version.cc.
      Signed-off-by: NKefu Chai <tchaikov@gmail.com>
      60a2bbba
  11. 21 10月, 2016 1 次提交
    • I
      Support IngestExternalFile (remove AddFile restrictions) · 869ae5d7
      Islam AbdelRahman 提交于
      Summary:
      Changes in the diff
      
      API changes:
      - Introduce IngestExternalFile to replace AddFile (I think this make the API more clear)
      - Introduce IngestExternalFileOptions (This struct will encapsulate the options for ingesting the external file)
      - Deprecate AddFile() API
      
      Logic changes:
      - If our file overlap with the memtable we will flush the memtable
      - We will find the first level in the LSM tree that our file key range overlap with the keys in it
      - We will find the lowest level in the LSM tree above the the level we found in step 2 that our file can fit in and ingest our file in it
      - We will assign a global sequence number to our new file
      - Remove AddFile restrictions by using global sequence numbers
      
      Other changes:
      - Refactor all AddFile logic to be encapsulated in ExternalSstFileIngestionJob
      
      Test Plan:
      unit tests (still need to add more)
      addfile_stress (https://reviews.facebook.net/D65037)
      
      Reviewers: yiwu, andrewkr, lightmark, yhchiang, sdong
      
      Reviewed By: sdong
      
      Subscribers: jkedgar, hcz, andrewkr, dhruba
      
      Differential Revision: https://reviews.facebook.net/D65061
      869ae5d7
  12. 19 10月, 2016 1 次提交
    • A
      Compaction Support for Range Deletion · 6fbe96ba
      Andrew Kryczka 提交于
      Summary:
      This diff introduces RangeDelAggregator, which takes ownership of iterators
      provided to it via AddTombstones(). The tombstones are organized in a two-level
      map (snapshot stripe -> begin key -> tombstone). Tombstone creation avoids data
      copy by holding Slices returned by the iterator, which remain valid thanks to pinning.
      
      For compaction, we create a hierarchical range tombstone iterator with structure
      matching the iterator over compaction input data. An aggregator based on that
      iterator is used by CompactionIterator to determine which keys are covered by
      range tombstones. In case of merge operand, the same aggregator is used by
      MergeHelper. Upon finishing each file in the compaction, relevant range tombstones
      are added to the output file's range tombstone metablock and file boundaries are
      updated accordingly.
      
      To check whether a key is covered by range tombstone, RangeDelAggregator::ShouldDelete()
      considers tombstones in the key's snapshot stripe. When this function is used outside of
      compaction, it also checks newer stripes, which can contain covering tombstones. Currently
      the intra-stripe check involves a linear scan; however, in the future we plan to collapse ranges
      within a stripe such that binary search can be used.
      
      RangeDelAggregator::AddToBuilder() adds all range tombstones in the table's key-range
      to a new table's range tombstone meta-block. Since range tombstones may fall in the gap
      between files, we may need to extend some files' key-ranges. The strategy is (1) first file
      extends as far left as possible and other files do not extend left, (2) all files extend right
      until either the start of the next file or the end of the last range tombstone in the gap,
      whichever comes first.
      
      One other notable change is adding release/move semantics to ScopedArenaIterator
      such that it can be used to transfer ownership of an arena-allocated iterator, similar to
      how unique_ptr is used for malloc'd data.
      
      Depends on D61473
      
      Test Plan: compaction_iterator_test, mock_table, end-to-end tests in D63927
      
      Reviewers: sdong, IslamAbdelRahman, wanning, yhchiang, lightmark
      
      Reviewed By: lightmark
      
      Subscribers: andrewkr, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D62205
      6fbe96ba
  13. 13 10月, 2016 1 次提交
  14. 11 10月, 2016 1 次提交
  15. 29 9月, 2016 1 次提交
    • K
      cmake support for linux and osx (#1358) · 21f4bb5a
      Kefu Chai 提交于
      * enable cmake to work on linux and osx also
      
      * port part of build_detect_platform not covered by thirdparty.inc
        to cmake.
        - detect fallocate()
        - detect malloc_usable_size()
        - detect JeMalloc
        - detect snappy
      * check for asan,tsan,ubsan
      * create 'build_version.cc' in build directory.
      * add `check` target to support 'make check'.
      * add `tools` target to match its counterpart in Makefile.
      * use `date` on non-win32 platforms.
      * pass different cflags on non-win32 platforms
      * detect pthead library using FindThread cmake module.
      * enable CMP0042 to silence the cmake warning on osx
      * reorder the linked libraries. because testutillib references gtest, to
        enable the linker to find the referenced symbols, we need to put gtest
        after testutillib.
      Signed-off-by: NMarcus Watts <mwatts@redhat.com>
      Signed-off-by: NKefu Chai <kchai@redhat.com>
      
      * hash_table_bench.cc: fix build without gflags
      Signed-off-by: NKefu Chai <kchai@redhat.com>
      
      * remove gtest from librocksdb linkage
      
      testharness.cc is included in librocksdb sources, and it uses gtest. but
      gtest is not supposed to be part of the public API of librocksdb. so, in
      this change, the testharness.cc is moved out out librocksdb, and is
      built as an object target, then linked with the tools and tests instead.
      Signed-off-by: NMarcus Watts <mwatts@redhat.com>
      Signed-off-by: NKefu Chai <kchai@redhat.com>
      21f4bb5a
  16. 24 9月, 2016 1 次提交
    • Y
      Split DBOptions into ImmutableDBOptions and MutableDBOptions · 9ed928e7
      Yi Wu 提交于
      Summary: Use ImmutableDBOptions/MutableDBOptions internally and DBOptions only for user-facing APIs. MutableDBOptions is barely a placeholder for now. I'll start to move options to MutableDBOptions in following diffs.
      
      Test Plan:
        make all check
      
      Reviewers: yhchiang, IslamAbdelRahman, sdong
      
      Reviewed By: sdong
      
      Subscribers: andrewkr, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D64065
      9ed928e7
  17. 08 9月, 2016 1 次提交
  18. 06 9月, 2016 1 次提交
  19. 27 8月, 2016 1 次提交
    • I
      Expose ThreadPool under include/rocksdb/threadpool.h · e9b2af87
      Islam AbdelRahman 提交于
      Summary:
      This diff split ThreadPool to
      -ThreadPool (abstract interface exposed in include/rocksdb/threadpool.h)
      -ThreadPoolImpl (actual implementation in util/threadpool_imp.h)
      
      This allow us to expose ThreadPool to the user so we can use it as an option later
      
      Test Plan: existing unit tests
      
      Reviewers: andrewkr, yiwu, yhchiang, sdong
      
      Reviewed By: sdong
      
      Subscribers: andrewkr, dhruba
      
      Differential Revision: https://reviews.facebook.net/D62085
      e9b2af87
  20. 20 8月, 2016 2 次提交
    • Y
      LRU cache mid-point insertion · 72f8cc70
      Yi Wu 提交于
      Summary:
      Add mid-point insertion functionality to LRU cache. Caller of `Cache::Insert()` can set an additional parameter to make a cache entry have higher priority. The LRU cache will reserve at most `capacity * high_pri_pool_pct` bytes for high-pri cache entries. If `high_pri_pool_pct` is zero, the cache degenerates to normal LRU cache.
      
      Context: If we are to put index and filter blocks into RocksDB block cache, index/filter block can be swap out too early. We want to add an option to RocksDB to reserve some capacity in block cache just for index/filter blocks, to mitigate the issue.
      
      In later diffs I'll update block based table reader to use the interface to cache index/filter blocks at high priority, and expose the option to `DBOptions` and make it dynamic changeable.
      
      Test Plan: unit test.
      
      Reviewers: IslamAbdelRahman, sdong, lightmark
      
      Reviewed By: lightmark
      
      Subscribers: andrewkr, dhruba, march, leveldb
      
      Differential Revision: https://reviews.facebook.net/D61977
      72f8cc70
    • Y
      Introduce ClockCache · 4cc37f59
      Yi Wu 提交于
      Summary:
      Clock-based cache implemenetation aim to have better concurreny than
      default LRU cache. See inline comments for implementation details.
      
      Test Plan:
      Update cache_test to run on both LRUCache and ClockCache. Adding some
      new tests to catch some of the bugs that I fixed while implementing the
      cache.
      
      Reviewers: kradhakrishnan, sdong
      
      Reviewed By: sdong
      
      Subscribers: andrewkr, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D61647
      4cc37f59
  21. 11 8月, 2016 1 次提交
    • S
      [Proof-Of-Concept] RocksDB Blob Storage with a blob log file. · 8b79422b
      sdong 提交于
      Summary:
      This is a proof of concept of a RocksDB blob log file. The actual value of the Put() is appended to a blob log using normal data block format, and the handle of the block is written as the value of the key in RocksDB.
      
      The prototype only supports Put() and Get(). It doesn't support DB restart, garbage collection, Write() call, iterator, snapshots, etc.
      
      Test Plan: Add unit tests.
      
      Reviewers: arahut
      
      Reviewed By: arahut
      
      Subscribers: kradhakrishnan, leveldb, andrewkr, dhruba
      
      Differential Revision: https://reviews.facebook.net/D61485
      8b79422b
  22. 06 8月, 2016 2 次提交
    • O
      Add time series database (resubmitted) · 44f5cc57
      omegaga 提交于
      Summary: Implement a time series database that supports DateTieredCompactionStrategy. It wraps a db object and separate SST files in different column families (time windows).
      
      Test Plan: Add `date_tiered_test`.
      
      Reviewers: dhruba, sdong
      
      Reviewed By: sdong
      
      Subscribers: andrewkr, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D61653
      44f5cc57
    • S
      A utility function to help users migrate DB after options change · 7c4615cf
      sdong 提交于
      Summary: Add a utility function that trigger necessary full compaction and put output to the correct level by looking at new options and old options.
      
      Test Plan: Add unit tests for it.
      
      Reviewers: andrewkr, igor, IslamAbdelRahman
      
      Reviewed By: IslamAbdelRahman
      
      Subscribers: muthu, sumeet, leveldb, andrewkr, dhruba
      
      Differential Revision: https://reviews.facebook.net/D60783
      7c4615cf
  23. 03 8月, 2016 1 次提交
  24. 02 8月, 2016 1 次提交
    • O
      Experiments on column-aware encodings · d51dc96a
      omegaga 提交于
      Summary:
      Experiments on column-aware encodings. Supported features: 1) extract data blocks from SST file and encode with specified encodings; 2) Decode encoded data back into row format; 3) Directly extract data blocks and write in row format (without prefix encoding); 4) Get column distribution statistics for column format; 5) Dump data blocks separated by columns in human-readable format.
      
      There is still on-going work on this diff. More refactoring is necessary.
      
      Test Plan: Wrote tests in `column_aware_encoding_test.cc`. More tests should be added.
      
      Reviewers: sdong
      
      Reviewed By: sdong
      
      Subscribers: arahut, andrewkr, dhruba
      
      Differential Revision: https://reviews.facebook.net/D60027
      d51dc96a
  25. 27 7月, 2016 1 次提交
  26. 26 7月, 2016 1 次提交
  27. 22 7月, 2016 1 次提交
    • Y
      Fix flush not being commit while writing manifest · 32604e66
      Yi Wu 提交于
      Summary:
      Fix flush not being commit while writing manifest, which is a recent bug introduced by D60075.
      
      The issue:
      # Options.max_background_flushes > 1
      # Background thread A pick up a flush job, flush, then commit to manifest. (Note that mutex is released before writing manifest.)
      # Background thread B pick up another flush job, flush. When it gets to `MemTableList::InstallMemtableFlushResults`, it notices another thread is commiting, so it quit.
      # After the first commit, thread A doesn't double check if there are more flush result need to commit, leaving the second flush uncommitted.
      
      Test Plan: run the test. Also verify the new test hit deadlock without the fix.
      
      Reviewers: sdong, igor, lightmark
      
      Reviewed By: lightmark
      
      Subscribers: andrewkr, omegaga, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D60969
      32604e66
  28. 16 7月, 2016 1 次提交
    • Y
      Refactor cache.cc · 4b952535
      Yi Wu 提交于
      Summary: Refactor cache.cc so that I can plugin clock cache (D55581). Mainly move `ShardedCache` to separate file, move `LRUHandle` back to cache.cc and rename it lru_cache.cc.
      
      Test Plan:
          make check -j64
      
      Reviewers: lightmark, sdong
      
      Reviewed By: sdong
      
      Subscribers: andrewkr, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D59655
      4b952535
  29. 13 7月, 2016 1 次提交
    • Y
      Fix deadlock when trying update options when write stalls · 6ea41f85
      Yi Wu 提交于
      Summary:
      When write stalls because of auto compaction is disabled, or stop write trigger is reached,
      user may change these two options to unblock writes. Unfortunately we had issue where the write
      thread will block the attempt to persist the options, thus creating a deadlock. This diff
      fix the issue and add two test cases to detect such deadlock.
      
      Test Plan:
      Run unit tests.
      
      Also, revert db_impl.cc to master (but don't revert `DBImpl::BackgroundCompaction:Finish` sync point) and run db_options_test. Both tests should hit deadlock.
      
      Reviewers: sdong
      
      Reviewed By: sdong
      
      Subscribers: andrewkr, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D60627
      6ea41f85
  30. 30 6月, 2016 1 次提交
  31. 11 6月, 2016 1 次提交
    • S
      Merge db/slice.cc into util/slice.cc · 6faddd7c
      sdong 提交于
      Summary: It confuses some compilers to have slice.cc under multiple directories. Merge them.
      
      Test Plan: Run existing tests
      
      Reviewers: andrewkr, yhchiang, IslamAbdelRahman
      
      Reviewed By: IslamAbdelRahman
      
      Subscribers: leveldb, andrewkr, dhruba
      
      Differential Revision: https://reviews.facebook.net/D59409
      6faddd7c
  32. 10 6月, 2016 2 次提交
  33. 07 6月, 2016 1 次提交
    • K
      Persistent Read Cache (4) Interface definitions · 3070ed90
      krad 提交于
      Summary:
      This diff provides the basic interface definitions of persistent read
      cache system
      
      PersistentCacheOptions captures the persistent read cache options used to
      configure and control the system
      PersistentCacheTier provides the basic building block for constructing tiered
      cache
      PersistentTieredCache provides a logical abstraction of tiers of cache layered
      over one another
      
      Test Plan: Compile
      
      Reviewers: sdong
      
      Subscribers: andrewkr, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D57051
      3070ed90
  34. 04 6月, 2016 1 次提交
    • A
      Create env_basic_test [pluggable Env part 2] · 6e6622ab
      Andrew Kryczka 提交于
      Summary:
      Extracted basic Env-related tests from mock_env_test and memenv_test into a
      parameterized test for Envs: env_basic_test.
      
      Depends on D58449. (The dependency is here only so I can keep this series of
      diffs in a chain -- there is no dependency on that diff's code.)
      
      Test Plan: ran tests
      
      Reviewers: IslamAbdelRahman, sdong
      
      Reviewed By: sdong
      
      Subscribers: andrewkr, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D58635
      6e6622ab
  35. 03 6月, 2016 2 次提交
    • A
      Env registry for URI-based Env selection [pluggable Env part 1] · af0c9ac0
      Andrew Kryczka 提交于
      Summary:
      This enables configurable Envs without recompiling. For example, my
      next diff will make env_test test an Env created by NewEnvFromUri(). Then,
      users can determine which Env is tested simply by providing the URI for
      NewEnvFromUri() (e.g., through a CLI argument or environment variable).
      
      The registration process allows us to register any Env that is linked with the
      RocksDB library, so we can register our internal Envs as well.
      
      The registration code is inspired by our internal InitRegistry.
      
      Test Plan: new unit test
      
      Reviewers: IslamAbdelRahman, lightmark, ldemailly, sdong
      
      Reviewed By: sdong
      
      Subscribers: leveldb, dhruba, andrewkr
      
      Differential Revision: https://reviews.facebook.net/D58449
      af0c9ac0
    • K
      Add persistent cache to Windows build system · 62d54809
      krad 提交于
      Summary: Add hash table (under persistent cache) to CMake list
      
      Test Plan: Run hash_test in windows and make check in Linux
      
      Reviewers: sdong
      
      Subscribers: andrewkr, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D59151
      62d54809
  36. 24 5月, 2016 1 次提交