1. 17 12月, 2012 2 次提交
    • Z
      ldb: support --block_size=<4096|65536|...> and --auto_compaction=<0|1> · 7dc8bb71
      Zheng Shao 提交于
      Summary: This allows us to use ldb to do more experiments like block_size changes.
      
      Test Plan: run it by hand.
      
      Reviewers: dhruba, sheki, emayanke
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D7431
      7dc8bb71
    • Z
      manifest_dump: Add --hex=1 option · c2809753
      Zheng Shao 提交于
      Summary: Without this option, manifest_dump does not print binary keys for files in a human-readable way.
      
      Test Plan:
      ./manifest_dump --hex=1 --verbose=0 --file=/data/users/zshao/fdb_comparison/leveldb/fbobj.apprequest-0_0_original/MANIFEST-000002
      manifest_file_number 589 next_file_number 590 last_sequence 2311567 log_number 543  prev_log_number 0
      --- level 0 --- version# 0 ---
       532:1300357['0000455BABE20000' @ 2183973 : 1 .. 'FFFCA5D7ADE20000' @ 2184254 : 1]
       536:1308170['000198C75CE30000' @ 2203313 : 1 .. 'FFFCF94A79E30000' @ 2206463 : 1]
       542:1321644['0002931AA5E50000' @ 2267055 : 1 .. 'FFF77B31C5E50000' @ 2270754 : 1]
       544:1286390['000410A309E60000' @ 2278592 : 1 .. 'FFFE470A73E60000' @ 2289221 : 1]
       538:1298778['0006BCF4D8E30000' @ 2217050 : 1 .. 'FFFD77DAF7E30000' @ 2220489 : 1]
       540:1282353['00090D5356E40000' @ 2231156 : 1 .. 'FFFFF4625CE40000' @ 2231969 : 1]
      --- level 1 --- version# 0 ---
       510:2112325['000007F9C2D40000' @ 1782099 : 1 .. '146F5B67B8D80000' @ 1905458 : 1]
       511:2121742['146F8A3023D60000' @ 1824388 : 1 .. '28BC8FBB9CD40000' @ 1777993 : 1]
       512:801631['28BCD396F1DE0000' @ 2080191 : 1 .. '3082DBE9ADDB0000' @ 1989927 : 1]
      
      Reviewers: dhruba, sheki, emayanke
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D7425
      c2809753
  2. 15 12月, 2012 1 次提交
    • A
      fixing linters. · 806d4d93
      Abhishek Kona 提交于
      Summary:
      old version of linters use "lint_engine" instead of "lint.engine"
      Some bookeeping in gitignore.
      Reviewers: abhishekk
      806d4d93
  3. 13 12月, 2012 3 次提交
  4. 12 12月, 2012 1 次提交
  5. 11 12月, 2012 3 次提交
  6. 10 12月, 2012 1 次提交
    • D
      Fix a race condition while processing tasks by background threads. · 38671c4d
      Dhruba Borthakur 提交于
      Summary:
      Suppose you submit 100 background tasks one after another. The first
      enqueu task finds that the queue is empty and wakes up one worker thread.
      Now suppose that all remaining 99 work items are enqueued, they do not
      wake up any worker threads because the queue is already non-empty.
      This causes a situation when there are 99 tasks in the task queue but
      only one worker thread is processing a task while the remaining
      worker threads are waiting.
      The fix is to always wakeup one worker thread while enqueuing a task.
      
      I also added a check to count the number of elements in the queue
      to help in debugging.
      
      Test Plan: make clean check.
      
      Reviewers: chip
      
      Reviewed By: chip
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D7203
      38671c4d
  7. 08 12月, 2012 4 次提交
    • Z
      ldb: Add compression and bloom filter options. · 768edfaa
      Zheng Shao 提交于
      Summary:
      Added the following two options:
      [--bloom_bits=<int,e.g.:14>]
      [--compression_type=<no|snappy|zlib|bzip2>]
      
      These options will be used when ldb opens the leveldb database.
      
      Test Plan: Tried by hand for both success and failure cases. We do need a test framework.
      
      Reviewers: dhruba, emayanke, sheki
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D7197
      768edfaa
    • A
      GetUpdatesSince API to enable replication. · 80550089
      Abhishek Kona 提交于
      Summary:
      How it works:
      * GetUpdatesSince takes a SequenceNumber.
      * A LogFile with the first SequenceNumber nearest and lesser than the requested Sequence Number is found.
      * Seek in the logFile till the requested SeqNumber is found.
      * Return an iterator which contains logic to return record's one by one.
      
      Test Plan:
      * Test case included to check the good code path.
      * Will update with more test-cases.
      * Feedback required on test-cases.
      
      Reviewers: dhruba, emayanke
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D7119
      80550089
    • K
      Fixed off by 1 in tests. · f69e9f3e
      Kosie van der Merwe 提交于
      Summary: Added 1 to indices where I shouldn't have so overrun array.
      
      Test Plan: make check
      
      Reviewers: sheki, emayanke, vamsi, dhruba
      
      Reviewed By: dhruba
      
      Differential Revision: https://reviews.facebook.net/D7227
      f69e9f3e
    • K
      Added methods to write small ints to bit streams. · 0eb0c9bb
      Kosie van der Merwe 提交于
      Summary: Added BitStreamPutInt() and BitStreamGetInt() which take a stream of chars and can write integers of arbitrary bit sizes to that stream at arbitrary positions. There are also convenience versions of these functions that take std::strings and leveldb::Slices.
      
      Test Plan: make check
      
      Reviewers: sheki, vamsi, dhruba, emayanke
      
      Reviewed By: vamsi
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D7071
      0eb0c9bb
  8. 05 12月, 2012 1 次提交
  9. 30 11月, 2012 1 次提交
  10. 29 11月, 2012 5 次提交
    • S
      Move WAL files to archive directory, instead of deleting. · d4627e6d
      sheki 提交于
      Summary:
      Create a directory "archive" in the DB directory.
      During DeleteObsolteFiles move the WAL files (*.log) to the Archive directory,
      instead of deleting.
      
      Test Plan: Created a DB using DB_Bench. Reopened it. Checked if files move.
      
      Reviewers: dhruba
      
      Reviewed By: dhruba
      
      Differential Revision: https://reviews.facebook.net/D6975
      d4627e6d
    • A
      Fix all the lint errors. · d29f1819
      Abhishek Kona 提交于
      Summary:
      Scripted and removed all trailing spaces and converted all tabs to
      spaces.
      
      Also fixed other lint errors.
      All lint errors from this point of time should be taken seriously.
      
      Test Plan: make all check
      
      Reviewers: dhruba
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D7059
      d29f1819
    • D
      Release 1.5.6.fb · 9b838535
      Dhruba Borthakur 提交于
      Summary:
      
      Test Plan:
      
      Reviewers:
      
      CC:
      
      Task ID: #
      
      Blame Rev:
      9b838535
    • D
      Delete non-visible keys during a compaction even in the presense of snapshots. · 9a357847
      Dhruba Borthakur 提交于
      Summary:
       LevelDB should delete almost-new keys when a long-open snapshot exists.
      The previous behavior is to keep all versions that were created after the
      oldest open snapshot. This can lead to database size bloat for
      high-update workloads when there are long-open snapshots and long-open
      snapshot will be used for logical backup. By "almost new" I mean that the
      key was updated more than once after the oldest snapshot.
      
      If there were two snapshots with seq numbers s1 and s2 (s1 < s2), and if
      we find two instances of the same key k1 that lie entirely within s1 and
      s2 (i.e. s1 < k1 < s2), then the earlier version
      of k1 can be safely deleted because that version is not visible in any snapshot.
      
      Test Plan:
      unit test attached
      make clean check
      
      Differential Revision: https://reviews.facebook.net/D6999
      9a357847
    • A
      Moved FBCode Linter's to LevelDB. · 34487af4
      Abhishek Kona 提交于
      Summary: Added FBCODE like linting support to our codebase.
      
      Test Plan: arc lint  lint's the code.
      
      Reviewers: dhruba
      
      Reviewed By: dhruba
      
      CC: emayanke, leveldb
      
      Differential Revision: https://reviews.facebook.net/D7041
      34487af4
  11. 28 11月, 2012 1 次提交
  12. 27 11月, 2012 5 次提交
    • S
      Remove unused varibles. Cause compiler warnings. · 43f5a079
      sheki 提交于
      Test Plan: make check
      
      Reviewers: dhruba
      
      Reviewed By: dhruba
      
      CC: emayanke
      
      Differential Revision: https://reviews.facebook.net/D6993
      43f5a079
    • D
      Assertion failure while running with unit tests with OPT=-g · 2a396999
      Dhruba Borthakur 提交于
      Summary:
      When we expand the range of keys for a level 0 compaction, we
      need to invoke ParentFilesInCompaction() only once for the
      entire range of keys that is being compacted. We were invoking
      it for each file that was being compacted, but this triggers
      an assertion because each file's range were contiguous but
      non-overlapping.
      
      I renamed ParentFilesInCompaction to ParentRangeInCompaction
      to adequately represent that it is the range-of-keys and
      not individual files that we compact in a single compaction run.
      
      Here is the assertion that is fixed by this patch.
      db_test: db/version_set.cc:585: void leveldb::Version::ExtendOverlappingInputs(int, const leveldb::Slice&, const leveldb::Slice&, std::vector<leveldb::FileMetaData*, std::allocator<leveldb::FileMetaData*> >*, int): Assertion `user_cmp->Compare(flimit, user_begin) >= 0' failed.
      
      Test Plan: make clean check OPT=-g
      
      Reviewers: sheki
      
      Reviewed By: sheki
      
      CC: MarkCallaghan, emayanke, leveldb
      
      Differential Revision: https://reviews.facebook.net/D6963
      2a396999
    • D
      Merge branch 'performance' · 7c6f5278
      Dhruba Borthakur 提交于
      7c6f5278
    • D
      The c_test was sometimes failing with an assertion. · e0cd6bf0
      Dhruba Borthakur 提交于
      Summary:
      On fast filesystems (e.g. /dev/shm and ext4), the flushing
      of memstore to disk was fast and quick, and the background compaction
      thread was not getting scheduled fast enough to delete obsolete
      files before the db was closed. This caused the repair method
      to pick up those files that were not part of the db and the unit
      test was failing.
      
      The fix is to enhance the unti test to run a compaction before
      closing the database so that all files that are not part of the
      database are truly deleted from the filesystem.
      
      Test Plan: make c_test; ./c_test
      
      Reviewers: chip, emayanke, sheki
      
      Reviewed By: chip
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D6915
      e0cd6bf0
    • C
      Fix broken test; some ldb commands can run without a db_ · 6caf3b8e
      Chip Turner 提交于
      Summary:
      It would appear our unit tests make use of code from ldb_cmd,
      and don't always require a valid database handle.  D6855 was not aware
      db_ could sometimes be NULL for such commands, and so it broke
      reduce_levels_test.
      
      This moves the check elsewhere to (at least) fix the 'ldb dump' case of
      segfaulting when it couldn't open a database.
      
      Test Plan: make check
      
      Reviewers: dhruba
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D6903
      6caf3b8e
  13. 22 11月, 2012 2 次提交
    • C
      Fix ldb segfault and use static libsnappy for all builds · 879e45eb
      Chip Turner 提交于
      Summary:
      Link statically against snappy, using the gvfs one for facebook
      environments, and the bundled one otherwise.
      
      In addition, fix a few minor segfaults in ldb when it couldn't open the
      database, and update .gitignore to include a few other build artifacts.
      
      Test Plan: make check
      
      Reviewers: dhruba
      
      Reviewed By: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D6855
      879e45eb
    • D
      Support taking a configurable number of files from the same level to compact... · 7632fdb5
      Dhruba Borthakur 提交于
      Support taking a configurable number of  files from the same level to compact in a single compaction run.
      
      Summary:
      The compaction process takes some files from LevelK and
      merges it into LevelK+1. The number of files it picks from
      LevelK was capped such a way that the total amount of
      data picked does not exceed the maxfilesize of that level.
      This essentially meant that only one file from LevelK
      is picked for a single compaction.
      
      For bulkloads, we would like to take many many file from
      LevelK and compact them using a single compaction run.
      
      This patch introduces a option called the 'source_compaction_factor'
      (similar to expanded_compaction_factor). It is a multiplier
      that is multiplied by the maxfilesize of that level to arrive
      at the limit that is used to throttle the number of source
      files from LevelK.  For bulk loads, set source_compaction_factor
      to a very high number so that multiple files from the same
      level are picked for compaction in a single compaction.
      
      The default value of source_compaction_factor is 1, so that
      we can keep backward compatibilty with existing compaction semantics.
      
      Test Plan: make clean check
      
      Reviewers: emayanke, sheki
      
      Reviewed By: emayanke
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D6867
      7632fdb5
  14. 21 11月, 2012 2 次提交
    • D
      Support to disable background compactions on a database. · fbb73a4a
      Dhruba Borthakur 提交于
      Summary:
      This option is needed for fast bulk uploads. The goal is to load
      all the data into files in L0 without any interference from
      background compactions.
      
      Test Plan: make clean check
      
      Reviewers: sheki
      
      Reviewed By: sheki
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D6849
      fbb73a4a
    • D
      A major bug that was not considering the compaction score of the n-1 level. · 3754f2f4
      Dhruba Borthakur 提交于
      Summary:
      The method Finalize() recomputes the compaction score of each
      level and then sorts these score from largest to smallest. The
      idea is that the level with the largest compaction score will
      be a better candidate for compaction.  There are usually very
      few levels, and a bubble sort code was used to sort these
      compaction scores. There existed a bug in the sorting code that
      skipped looking at the score for the n-1 level. This meant that
      even if the compaction score of the n-1 level is large, it will
      not be picked for compaction.
      
      This patch fixes the bug and also introduces "asserts" in the
      code to detect any possible inconsistencies caused by future bugs.
      
      This bug existed in the very first code change that introduced
      multi-threaded compaction to the leveldb code. That version of
      code was committed on Oct 19th via
      https://github.com/facebook/leveldb/commit/1ca0584345af85d2dccc434f451218119626d36e
      
      Test Plan: make clean check OPT=-g
      
      Reviewers: emayanke, sheki, MarkCallaghan
      
      Reviewed By: sheki
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D6837
      3754f2f4
  15. 20 11月, 2012 8 次提交
    • D
      Fix asserts · dde70898
      Dhruba Borthakur 提交于
      Summary:
      make check OPT=-g fails with the following assert.
      ==== Test DBTest.ApproximateSizes
      db_test: db/version_set.cc:765: void leveldb::VersionSet::Builder::CheckConsistencyForDeletes(leveldb::VersionEdit*, int, int): Assertion `found' failed.
      
      The assertion was that file #7 that was being deleted did not
      preexists, but actualy it did pre-exist as shown in the manifest
      dump shows below. The bug was that we did not check for file
      existance at the same level.
      
      *************************Edit[0] = VersionEdit {
        Comparator: leveldb.BytewiseComparator
      }
      
      *************************Edit[1] = VersionEdit {
        LogNumber: 8
        PrevLogNumber: 0
        NextFile: 9
        LastSeq: 80
        AddFile: 0 7 8005319 'key000000' @ 1 : 1 .. 'key000079' @ 80 : 1
      }
      
      *************************Edit[2] = VersionEdit {
        LogNumber: 8
        PrevLogNumber: 0
        NextFile: 13
        LastSeq: 80
        CompactPointer: 0 'key000079' @ 80 : 1
        DeleteFile: 0 7
        AddFile: 1 9 2101425 'key000000' @ 1 : 1 .. 'key000020' @ 21 : 1
        AddFile: 1 10 2101425 'key000021' @ 22 : 1 .. 'key000041' @ 42 : 1
        AddFile: 1 11 2101425 'key000042' @ 43 : 1 .. 'key000062' @ 63 : 1
        AddFile: 1 12 1701165 'key000063' @ 64 : 1 .. 'key000079' @ 80 : 1
      }
      
      Test Plan:
      
      Reviewers:
      
      CC:
      
      Task ID: #
      
      Blame Rev:
      dde70898
    • D
      Merge branch 'master' into performance · a4b79b6e
      Dhruba Borthakur 提交于
      a4b79b6e
    • D
      Fix compilation error while compiling unit tests with OPT=-g · 74054fa9
      Dhruba Borthakur 提交于
      Summary:
      Fix compilation error while compiling with OPT=-g
      
      Test Plan:
      make clean check OPT=-g
      
      Reviewers:
      
      CC:
      
      Task ID: #
      
      Blame Rev:
      74054fa9
    • D
      Fix compilation error introduced by previous commit · 48dafb2c
      Dhruba Borthakur 提交于
      7889e094
      
      Summary:
      Fix compilation error introduced by previous commit
      7889e094
      
      Test Plan:
      make clean check
      48dafb2c
    • D
      Enhance manifest_dump to print each individual edit. · 7889e094
      Dhruba Borthakur 提交于
      Summary:
      The manifest file contains a series of edits. If the verbose
      option is switched on, then print each individual edit in the
      manifest file. This helps in debugging.
      
      Test Plan: make clean manifest_dump
      
      Reviewers: emayanke, sheki
      
      Reviewed By: sheki
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D6807
      7889e094
    • A
      Fix LDB dumpwal to print the messages as in the file. · 661dc157
      Abhishek Kona 提交于
      Summary:
      StringStream.clear() does not clear the stream. It sets some flags.
      Who knew? Fixing that is not printing the stuff again and again.
      
      Test Plan: ran it on a local db
      
      Reviewers: dhruba, emayanke
      
      Reviewed By: dhruba
      
      Differential Revision: https://reviews.facebook.net/D6795
      661dc157
    • A
      Fix a coding error in db_test.cc · 65b035a4
      amayank 提交于
      Summary: The new function MinLevelToCompress in db_test.cc was incomplete. It needs to tell the calling function-TEST whether the test has to be skipped or not
      
      Test Plan: make all;./db_test
      
      Reviewers: dhruba, heyongqiang
      
      Reviewed By: dhruba
      
      CC: sheki
      
      Differential Revision: https://reviews.facebook.net/D6771
      65b035a4
    • A
      LDB can read WAL. · 30742e16
      Abhishek Kona 提交于
      Summary:
      Add option to read WAL and print a summary for each record.
      facebook task => #1885013
      
      E.G. Output :
      ./ldb dump_wal --walfile=/tmp/leveldbtest-5907/dbbench/026122.log --header
      Sequence,Count,ByteSize
      49981,1,100033
      49981,1,100033
      49982,1,100033
      49981,1,100033
      49982,1,100033
      49983,1,100033
      49981,1,100033
      49982,1,100033
      49983,1,100033
      49984,1,100033
      49981,1,100033
      49982,1,100033
      
      Test Plan:
      Works run
      ./ldb read_wal --wal-file=/tmp/leveldbtest-5907/dbbench/000078.log --header
      
      Reviewers: dhruba, heyongqiang
      
      Reviewed By: dhruba
      
      CC: emayanke, leveldb, zshao
      
      Differential Revision: https://reviews.facebook.net/D6675
      30742e16