1. 30 1月, 2019 2 次提交
  2. 29 1月, 2019 5 次提交
  3. 26 1月, 2019 2 次提交
  4. 25 1月, 2019 2 次提交
  5. 24 1月, 2019 8 次提交
  6. 23 1月, 2019 5 次提交
    • Z
      add cast to avoid loss of precision error (#4906) · cbe02392
      Zhongyi Xie 提交于
      Summary:
      this PR address the following error:
      > tools/db_bench_tool.cc:4776:68: error: implicit conversion loses integer precision: 'int64_t' (aka 'long') to 'unsigned int' [-Werror,-Wshorten-64-to-32]
              s = db_with_cfh->db->Put(write_options_, key, gen.Generate(value_size));
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4906
      
      Differential Revision: D13780185
      
      Pulled By: miasantreble
      
      fbshipit-source-id: 1c83a77d341099518c72f0f4a63e97ab9c4784b3
      cbe02392
    • S
      Deleting Blob files also goes through SstFileManager (#4904) · 08b8cea6
      Siying Dong 提交于
      Summary:
      Right now, deleting blob files is not rate limited, even if SstFileManger is specified.
      On the other hand, rate limiting blob deletion is not supported. With this change, Blob file
      deletion will go through SstFileManager too.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4904
      
      Differential Revision: D13772545
      
      Pulled By: siying
      
      fbshipit-source-id: bd1b1d0beb26d5167385e00b7ecb8b94b879de84
      08b8cea6
    • P
      Add load() statements to TARGETS files · b2ba0685
      Philip Jameson 提交于
      Reviewed By: luciang
      
      Differential Revision: D13733578
      
      fbshipit-source-id: 556c115935aa42c1da85ec0e91199b9f198fc467
      b2ba0685
    • S
      Remove unused Blob WAL filter (#4896) · 8189c184
      Sagar Vemuri 提交于
      Summary:
      Remove unused blob WAL filter so that users are not confused.
      I was initially under the impression that we have WAL Filter support in BlobDB.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4896
      
      Differential Revision: D13725709
      
      Pulled By: sagar0
      
      fbshipit-source-id: f997d7546e138a474036e88b957907cc714327f1
      8189c184
    • Z
      Generate mixed workload with Get, Put, Seek in db_bench (#4788) · ce8e88d2
      Zhichao Cao 提交于
      Summary:
      Based on the specific workload models (key access distribution, value size distribution, and iterator scan length distribution, the QPS variation), the MixGraph benchmark generate the synthetic workload according to these distributions which can reflect the real-world workload characteristics.
      
      After user enable the tracing function, they will get the trace file. By analyzing the trace file with the trace_analyzer tool, user can generate a set of statistic data files including. The *_accessed_key_stats.txt,  *-accessed_value_size_distribution.txt, *-iterator_length_distribution.txt, and *-qps_stats.txt are mainly used to fit the Matlab model fitting. After that, user can get the parameters of the workload distributions (the modeling details are described: [here](https://github.com/facebook/rocksdb/wiki/RocksDB-Trace%2C-Replay%2C-and-Analyzer))
      
      The key access distribution follows the The two-term power model. The probability density function is: `f(x) = ax^{b}+c`. The corresponding parameters are key_dist_a, key_dist_b, and key_dist_c in db_bench
      
      For the value size distribution and iterator scan length distribution, they both follow the Generalized Pareto Distribution. The probability density function is `f(x) = (1/sigma)(1+k*(x-theta)/sigma))^{-1-1/k)`. The parameters are: value_k, value_theta, value_sigma and iter_k, iter_theta, iter_sigma. For more information about the Generalized Pareto Distribution, users can find the [wiki](https://en.wikipedia.org/wiki/Generalized_Pareto_distribution) and [Matalb page](https://www.mathworks.com/help/stats/generalized-pareto-distribution.html)
      
      As for the QPS, it follows the diurnal pattern. So Sine is a good model to fit it. `F(x) = sine_a*sin(sine_b*x + sine_c) + sine_d`. The trace_will tell you the average QPS in the print out resutls, which is sine_d. After user fit the "*-qps_stats.txt" to the Matlab model, user can get the sine_a, sine_b, and sine_c. By using the 4 parameters, user can control the QPS variation including the period, average, changes.
      
      To use the bench mark, user can indicate the following parameters as examples:
      ```
      -benchmarks="mixgraph" -key_dist_a=0.002312 -key_dist_b=0.3467 -value_k=0.9233 -value_sigma=226.4092 -iter_k=2.517 -iter_sigma=14.236 -mix_get_ratio=0.7 -mix_put_ratio=0.25 -mix_seek_ratio=0.05 -sine_mix_rate_interval_milliseconds=500 -sine_a=15000 -sine_b=1 -sine_d=20000
      ```
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4788
      
      Differential Revision: D13573940
      
      Pulled By: sagar0
      
      fbshipit-source-id: e184c27e07b4f1bc0b436c2be36c5090c1fb0222
      ce8e88d2
  7. 20 1月, 2019 1 次提交
  8. 19 1月, 2019 3 次提交
    • A
      Digest ZSTD compression dictionary once when writing SST file (#4849) · 01013ae7
      Andrew Kryczka 提交于
      Summary:
      This is essentially a re-submission of #4251 with a few improvements:
      
      - Split `CompressionDict` into two separate classes: `CompressionDict` and `UncompressionDict`
      - Eliminated `Init` functions. Instead do all initialization work in constructors.
      - Added test case for parallel DB open, which is the scenario where #4251 failed under TSAN.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4849
      
      Differential Revision: D13606039
      
      Pulled By: ajkr
      
      fbshipit-source-id: 08c236059798c710db9cbf545fce0f371232d447
      01013ae7
    • Y
      WritePrepared: fix two versions in compaction see different status for released snapshots (#4890) · b1ad6ebb
      Yi Wu 提交于
      Summary:
      Fix how CompactionIterator::findEarliestVisibleSnapshots handles released snapshot. It fixing the two scenarios:
      
      Scenario 1:
      key1 has two values v1 and v2. There're two snapshots s1 and s2 taken after v1 and v2 are committed. Right after compaction output v2, s1 is released. Now findEarliestVisibleSnapshot may see s1 being released, and return the next snapshot, which is s2. That's larger than v2's earliest visible snapshot, which was s1.
      The fix: the only place we check against last snapshot and current key snapshot is when we decide whether to compact out a value if it is hidden by a later value. In the check if we see current snapshot is even larger than last snapshot, we know last snapshot is released, and we are safe to compact out current key.
      
      Scenario 2:
      key1 has two values v1 and v2. there are two snapshots s1 and s2 taken after v1 and v2 are committed. During compaction before we process the key, s1 is released. When compaction process v2, snapshot checker may return kSnapshotReleased, and the earliest visible snapshot for v2 become s2. When compaction process v1, snapshot checker may return kIsInSnapshot (for WritePrepared transaction, it could be because v1 is still in commit cache). The result will become inconsistent here.
      The fix: remember the set of released snapshots ever reported by snapshot checker, and ignore them when finding result for findEarliestVisibleSnapshot.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4890
      
      Differential Revision: D13705538
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: e577f0d9ee1ff5a6035f26859e56902ecc85a5a4
      b1ad6ebb
    • M
      WritePrepared: commit of delayed prepared entries (#4894) · 7fd9813b
      Maysam Yabandeh 提交于
      Summary:
      Here is the order of ops in a commit: 1) update commit cache 2) publish seq, 3) RemovePrepared. In case of a delayed prepared, there will be a gap between when the commit is visible to snapshots until delayed_prepared_ is cleaned up. To tell apart this case from a delayed uncommitted txn from, the commit entry of a delayed prepared is also stored in delayed_prepared_commits_, which is updated before publishing the commit.
      Also logic in GetSnapshotInternal that ensures that each new snapshot is always larger than max_evicted_seq_ is updated to check against the upcoming value of max_evicted_seq_ rather than its current one. This is because AdvanceMaxEvictedSeq gets the list of snapshots lower than the new max, before updating max_evicted_seq_.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4894
      
      Differential Revision: D13726988
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 1e70d78061b50c944c9816bf4b6dac405ab4ccd3
      7fd9813b
  9. 18 1月, 2019 2 次提交
  10. 17 1月, 2019 3 次提交
  11. 16 1月, 2019 5 次提交
    • Y
      WritePrepared: Fix visible key compacted out by compaction (#4883) · 5d4fddfa
      Yi Wu 提交于
      Summary:
      With WritePrepared transaction, flush/compaction can contain uncommitted keys, and those keys can get committed during compaction. If a snapshot is taken before the key is committed, it should not see the key. On the other hand, compaction grab the list of snapshots at its beginning, and only consider those snapshots to dedup keys. Consider the case:
      ```
      seq = 1: put "foo" = "bar"
      seq = 2: transaction T: delete "foo", prepare
      seq = 3: compaction start
      seq = 4: take snapshot S
      seq = 5: transaction T: commit.
      ...
      seq = N: compaction iterator reached key "foo".
      ```
      When compaction start, the list of snapshot is empty. Compaction doesn't take snapshot S into account. When it reached "foo", transaction T is committed. Compaction may think the value "foo=bar" is not visible by any snapshot (which is wrong), and compact the value out.
      
      The fix is to explicitly take a snapshot before compaction grabbing the list of snapshots. Compaction will then has to keep keys visible to this snapshot.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4883
      
      Differential Revision: D13668775
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 1cab9615f94b7d3e8522cc3d44c3a14c7d4720e4
      5d4fddfa
    • M
      WritePrepared: snapshot should be larger than max_evicted_seq_ (#4886) · cad99a60
      Maysam Yabandeh 提交于
      Summary:
      The AdvanceMaxEvictedSeq algorithm assumes that new snapshots always have sequence number larger than the last max_evicted_seq_. To enforce this assumption we make two changes:
      i) max is not advanced beyond the last published seq, with the exception that the evicted commit entry itself is not published yet, which is quite rare.
      ii) When obtaining the snapshot if the max_evicted_seq_ is not published yet, commit a dummy entry so that it waits for it to be published and also increased the latest published seq by one above the max.
      To test these non-realistic corner cases we create a commit cache with size 1 so that every single commit results into eviction.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4886
      
      Differential Revision: D13685270
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: 5461bc09c2a9b75798bfcb9853a256c81cdac0b0
      cad99a60
    • S
      Improve Error Message When wal_dir doesn't exist (#4874) · 7d13f307
      Siying Dong 提交于
      Summary:
      Right now the error mesage when options.wal_dir doesn't exist is not helpful to users. Be more specific
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4874
      
      Differential Revision: D13642425
      
      Pulled By: siying
      
      fbshipit-source-id: 9a3172ed0f799af233b0f3b2e5e35bc7ce04c7b5
      7d13f307
    • S
      Correct the comment about inlined blob option (#4887) · 55e03b67
      Sagar Vemuri 提交于
      Summary:
      - Corrected a comment asserting that the values "smaller" than a min_blob_size will be inlined in the base db.
      - Also fixed the type of ttl_range_secs while dumping blobdb options.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4887
      
      Differential Revision: D13680163
      
      Pulled By: sagar0
      
      fbshipit-source-id: 306c8cf2daa52210ffc334a6924ef44ffdedf887
      55e03b67
    • Y
      WritePrepared: Fix SmallestUnCommittedSeq() doesn't check delayed_prepared (#4867) · d50c10ed
      Yi Wu 提交于
      Summary:
      When prepared_txns_ heap is empty, SmallestUnCommittedSeq() should check delayed_prepared_ set as well.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4867
      
      Differential Revision: D13632134
      
      Pulled By: maysamyabandeh
      
      fbshipit-source-id: b0423bb0a58dc95f1e636d5ed3f6e619df801fb7
      d50c10ed
  12. 12 1月, 2019 2 次提交
    • Y
      Make a copy of MutableCFOptions to avoid race condition (#4876) · 301da345
      Yanqin Jin 提交于
      Summary:
      If we do not do this, then reading MutableCFOptions may have a race condition
      with SetOptions which modifies MutableCFOptions.
      
      Also reserve space in advance for vectors to avoid reallocation changing the
      address of its elements.
      
      Test plan
      ```
      $make clean && make -j32 all check
      $make clean && COMPILE_WITH_TSAN=1 make -j32 all check
      $make clean && COMPILE_WITH_ASAN=1 make -j32 all check
      ```
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4876
      
      Differential Revision: D13644500
      
      Pulled By: riversand963
      
      fbshipit-source-id: 4b8112c5c819d5a2922bb61ad1521b3d2fb2fd47
      301da345
    • S
      With ldb --try_load_options and wal_dir doesn't exist, ignore it (#4875) · 4e37251b
      Siying Dong 提交于
      Summary:
      LDB is frequently used to exam data copied. wal_dir in option file is not modified and it usually points to the path it copied from.
      The user experience will be better if when ldb sees wal_dir pointed by the option file doesn't exist, rather than fail, just ignore it.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/4875
      
      Differential Revision: D13643173
      
      Pulled By: siying
      
      fbshipit-source-id: 2e64d4ea2ec49a6794b9a706b7fc1ba901128bb8
      4e37251b