1. 04 3月, 2014 1 次提交
    • I
      [CF] Fix CF bugs in WriteBatch · f9b2f0ad
      Igor Canadi 提交于
      Summary:
      This diff fixes two bugs:
      * Increase sequence number even if WriteBatch fails. This is important because WriteBatches in WAL logs have implictly increasing sequence number, even if one update in a write batch fails. This caused some writes to get lost in my CF stress testing
      * Tolerate 'invalid column family' errors on recovery. When a column family is dropped, processing WAL logs can have some WriteBatches that still refer to the dropped column family. In recovery environment, we want to ignore those errors. In client's Write() code path, however, we want to return the failure to the client if he's trying to add data to invalid column family.
      
      Test Plan: db_stress's verification works now
      
      Reviewers: dhruba, haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16533
      f9b2f0ad
  2. 01 3月, 2014 6 次提交
  3. 28 2月, 2014 4 次提交
  4. 27 2月, 2014 6 次提交
    • I
      [CF] Test fixes and speedup · 4c422012
      Igor Canadi 提交于
      4c422012
    • I
      [CF] DifferentMergeOperators and DifferentCompactionStyles tests · 343c32be
      Igor Canadi 提交于
      Summary:
      Two new column family tests:
      * DifferentMergeOperators -- three column families, one without merge operator, one with add operator and one with append operator. verify that operations work as expected.
      * DifferentCompactionStyles -- three column families, two with level compactions and one with universal compaction. trigger the compactions and verify they work as expected.
      
      Test Plan: nope
      
      Reviewers: dhruba, haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16377
      343c32be
    • I
      [CF] Make LogDeletionTest less flakey · 3c815464
      Igor Canadi 提交于
      Summary: Retry GetSortedWalFiles() and also wait 20ms before counting number of log files. WaitForFlush() doesn't necessarily wait for logs to be deleted, since logs are deleted outside of the mutex.
      
      Test Plan: column_family_test
      
      Reviewers: dhruba, haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16371
      3c815464
    • I
      [CF] More tests · 6e7cae77
      Igor Canadi 提交于
      Summary: New unit tests for column families
      
      Test Plan: this is a test
      
      Reviewers: dhruba, haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16359
      6e7cae77
    • I
      [CF] Fix lint errors in CF code · 9bce2b2a
      Igor Canadi 提交于
      Summary: Big CF diff uncovered some lint errors. This diff fixes some of them. Not much to see here
      
      Test Plan: make check
      
      Reviewers: dhruba, haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16347
      9bce2b2a
    • I
      [CF] Handle failure in WriteBatch::Handler · 8b7ab995
      Igor Canadi 提交于
      Summary:
      * Add ColumnFamilyHandle::GetID() function. Client needs to know column family's ID to be able to construct WriteBatch
      * Handle WriteBatch::Handler failure gracefully. Since WriteBatch is not a very smart function (it takes raw CF id), client can add data to WriteBatch for column family that doesn't exist. In that case, we need to gracefully return failure status from DB::Write(). To do that, I added a return Status to WriteBatch functions PutCF, DeleteCF and MergeCF.
      
      Test Plan: Added test to column_family_test
      
      Reviewers: dhruba, haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16323
      8b7ab995
  5. 26 2月, 2014 7 次提交
    • I
      [CF] Log deletion in column families · 5ad7ee03
      Igor Canadi 提交于
      Summary:
      * Added unit test that verifies that obsolete files are deleted.
      * Advance log number for empty column family when cutting log file.
      * MinLogNumber() bug fix! (caught by the new unit test)
      
      Test Plan: unit test
      
      Reviewers: dhruba, haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16311
      5ad7ee03
    • I
      [CF] Adaptation of GetLiveFiles for CF · dc277f0a
      Igor Canadi 提交于
      Summary: Even if user flushes the memtables before getting live files, we still can't guarantee that new data didn't come in (to already-flushed memtables). If we want backups to provide consistent view of the database, we still need to get WAL files.
      
      Test Plan: backupable_db_test
      
      Reviewers: dhruba
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16299
      dc277f0a
    • I
      log file is uint64_t · 5a917462
      Igor Canadi 提交于
      5a917462
    • I
      Schedule flush when waiting on flush · 42095163
      Igor Canadi 提交于
      Summary:
      This will also help with avoiding the deadlock. If a flush failed and we're waiting for a memtable to be flushed, we should schedule a new flush and hope a new one succeedes.
      
      If paranoid_checks = false, Wait() will still hang on ENOSPC, but at least it will automatically continue when the space frees up. Current behavior both hangs and deadlocks.
      
      Also, I renamed some 'compaction' to 'flush'. 'compaction' was leveldb way of saying things.
      
      Test Plan: make check
      
      Reviewers: dhruba, haobo, ljin
      
      Reviewed By: haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16281
      42095163
    • L
      expose wal_dir in db_bench · dea894ef
      Lei Jin 提交于
      Summary: as title
      
      Test Plan: ran db_bench
      
      Reviewers: dhruba, haobo
      
      Reviewed By: haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16269
      dea894ef
    • A
      A few more C API functions. · 72aacf6b
      Albert Strasheim 提交于
      72aacf6b
    • I
      [CF] Better handling of memtable logs · b69e7d99
      Igor Canadi 提交于
      Summary: DBImpl now keeps a list of alive_log_files_. On every FindObsoleteFiles, it deletes all alive log files that are smaller than versions_->MinLogNumber()
      
      Test Plan:
      make check passes
      no specific unit tests yet, will add
      
      Reviewers: dhruba, haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16293
      b69e7d99
  6. 25 2月, 2014 2 次提交
  7. 24 2月, 2014 2 次提交
  8. 20 2月, 2014 4 次提交
  9. 15 2月, 2014 4 次提交
    • I
      some improvements to CompressedCache test · 6aef6612
      Igor Canadi 提交于
      6aef6612
    • I
      Fix table properties · 422bb09c
      Igor Canadi 提交于
      Summary: Adapt table properties to column family world
      
      Test Plan: make check
      
      Reviewers: kailiu
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16161
      422bb09c
    • I
      fix u/s comparison #83 · be7e273d
      Igor Canadi 提交于
      be7e273d
    • I
      [CF] DB test to run on non-default column family · c67d48c8
      Igor Canadi 提交于
      Summary:
      This is a huge diff and it was hectic, but the idea is actually quite simple. Every operation (Put, Get, etc.) done on default column family in DBTest is now forwarded to non-default ("pikachu"). The good news is that we had zero test failures! Column families look stable so far.
      
      One interesting test that I adapted for column families is MultiThreadedTest. I replaced every Put() with a WriteBatch writing to all column families concurrently. Every Put in the write batch contains unique_id. Instead of Get() I do a multiget across all column families with the same key. If atomicity holds, I expect to see the same unique_id in all column families.
      
      Test Plan: This is a test!
      
      Reviewers: dhruba, haobo, kailiu, sdong
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16149
      c67d48c8
  10. 14 2月, 2014 2 次提交
  11. 13 2月, 2014 2 次提交
    • S
      Add more black-box tests for PlainTable and explicitly support total order mode · f3ae3d07
      Siying Dong 提交于
      Summary:
      1. Add some more implementation-aware tests for PlainTable
      2. move from a hard-coded one index per 16 rows in one prefix to a configurable number. Also, make hash table ratio = 0  means binary search only. Also fixes some divide 0 risks.
      3. Explicitly support total order (only use binary search)
      4. some code cleaning up.
      
      Test Plan: make all check
      
      Reviewers: haobo, kailiu
      
      Reviewed By: haobo
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16023
      f3ae3d07
    • I
      [CF] Rethinking ColumnFamilyHandle and fix to dropping column families · b06840aa
      Igor Canadi 提交于
      Summary:
      The change to the public behavior:
      * When opening a DB or creating new column family client gets a ColumnFamilyHandle.
      * As long as column family handle is alive, client can do whatever he wants with it, even drop it
      * Dropped column family can still be read from (using the column family handle)
      * Added a new call CloseColumnFamily(). Client has to close all column families that he has opened before deleting the DB
      * As soon as column family is closed, any calls to DB using that column family handle will fail (also any outstanding calls)
      
      Internally:
      * Ref-counting ColumnFamilyData
      * New thread-safety for ColumnFamilySet
      * Dropped column families are now completely dropped and their memory cleaned-up
      
      Test Plan: added some tests to column_family_test
      
      Reviewers: dhruba, haobo, kailiu, sdong
      
      CC: leveldb
      
      Differential Revision: https://reviews.facebook.net/D16101
      b06840aa