From 352b790b6e292c0d921ad0231352d767fde53758 Mon Sep 17 00:00:00 2001 From: Greg Soltis Date: Thu, 22 Mar 2018 17:31:16 -0700 Subject: Switch FSTLevelDBQueryCache to use transactions (#942) * 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 * Fix an include, but mostly try to trigger a travis build --- Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc | 5 +++-- Firestore/core/src/firebase/firestore/local/leveldb_transaction.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'Firestore/core/src/firebase/firestore/local') diff --git a/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc b/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc index d6c9799..f7d39b2 100644 --- a/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc +++ b/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc @@ -166,8 +166,9 @@ void LevelDbTransaction::Put(const absl::string_view& key, version_++; } -LevelDbTransaction::Iterator* LevelDbTransaction::NewIterator() { - return new LevelDbTransaction::Iterator(this); +std::unique_ptr +LevelDbTransaction::NewIterator() { + return std::make_unique(this); } Status LevelDbTransaction::Get(const absl::string_view& key, diff --git a/Firestore/core/src/firebase/firestore/local/leveldb_transaction.h b/Firestore/core/src/firebase/firestore/local/leveldb_transaction.h index b219a69..bcc7c91 100644 --- a/Firestore/core/src/firebase/firestore/local/leveldb_transaction.h +++ b/Firestore/core/src/firebase/firestore/local/leveldb_transaction.h @@ -180,7 +180,7 @@ class LevelDbTransaction { * Returns a new Iterator over the pending changes in this transaction, merged * with the existing values already in leveldb. */ - Iterator* NewIterator(); + std::unique_ptr NewIterator(); /** * Commits the transaction. All pending changes are written. The transaction -- cgit v1.2.3