diff options
author | Greg Soltis <gsoltis@google.com> | 2018-03-26 11:57:34 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-26 11:57:34 -0700 |
commit | f77ec68a8862bd03b430deff48022ffb179172b0 (patch) | |
tree | d6e39cc2ac36c1fb7433edc1372ec10a8064e593 /Firestore/core/src/firebase/firestore | |
parent | acc5c456d39a1150bdb8658df60d215feff42f02 (diff) |
Switch LevelDB MutationQueue and RemoteDocumentCache to use transactions (#968)
* Start work on leveldb transactions
* Style
* Working API. Not plumbed in yet
* Move files into correct place
* Wrangling file locations and associations
* Tests pass
* Add some comments
* style
* Fix copyright
* Rewrite iterator internals to handle deletion-while-iterating. Also add tests for same
* Switch to strings instead of slices
* Style
* More style fixes
* Start switching writegroup over
* Swap out write group tracking for transaction usage
* Style
* Response to feedback before updating docs
* Style
* Add comment
* Initialize version_
* Satisfy the linter
* Start switching writegroup over
* Swap out write group tracking for transaction usage
* Style
* Checkpoint before implementing BatchDescription
* Style
* Initial plumbing for leveldb local parts
* Add model::BatchId
* Port leveldb_key.{h,cc}
* Add string StartsWith
* Add leveldb_key_test.cc to the project
* Revert back to using leveldb::Slice for read/describe
These operations universally operate on keys obtained from leveldb so
it's actually unhelpful to force all the callers to make
absl::string_views from them.
* Everything passing
* Drop unused function
* Style
* STart work on reads
* Swap reads in queryCache to use transactions
* Fix up tests of querycache
* Drop commented out code
* Cleanup
* Style
* Fix up for passing tests
* style
* Renaming
* Style
* Start work on ToString for transactions
* Add ToString() method to LevelDbTransaction
* Style
* lint
* Fix includes, drop runTransaction
* current_transaction -> currentTransaction
* LevelDbTransaction::NewIterator now returns a unique_ptr
* Style
* Revert addition of util::StartsWith
* Add log line
* Style
* Add log line
* Style
* Add debug log line for commits, drop unused BatchDescription
* STart work on reads
* Swap reads in queryCache to use transactions
* Start on remote documents
* Transition mutation queue and remote documents to use transactions
* Style
* Make everything pass
* Make everything pass
* Make it compile
* Style
* Style
* Revert name change, use DefaultReadOptions()
* Style
* Handle iterators returning bad statuses
Diffstat (limited to 'Firestore/core/src/firebase/firestore')
-rw-r--r-- | Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc b/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc index f7d39b2..966ccf2 100644 --- a/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc +++ b/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc @@ -71,8 +71,14 @@ void LevelDbTransaction::Iterator::UpdateCurrent() { void LevelDbTransaction::Iterator::Seek(const std::string& key) { db_iter_->Seek(key); + FIREBASE_ASSERT_MESSAGE(db_iter_->status().ok(), + "leveldb iterator reported an error: %s", + db_iter_->status().ToString().c_str()); for (; db_iter_->Valid() && IsDeleted(db_iter_->key()); db_iter_->Next()) { } + FIREBASE_ASSERT_MESSAGE(db_iter_->status().ok(), + "leveldb iterator reported an error: %s", + db_iter_->status().ToString().c_str()); mutations_iter_ = txn_->mutations_.lower_bound(key); UpdateCurrent(); last_version_ = txn_->version_; @@ -109,6 +115,9 @@ void LevelDbTransaction::Iterator::AdvanceLDB() { do { db_iter_->Next(); } while (db_iter_->Valid() && IsDeleted(db_iter_->key())); + FIREBASE_ASSERT_MESSAGE(db_iter_->status().ok(), + "leveldb iterator reported an error: %s", + db_iter_->status().ToString().c_str()); } void LevelDbTransaction::Iterator::Next() { |