1. 14 2月, 2017 2 次提交
    • Y
      Make DBImpl::has_unpersisted_data_ atomic · c2247dc1
      Yi Wu 提交于
      Summary:
      Seems to me `has_unpersisted_data_` is read from read thread and write
      from write thread concurrently without synchronization. Making it an
      atomic.
      
      I update the logic not because seeing any problem with it, but it just
      feel confusing.
      Closes https://github.com/facebook/rocksdb/pull/1869
      
      Differential Revision: D4555837
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: eff2ab8
      c2247dc1
    • S
      Remove disableDataSync option · eb912a92
      Sagar Vemuri 提交于
      Summary:
      Remove disableDataSync, and another similarly named disable_data_sync options.
      This is being done to simplify options, and also because the performance gains of this feature can be achieved by other methods.
      Closes https://github.com/facebook/rocksdb/pull/1859
      
      Differential Revision: D4541292
      
      Pulled By: sagar0
      
      fbshipit-source-id: 5b3a6ca
      eb912a92
  2. 13 2月, 2017 1 次提交
  3. 11 2月, 2017 4 次提交
  4. 09 2月, 2017 4 次提交
  5. 08 2月, 2017 4 次提交
  6. 07 2月, 2017 3 次提交
    • M
      Two-level Indexes · 69d5262c
      Maysam Yabandeh 提交于
      Summary:
      Partition Index blocks and use a Partition-index as a 2nd level index.
      
      The two-level index can be used by setting
      BlockBasedTableOptions::kTwoLevelIndexSearch as the index type and
      configuring BlockBasedTableOptions::index_per_partition
      
      t15539501
      Closes https://github.com/facebook/rocksdb/pull/1814
      
      Differential Revision: D4473535
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: bffb87e
      69d5262c
    • D
      Windows thread · 0a4cdde5
      Dmitri Smirnov 提交于
      Summary:
      introduce new methods into a public threadpool interface,
      - allow submission of std::functions as they allow greater flexibility.
      - add Joining methods to the implementation to join scheduled and submitted jobs with
        an option to cancel jobs that did not start executing.
      - Remove ugly `#ifdefs` between pthread and std implementation, make it uniform.
      - introduce pimpl for a drop in replacement of the implementation
      - Introduce rocksdb::port::Thread typedef which is a replacement for std::thread.  On Posix Thread defaults as before std::thread.
      - Implement WindowsThread that allocates memory in a more controllable manner than windows std::thread with a replaceable implementation.
      - should be no functionality changes.
      Closes https://github.com/facebook/rocksdb/pull/1823
      
      Differential Revision: D4492902
      
      Pulled By: siying
      
      fbshipit-source-id: c74cb11
      0a4cdde5
    • V
      Adding GetApproximateMemTableStats method · 1aaa898c
      Vitaliy Liptchinsky 提交于
      Summary:
      Added method that returns approx num of entries as well as size for memtables.
      Closes https://github.com/facebook/rocksdb/pull/1841
      
      Differential Revision: D4511990
      
      Pulled By: VitaliyLi
      
      fbshipit-source-id: 9a4576e
      1aaa898c
  7. 04 2月, 2017 3 次提交
  8. 03 2月, 2017 4 次提交
  9. 02 2月, 2017 2 次提交
  10. 01 2月, 2017 2 次提交
  11. 28 1月, 2017 2 次提交
  12. 27 1月, 2017 5 次提交
  13. 26 1月, 2017 4 次提交
    • A
      Generalize Env registration framework · 17c11806
      Andrew Kryczka 提交于
      Summary:
      The Env registration framework supports registering client Envs and selecting which one to instantiate according to a text field. This enabled things like adding the -env_uri argument to db_bench, so the same binary could be reused with different Envs just by changing CLI config.
      
      Now this problem has come up again in a non-Env context, as I want to instantiate a client Statistics implementation from db_bench, which is configured entirely via text parameters. Also, in the future we may wish to use it for deserializing client objects when loading OPTIONS file.
      
      This diff generalizes the Env registration logic to work with arbitrary types.
      
      - Generalized registration and instantiation code by templating them
      - The entire implementation is in a header file as that's Google style guide's recommendation for template definitions
      - Pattern match with std::regex_match rather than checking prefix, which was the previous behavior
      - Rename functions/files to be non-Env-specific
      Closes https://github.com/facebook/rocksdb/pull/1776
      
      Differential Revision: D4421933
      
      Pulled By: ajkr
      
      fbshipit-source-id: 34647d1
      17c11806
    • S
      EnvPosixTestWithParam should wait for all threads to finish · 07dddd5f
      sdong 提交于
      Summary:
      If we don't wait for the threads to finish after each run, the thread queue may not be empty while the next test starts to run, which can cause unexpected behaviors.
      
      Also make some of the relaxed read/write more restrict.
      Closes https://github.com/facebook/rocksdb/pull/1590
      
      Reviewed By: AsyncDBConnMarkedDownDBException
      
      Differential Revision: D4245922
      
      Pulled By: AsyncDBConnMarkedDownDBException
      
      fbshipit-source-id: f83b74b
      07dddd5f
    • S
      Avoid logs_ operation out of DB mutex · 5dad9d6d
      sdong 提交于
      Summary:
      logs_.back() is called out of DB mutex, which can cause data race. We move the access into the DB mutex protection area.
      Closes https://github.com/facebook/rocksdb/pull/1774
      
      Reviewed By: AsyncDBConnMarkedDownDBException
      
      Differential Revision: D4417472
      
      Pulled By: AsyncDBConnMarkedDownDBException
      
      fbshipit-source-id: 2da1f1e
      5dad9d6d
    • I
      Fix CompactFiles() bug when used with CompactionFilter using SuperVersion · a7b13919
      Islam AbdelRahman 提交于
      Summary:
      GetAndRefSuperVersion() should not be called again in the same thread before ReturnAndCleanupSuperVersion() is called.
      
      If we have a compaction filter that is using DB::Get, This will happen
      ```
      CompactFiles() {
        GetAndRefSuperVersion() // -- first call
          ..
          CompactionFilter() {
            GetAndRefSuperVersion() // -- second call
            ReturnAndCleanupSuperVersion()
          }
          ..
        ReturnAndCleanupSuperVersion()
      }
      ```
      
      We solve this issue in the same way Iterator is solving it, but using GetReferencedSuperVersion()
      
      This was discovered in https://github.com/facebook/mysql-5.6/issues/427 by alxyang
      Closes https://github.com/facebook/rocksdb/pull/1803
      
      Differential Revision: D4460155
      
      Pulled By: IslamAbdelRahman
      
      fbshipit-source-id: 5e54322
      a7b13919