1. 08 9月, 2014 1 次提交
  2. 06 9月, 2014 6 次提交
  3. 05 9月, 2014 5 次提交
  4. 04 9月, 2014 1 次提交
    • L
      fix a few compile warnings · ef5b3847
      liuhuahang 提交于
      1, const qualifiers on return types make no sense and will trigger a compile warning: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
      
      2, class HistogramImpl has virtual functions and thus should have a virtual destructor
      
      3, with some toolchain, the macro __STDC_FORMAT_MACROS is predefined and thus should be checked before define
      
      Change-Id: I69747a03bfae88671bfbb2637c80d17600159c99
      Signed-off-by: Nliuhuahang <liuhuahang@zerus.co>
      ef5b3847
  5. 03 9月, 2014 5 次提交
    • L
      call SanitizeDBOptionsByCFOptions() in the right place · 9b58c73c
      Lei Jin 提交于
      Summary: It only covers Open() with default column family right now
      
      Test Plan: make release
      
      Reviewers: igor, yhchiang, sdong
      
      Reviewed By: sdong
      
      Subscribers: leveldb
      
      Differential Revision: https://reviews.facebook.net/D22467
      9b58c73c
    • I
      Ignore missing column families · a84234a6
      Igor Canadi 提交于
      Summary:
      Before this diff, whenever we Write to non-existing column family, Write() would fail.
      
      This diff adds an option to not fail a Write() when WriteBatch points to non-existing column family. MongoDB said this would be useful for them, since they might have a transaction updating an index that was dropped by another thread. This way, they don't have to worry about checking if all indexes are alive on every write. They don't care if they lose writes to dropped index.
      
      Test Plan: added a small unit test
      
      Reviewers: sdong, yhchiang, ljin
      
      Reviewed By: ljin
      
      Subscribers: leveldb
      
      Differential Revision: https://reviews.facebook.net/D22143
      a84234a6
    • F
      fix dropping column family bug · 8438a193
      Feng Zhu 提交于
      Summary: 1. db/db_impl.cc:2324 (DBImpl::BackgroundCompaction) should not raise bg_error_ when column family is dropped during compaction.
      
      Test Plan: 1. db_stress
      
      Reviewers: ljin, yhchiang, dhruba, igor, sdong
      
      Reviewed By: igor
      
      Subscribers: leveldb
      
      Differential Revision: https://reviews.facebook.net/D22653
      8438a193
    • T
      Refactor PerfStepTimer to stop on destruct · 6614a484
      Torrie Fischer 提交于
      This eliminates the need to remember to call PERF_TIMER_STOP when a section has
      been timed. This allows more useful design with the perf timers and enables
      possible return value optimizations. Simplistic example:
      
      class Foo {
        public:
          Foo(int v) : m_v(v);
        private:
          int m_v;
      }
      
      Foo makeFrobbedFoo(int *errno)
      {
        *errno = 0;
        return Foo();
      }
      
      Foo bar(int *errno)
      {
        PERF_TIMER_GUARD(some_timer);
      
        return makeFrobbedFoo(errno);
      }
      
      int main(int argc, char[] argv)
      {
        Foo f;
        int errno;
      
        f = bar(&errno);
      
        if (errno)
          return -1;
        return 0;
      }
      
      After bar() is called, perf_context.some_timer would be incremented as if
      Stop(&perf_context.some_timer) was called at the end, and the compiler is still
      able to produce optimizations on the return value from makeFrobbedFoo() through
      to main().
      6614a484
    • I
      Fix ios compile · 990df99a
      Igor Canadi 提交于
      Summary: We need to set contbuild for this :)
      
      Test Plan: compiles
      
      Reviewers: sdong, yhchiang, ljin
      
      Reviewed By: ljin
      
      Subscribers: leveldb
      
      Differential Revision: https://reviews.facebook.net/D22701
      990df99a
  6. 02 9月, 2014 1 次提交
    • I
      Don't let flush preempt compaction in certain cases · 7dcadb1d
      Igor Canadi 提交于
      Summary:
      I have an application configured with 16 background threads. Write rates are high. L0->L1 compactions is very slow and it limits the concurrency of the system. While it's happening, other 15 threads are idle. However, when there is a need of a flush, that one thread busy with L0->L1 is doing flush, instead of any other 15 threads that are just sitting there.
      
      This diff prevents that. If there are threads that are idle, we don't let flush preempt compaction.
      
      Test Plan: Will run stress test
      
      Reviewers: ljin, sdong, yhchiang
      
      Reviewed By: sdong, yhchiang
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D22299
      7dcadb1d
  7. 31 8月, 2014 1 次提交
  8. 30 8月, 2014 2 次提交
    • T
      ForwardIterator: reset incomplete iterators on Seek() · 0f9c43ea
      Tomislav Novak 提交于
      Summary:
      When reading from kBlockCacheTier, ForwardIterator's internal child iterators
      may end up in the incomplete state (read was unable to complete without doing
      disk I/O). `ForwardIterator::status()` will correctly report that; however, the
      iterator may be stuck in that state until all sub-iterators are rebuilt:
      
        * `NeedToSeekImmutable()` may return false even if some sub-iterators are
          incomplete
        * one of the child iterators may be an empty iterator without any state other
          that the kIncomplete status (created using `NewErrorIterator()`); seeking on
          any such iterator has no effect -- we need to construct it again
      
      Akin to rebuilding iterators after a superversion bump, this diff makes forward
      iterator reset all incomplete child iterators when `Seek()` or `Next()` are
      called.
      
      Test Plan: TEST_TMPDIR=/dev/shm/rocksdbtest ROCKSDB_TESTS=TailingIterator ./db_test
      
      Reviewers: igor, sdong, ljin
      
      Reviewed By: ljin
      
      Subscribers: lovro, march, leveldb
      
      Differential Revision: https://reviews.facebook.net/D22575
      0f9c43ea
    • L
      reduce recordTick overhead in compaction loop · 722d80c3
      Lei Jin 提交于
      Summary: It is too expensive to bump ticker to every key/vaue pair
      
      Test Plan: make release
      
      Reviewers: sdong, yhchiang, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb
      
      Differential Revision: https://reviews.facebook.net/D22527
      722d80c3
  9. 29 8月, 2014 3 次提交
    • F
      remove_internal_filter_policy · 1d23b5c4
      Feng Zhu 提交于
      Summary:
      1. remove class InternalFilterPolicy in db/dbformat.h
      2. Transformation from internal key to user key is done in filter_block.cc
      3. This is a preparation for patch D20979
      
      Test Plan:
      make all check
      valgrind ./db_test
      
      Reviewers: igor, yhchiang, ljin, sdong
      
      Reviewed By: sdong
      
      Subscribers: leveldb
      
      Differential Revision: https://reviews.facebook.net/D22509
      1d23b5c4
    • I
      Don't let other compactions run when manual compaction runs · d977e555
      Igor Canadi 提交于
      Summary:
      Based on discussions from t4982833. This is just a short-term fix, I plan to revamp manual compaction process as part of t4982812.
      
      Also, I think we should schedule automatic compactions at the very end of manual compactions, not when we're done with one level. I made that change as part of this diff. Let me know if you disagree.
      
      Test Plan: make check for now
      
      Reviewers: sdong, tnovak, yhchiang, ljin
      
      Reviewed By: yhchiang
      
      Subscribers: leveldb
      
      Differential Revision: https://reviews.facebook.net/D22401
      d977e555
    • I
      Fix ios compile · d5bd6c77
      Igor Canadi 提交于
      Summary: No __thread for ios.
      
      Test Plan: compile works for ios now
      
      Reviewers: ljin, dhruba
      
      Reviewed By: dhruba
      
      Subscribers: leveldb
      
      Differential Revision: https://reviews.facebook.net/D22491
      d5bd6c77
  10. 28 8月, 2014 1 次提交
  11. 27 8月, 2014 5 次提交
  12. 26 8月, 2014 3 次提交
  13. 23 8月, 2014 1 次提交
    • I
      Fix concurrency issue in CompactionPicker · 42ea7952
      Igor Canadi 提交于
      Summary:
      I am currently working on a project that uses RocksDB. While debugging some perf issues, I came up across interesting compaction concurrency issue. Namely, I had 15 idle threads and a good comapction to do, but CompactionPicker returned "Compaction nothing to do". Here's how Internal stats looked:
      
          2014/08/22-08:08:04.551982 7fc7fc3f5700 ------- DUMPING STATS -------
          2014/08/22-08:08:04.552000 7fc7fc3f5700
          ** Compaction Stats [default] **
          Level   Files   Size(MB) Score Read(GB)  Rn(GB) Rnp1(GB) Write(GB) Wnew(GB) RW-Amp W-Amp Rd(MB/s) Wr(MB/s)  Rn(cnt) Rnp1(cnt) Wnp1(cnt) Wnew(cnt)  Comp(sec) Comp(cnt) Avg(sec) Stall(sec) Stall(cnt) Avg(ms)
          ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            L0     7/5        353   1.0      0.0     0.0      0.0       2.3      2.3    0.0   0.0      0.0      9.4        0         0         0         0        247        46    5.359       8.53          1 8526.25
            L1     2/2         86   1.3      2.6     1.9      0.7       2.6      1.9    2.7   1.3     24.3     24.0       39        19        71        52        109        11    9.938       0.00          0    0.00
            L2    26/0        833   1.3      5.7     1.7      4.0       5.2      1.2    6.3   3.0     15.6     14.2       47       112       147        35        373        44    8.468       0.00          0    0.00
            L3    12/0        505   0.1      0.0     0.0      0.0       0.0      0.0    0.0   0.0      0.0      0.0        0         0         0         0          0         0    0.000       0.00          0    0.00
           Sum    47/7       1778   0.0      8.3     3.6      4.6      10.0      5.4    8.1   4.4     11.6     14.1       86       131       218        87        728       101    7.212       8.53          1 8526.25
           Int     0/0          0   0.0      2.4     0.8      1.6       2.7      1.2   11.5   6.1     12.0     13.6       20        43        63        20        203        23    8.845       0.00          0    0.00
          Flush(GB): accumulative 2.266, interval 0.444
          Stalls(secs): 0.000 level0_slowdown, 0.000 level0_numfiles, 8.526 memtable_compaction, 0.000 leveln_slowdown_soft, 0.000 leveln_slowdown_hard
          Stalls(count): 0 level0_slowdown, 0 level0_numfiles, 1 memtable_compaction, 0 leveln_slowdown_soft, 0 leveln_slowdown_hard
      
          ** DB Stats **
          Uptime(secs): 336.8 total, 60.4 interval
          Cumulative writes: 61584000 writes, 6480589 batches, 9.5 writes per batch, 1.39 GB user ingest
          Cumulative WAL: 0 writes, 0 syncs, 0.00 writes per sync, 0.00 GB written
          Interval writes: 11235257 writes, 1175050 batches, 9.6 writes per batch, 259.9 MB user ingest
          Interval WAL: 0 writes, 0 syncs, 0.00 writes per sync, 0.00 MB written
      
      To see what happened, go here: https://github.com/facebook/rocksdb/blob/47b452cfcf9b1487d41f886a98bc0d6f95587e90/db/compaction_picker.cc#L430
      * The for loop started with level 1, because it has the worst score.
      * PickCompactionBySize on L429 returned nullptr because all files were being compacted
      * ExpandWhileOverlapping(c) returned true (because that's what it does when it gets nullptr!?)
      * for loop break-ed, never trying compactions for level 2 :( :(
      
      This bug was present at least since January. I have no idea how we didn't find this sooner.
      
      Test Plan:
      Unit testing compaction picker is hard. I tested this by running my service and observing L0->L1 and L2->L3 compactions in parallel. However, for long-term, I opened the task #4968469. @yhchiang is currently refactoring CompactionPicker, hopefully the new version will be unit-testable ;)
      
      Here's how my compactions look like after the patch:
      
          2014/08/22-08:50:02.166699 7f3400ffb700 ------- DUMPING STATS -------
          2014/08/22-08:50:02.166722 7f3400ffb700
          ** Compaction Stats [default] **
          Level   Files   Size(MB) Score Read(GB)  Rn(GB) Rnp1(GB) Write(GB) Wnew(GB) RW-Amp W-Amp Rd(MB/s) Wr(MB/s)  Rn(cnt) Rnp1(cnt) Wnp1(cnt) Wnew(cnt)  Comp(sec) Comp(cnt) Avg(sec) Stall(sec) Stall(cnt) Avg(ms)
          ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            L0     8/5        404   1.5      0.0     0.0      0.0       4.3      4.3    0.0   0.0      0.0      9.6        0         0         0         0        463        88    5.260       0.00          0    0.00
            L1     2/2         60   0.9      4.8     3.9      0.8       4.7      3.9    2.4   1.2     23.9     23.6       80        23       131       108        204        19   10.747       0.00          0    0.00
            L2    23/3        697   1.0     11.6     3.5      8.1      10.9      2.8    6.4   3.1     17.7     16.6       95       242       317        75        669        92    7.268       0.00          0    0.00
            L3    58/14      2207   0.3      6.2     1.6      4.6       5.9      1.3    7.4   3.6     14.6     13.9       43       121       159        38        436        36   12.106       0.00          0    0.00
           Sum    91/24      3368   0.0     22.5     9.1     13.5      25.8     12.4   11.2   6.0     13.0     14.9      218       386       607       221       1772       235    7.538       0.00          0    0.00
           Int     0/0          0   0.0      3.2     0.9      2.3       3.6      1.3   15.3   8.0     12.4     13.7       24        66        89        23        266        27    9.838       0.00          0    0.00
          Flush(GB): accumulative 4.336, interval 0.444
          Stalls(secs): 0.000 level0_slowdown, 0.000 level0_numfiles, 0.000 memtable_compaction, 0.000 leveln_slowdown_soft, 0.000 leveln_slowdown_hard
          Stalls(count): 0 level0_slowdown, 0 level0_numfiles, 0 memtable_compaction, 0 leveln_slowdown_soft, 0 leveln_slowdown_hard
      
          ** DB Stats **
          Uptime(secs): 577.7 total, 60.1 interval
          Cumulative writes: 116960736 writes, 11966220 batches, 9.8 writes per batch, 2.64 GB user ingest
          Cumulative WAL: 0 writes, 0 syncs, 0.00 writes per sync, 0.00 GB written
          Interval writes: 11643735 writes, 1206136 batches, 9.7 writes per batch, 269.2 MB user ingest
          Interval WAL: 0 writes, 0 syncs, 0.00 writes per sync, 0.00 MB written
      
      Yay for concurrent L0->L1 and L2->L3 compactions!
      
      Reviewers: sdong, yhchiang, ljin
      
      Reviewed By: yhchiang
      
      Subscribers: yhchiang, leveldb
      
      Differential Revision: https://reviews.facebook.net/D22305
      42ea7952
  14. 21 8月, 2014 4 次提交
  15. 20 8月, 2014 1 次提交