1. 19 5月, 2015 5 次提交
    • I
      Allow flushes to run in parallel with manual compaction · b0fdda4f
      Igor Canadi 提交于
      Summary: As title. I spent some time thinking about it and I don't think there should be any issue with running manual compaction and flushes in parallel
      
      Test Plan: make check works
      
      Reviewers: rven, yhchiang, sdong
      
      Reviewed By: yhchiang, sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38355
      b0fdda4f
    • Y
      Fixed compile errors due to some gcc does not have std::map::emplace · 74f3832d
      Yueh-Hsuan Chiang 提交于
      Summary:
      Fixed the following compile errors due to some gcc does not have std::map::emplace
      
      util/thread_status_impl.cc: In static member function ‘static std::map<std::basic_string<char>, long unsigned int> rocksdb::ThreadStatus::InterpretOperationProperties(rocksdb::ThreadStatus::OperationType, const uint64_t*)’:
      util/thread_status_impl.cc:88:20: error: ‘class std::map<std::basic_string<char>, long unsigned int>’ has no member named ‘emplace’
      util/thread_status_impl.cc:90:20: error: ‘class std::map<std::basic_string<char>, long unsigned int>’ has no member named ‘emplace’
      util/thread_status_impl.cc:94:20: error: ‘class std::map<std::basic_string<char>, long unsigned int>’ has no member named ‘emplace’
      util/thread_status_impl.cc:96:20: error: ‘class std::map<std::basic_string<char>, long unsigned int>’ has no member named ‘emplace’
      util/thread_status_impl.cc:98:20: error: ‘class std::map<std::basic_string<char>, long unsigned int>’ has no member named ‘emplace’
      util/thread_status_impl.cc:101:20: error: ‘class std::map<std::basic_string<char>, long unsigned int>’ has no member named ‘emplace’
      make: *** [util/thread_status_impl.o] Error 1
      
      Test Plan: make db_bench
      
      Reviewers: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38643
      74f3832d
    • S
      Remove duplicated code · 0c8017db
      stash93 提交于
      Summary: Call Flush() function instead
      
      Test Plan: make all check
      
      Reviewers: igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D38583
      0c8017db
    • S
      DBTest.DynamicLevelMaxBytesCompactRange: make sure L0 is not empty before running compact range · fb5bdbf9
      sdong 提交于
      Summary: DBTest.DynamicLevelMaxBytesCompactRange needs to make sure L0 is not empty to properly cover the code paths we want to cover. However, current codes have a bug that might leave the condition not held. Improve the test to ensure it.
      
      Test Plan: Run the test in an environment that is used to fail. Also run it many times.
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D38631
      fb5bdbf9
    • S
      CompactRange skips levels 1 to base_level -1 for dynamic level base size · 6fa70851
      sdong 提交于
      Summary: CompactRange() now is much more expensive for dynamic level base size as it goes through all the levels. Skip those not used levels between level 0 an base level.
      
      Test Plan: Run all unit tests
      
      Reviewers: yhchiang, rven, anthony, kradhakrishnan, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D37125
      6fa70851
  2. 16 5月, 2015 4 次提交
    • Y
      Allow GetThreadList to report Flush properties. · 3f0867c0
      Yueh-Hsuan Chiang 提交于
      Summary:
      Allow GetThreadList to report Flush properties, which includes:
      * job id
      * number of bytes that has been written since flush started.
      * total size of input mem-tables
      
      Test Plan:
      ./db_bench --threads=30 --num=1000000 --benchmarks=fillrandom --thread_status_per_interval=100 --value_size=1000
      
      Sample output from db_bench which tracks same flush job
      
                ThreadID ThreadType       cfName            Operation   ElapsedTime                                         Stage        State OperationProperties
         140213879898240   High Pri      default                Flush       5789 us                    FlushJob::WriteLevel0Table              BytesMemtables 4112835 | BytesWritten 577104 | JobID 8 |
      
                ThreadID ThreadType       cfName            Operation   ElapsedTime                                         Stage        State OperationProperties
         140213879898240   High Pri      default                Flush     30.634 ms                    FlushJob::WriteLevel0Table              BytesMemtables 4112835 | BytesWritten 1734865 | JobID 8 |
      
      Reviewers: rven, igor, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38505
      3f0867c0
    • Y
      Use a better way to initialize ThreadStatus::kNumOperationProperties. · a66f643e
      Yueh-Hsuan Chiang 提交于
      Summary: Use a better way to initialize ThreadStatus::kNumOperationProperties.
      
      Test Plan: make
      
      Reviewers: sdong, rven, anthony, krishnanm86, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38547
      a66f643e
    • I
      Take a chance on a random file when choosing compaction · 7413306d
      Igor Canadi 提交于
      Summary:
      When trying to compact entire database with SuggestCompactRange(), we'll first try the left-most files. This is pretty bad, because:
      1) the left part of LSM tree will be overly compacted, but right part will not be touched
      2) First compaction will pick up the left-most file. Second compaction will try to pick up next left-most, but this will not be possible, because there's a big chance that second's file range on N+1 level is already being compacted.
      
      I observe both of those problems when running Mongo+RocksDB and trying to compact the DB to clean up tombstones. I'm unable to clean them up :(
      
      This diff adds a bit of randomness into choosing a file. First, it chooses a file at random and tries to compact that one. This should solve both problems specified here.
      
      Test Plan: make check
      
      Reviewers: yhchiang, rven, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38379
      7413306d
    • S
      Use version defined in Makefile in rocksdb_build_git_sha · 8c52788f
      sdong 提交于
      Summary: Now rocksdb_build_git_sha is determined from "git sha". It is hard if the release is not from the repository directly but from a source code copy. Change to use the versions given in Makefile.
      
      Test Plan: Run "make util/build_version.cc"
      
      Reviewers: kradhakrishnan, rven, meyering, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D38451
      8c52788f
  3. 15 5月, 2015 1 次提交
  4. 14 5月, 2015 3 次提交
  5. 13 5月, 2015 4 次提交
    • Y
      Fixed compile error in db/column_family.cc · df1f87a8
      Yueh-Hsuan Chiang 提交于
      Summary:
      Fixed the following compile error in db/column_family.cc
          db/column_family.cc:633:33: error: ‘ASSERT_GT’ was not declared in this scope
          16:14:45    ASSERT_GT(listeners.size(), 0U);
      
      Test Plan: make db_test
      
      Reviewers: igor, sdong, rven
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38367
      df1f87a8
    • Y
      Fixed a bug in EventListener::OnCompactionCompleted(). · 14431e97
      Yueh-Hsuan Chiang 提交于
      Summary:
      Fixed a bug in EventListener::OnCompactionCompleted() that returns
      incorrect list of input / output file names.
      
      Test Plan: Extend existing test in listener_test.cc
      
      Reviewers: sdong, rven, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38349
      14431e97
    • I
      Add more table properties to EventLogger · dbd95b75
      Igor Canadi 提交于
      Summary:
      Example output:
      
          {"time_micros": 1431463794310521, "job": 353, "event": "table_file_creation", "file_number": 387, "file_size": 86937, "table_info": {"data_size": "81801", "index_size": "9751", "filter_size": "0", "raw_key_size": "23448", "raw_average_key_size": "24.000000", "raw_value_size": "990571", "raw_average_value_size": "1013.890481", "num_data_blocks": "245", "num_entries": "977", "filter_policy_name": "", "kDeletedKeys": "0"}}
      
      Also fixed a bug where BuildTable() in recovery was passing Env::IOHigh argument into paranoid_checks_file parameter.
      
      Test Plan: make check + check out the output in the log
      
      Reviewers: sdong, rven, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38343
      dbd95b75
    • I
      Reset parent_index and base_index when picking files marked for compaction · b5881762
      Igor Canadi 提交于
      Summary: This caused a crash of our MongoDB + RocksDB instance. PickCompactionBySize() sets its own parent_index. We never reset this parent_index when picking PickFilesMarkedForCompactionExperimental(). So we might end up doing SetupOtherInputs() with parent_index that was set by PickCompactionBySize, although we're using compaction calculated using PickFilesMarkedForCompactionExperimental.
      
      Test Plan: Added a unit test that fails with assertion on master.
      
      Reviewers: yhchiang, rven, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38337
      b5881762
  6. 12 5月, 2015 1 次提交
    • A
      API to fetch from both a WriteBatchWithIndex and the db · 711465cc
      agiardullo 提交于
      Summary:
      Added a couple functions to WriteBatchWithIndex to make it easier to query the value of a key including reading pending writes from a batch.  (This is needed for transactions).
      
      I created write_batch_with_index_internal.h to use to store an internal-only helper function since there wasn't a good place in the existing class hierarchy to store this function (and it didn't seem right to stick this function inside WriteBatchInternal::Rep).
      
      Since I needed to access the WriteBatchEntryComparator, I moved some helper classes from write_batch_with_index.cc into write_batch_with_index_internal.h/.cc.  WriteBatchIndexEntry, ReadableWriteBatch, and WriteBatchEntryComparator are all unchanged (just moved to a different file(s)).
      
      Test Plan: Added new unit tests.
      
      Reviewers: rven, yhchiang, sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38037
      711465cc
  7. 10 5月, 2015 1 次提交
  8. 09 5月, 2015 2 次提交
  9. 08 5月, 2015 3 次提交
    • I
      rm -rf in make clean · beda81c5
      Igor Canadi 提交于
      Summary: Without this I get bunch of questions when I run `make clean`
      
      Test Plan: no more questions!
      
      Reviewers: rven, yhchiang, meyering, anthony
      
      Reviewed By: meyering, anthony
      
      Subscribers: meyering, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38145
      beda81c5
    • I
      Fix BackupEngine · 50eab9cf
      Igor Canadi 提交于
      Summary:
      In D28521 we removed GarbageCollect() from BackupEngine's constructor. The reason was that opening BackupEngine on HDFS was very slow and in most cases we didn't have any garbage. We allowed the user to call GarbageCollect() when it detects some garbage files in his backup directory.
      
      Unfortunately, this left us vulnerable to an interesting issue. Let's say we started a backup and copied files {1, 3} but the backup failed. On another host, we restore DB from backup and generate {1, 3, 5}. Since {1, 3} is already there, we will not overwrite. However, these files might be from a different database so their contents might be different. See internal task t6781803 for more info.
      
      Now, when we're copying files and we discover a file already there, we check:
      1. if the file is not referenced from any backups, we overwrite the file.
      2. if the file is referenced from other backups AND the checksums don't match, we fail the backup. This will only happen if user is using a single backup directory for backing up two different databases.
      3. if the file is referenced from other backups AND the checksums match, it's all good. We skip the copy and go copy the next file.
      
      Test Plan: Added new test to backupable_db_test. The test fails before this patch.
      
      Reviewers: sdong, rven, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D37599
      50eab9cf
    • I
      Bump to 3.11 · 962f8ba3
      Igor Canadi 提交于
      Summary: as title
      
      Test Plan: none
      
      Reviewers: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38175
      962f8ba3
  10. 07 5月, 2015 2 次提交
    • J
      Merge pull request #601 from adamretter/jdb-bench · 37bbd318
      Jörg Maier 提交于
      Small fixes to Java benchmark
      37bbd318
    • Y
      Allow GetThreadList() to report basic compaction operation properties. · 77a5a543
      Yueh-Hsuan Chiang 提交于
      Summary:
      Now we're able to show more details about a compaction in
      GetThreadList() :)
      
      This patch allows GetThreadList() to report basic compaction
      operation properties.  Basic compaction properties include:
          1. job id
          2. compaction input / output level
          3. compaction property flags (is_manual, is_deletion, .. etc)
          4. total input bytes
          5. the number of bytes has been read currently.
          6. the number of bytes has been written currently.
      
      Flush operation properties will be done in a seperate diff.
      
      Test Plan:
      /db_bench --threads=30 --num=1000000 --benchmarks=fillrandom --thread_status_per_interval=1
      
      Sample output of tracking same job:
      
                ThreadID ThreadType       cfName            Operation   ElapsedTime                                         Stage        State OperationProperties
         140664171987072    Low Pri      default           Compaction     31.357 ms     CompactionJob::FinishCompactionOutputFile              BaseInputLevel 1 | BytesRead 2264663 | BytesWritten 1934241 | IsDeletion 0 | IsManual 0 | IsTrivialMove 0 | JobID 277 | OutputLevel 2 | TotalInputBytes 3964158 |
      
                ThreadID ThreadType       cfName            Operation   ElapsedTime                                         Stage        State OperationProperties
         140664171987072    Low Pri      default           Compaction     59.440 ms     CompactionJob::FinishCompactionOutputFile              BaseInputLevel 1 | BytesRead 2264663 | BytesWritten 1934241 | IsDeletion 0 | IsManual 0 | IsTrivialMove 0 | JobID 277 | OutputLevel 2 | TotalInputBytes 3964158 |
      
                ThreadID ThreadType       cfName            Operation   ElapsedTime                                         Stage        State OperationProperties
         140664171987072    Low Pri      default           Compaction    226.375 ms                        CompactionJob::Install              BaseInputLevel 1 | BytesRead 3958013 | BytesWritten 3621940 | IsDeletion 0 | IsManual 0 | IsTrivialMove 0 | JobID 277 | OutputLevel 2 | TotalInputBytes 3964158 |
      
      Reviewers: sdong, rven, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D37653
      77a5a543
  11. 06 5月, 2015 5 次提交
    • I
      Cleanup CompactionJob · 65fe1cfb
      Igor Canadi 提交于
      Summary:
      Couple changes:
      1. instead of SnapshotList, just take a vector of snapshots
      2. don't take a separate parameter is_snapshots_supported. If there are snapshots in the list, that means they are supported. I actually think we should get rid of this notion of snapshots not being supported.
      3. don't pass in mutable_cf_options as a parameter. Lifetime of mutable_cf_options is a bit tricky to maintain, so it's better to not pass it in for the whole compaction job. We only really need it when we install the compaction results.
      
      Test Plan: make check
      
      Reviewers: sdong, rven, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D36627
      65fe1cfb
    • L
      fix crashes in stats and compaction filter for db_ttl_impl · df4130ad
      Laurent Demailly 提交于
      Summary: fix crashes in stats and compaction filter for db_ttl_impl
      
      Test Plan:
      Ran build with lots of debugging
      https://reviews.facebook.net/differential/diff/194175/
      
      Reviewers: yhchiang, igor, rven
      
      Reviewed By: igor
      
      Subscribers: rven, dhruba
      
      Differential Revision: https://reviews.facebook.net/D38001
      df4130ad
    • V
      Fix flakiness in column_family_test · 7ea76948
      Venkatesh Radhakrishnan 提交于
      Summary:
      Fixes #6840824, running "make check" on centos6 hits
      a deadlock in column_family_test
      
      Test Plan:
      seq 10000 | parallel --gnu --eta 't=/dev/shm/rdb-{}; rm -rf
      $t; mkdir $t && export TEST_TMPDIR=$t; ./column_family_test > $t/log-{}'
      Made the test deterministic by narrrowing the window for the flush.
      
      Reviewers: igor, meyering
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38079
      7ea76948
    • I
      Don't treat warnings as error when building release · a2c4cc75
      Igor Canadi 提交于
      Summary: This will reduce errors reported by open source by 90%. Developers should have warnings break their compile. Users shouldn't.
      
      Test Plan:
      make dbg:
      g++  -g -W -Wextra -Wall -Wsign-compare -Wshadow -Wno-unused-parameter -Werror -I. -I./include -std=c++11  -DROCKSDB_PLATFORM_POSIX  -DOS_LINUX -fno-builtin-memcmp -DROCKSDB_FALLOCATE_PRESENT -DSNAPPY -DGFLAGS=gflags -DZLIB -DBZIP2 -march=native   -isystem ./third-party/gtest-1.7.0/fused-src  -Woverloaded-virtual -Wn
      on-virtual-dtor -Wno-missing-field-initializers -c db/repair.cc -o db/repair.o
      
      make all:
      g++  -g -W -Wextra -Wall -Wsign-compare -Wshadow -Wno-unused-parameter -Werror -I. -I./include -std=c++11  -DROCKSDB_PLATFORM_POSIX  -DOS_LINUX -fno-builtin-memcmp -DROCKSDB_FALLOCATE_PRESENT -DSNAPPY -DGFLAGS=gflags -DZLIB -DBZIP2 -march=native   -isystem ./third-party/gtest-1.7.0/fused-src -O2 -fno-omit-frame-pointer -momit-leaf-frame-pointer -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -c db/repair.cc -o db/repair.o
      
      make static_lib:
      g++  -g -W -Wextra -Wall -Wsign-compare -Wshadow -Wno-unused-parameter -I. -I./include -std=c++11  -DROCKSDB_PLATFORM_POSIX  -DOS_LINUX -fno-builtin-memcmp -DROCKSDB_FALLOCATE_PRESENT -DSNAPPY -DGFLAGS=gflags -DZLIB -DBZIP2 -march=native   -isystem ./third-party/gtest-1.7.0/fused-src -O2 -fno-omit-frame-pointer -momit-leaf-frame-pointer -DNDEBUG -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -c db/repair.cc -o db/repair.o
      
      Reviewers: sdong, yhchiang, rven
      
      Reviewed By: rven
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D38031
      a2c4cc75
    • L
      Optimize GetRange Function · 9aa011fa
      Liangjun Feng 提交于
      Summary: Optimize GetRange Function by checking the level of the files
      
      Test Plan: pass make all check
      
      Reviewers: rven, yhchiang, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D37977
      9aa011fa
  12. 05 5月, 2015 2 次提交
  13. 03 5月, 2015 1 次提交
    • J
      build: avoid unused-variable warning · 2ab7065a
      Jim Meyering 提交于
      Summary:
      [noticed a new warning when building with the very latest gcc]
      * db/memtablerep_bench.cc (FLAGS_env): Remove declaration
      of unused varaible, to avoid this warning/error:
      
      db/memtablerep_bench.cc:135:22: error: ‘FLAGS_env’ defined but not\
        used [-Werror=unused-variable]
       static rocksdb::Env* FLAGS_env = rocksdb::Env::Default();
                            ^
      
      Test Plan: compile
      
      Reviewers: ljin, rven, igor.sugak, yhchiang, sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D37983
      2ab7065a
  14. 02 5月, 2015 3 次提交
  15. 01 5月, 2015 3 次提交