aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Local/FSTWriteGroupTracker.mm
diff options
context:
space:
mode:
authorGravatar Greg Soltis <gsoltis@google.com>2018-03-22 15:45:05 -0700
committerGravatar GitHub <noreply@github.com>2018-03-22 15:45:05 -0700
commit4afaafdc770612185c4e11d3f09226ce168462a5 (patch)
tree21c912e4c719a1b0a0961457017efce1f4b385c0 /Firestore/Source/Local/FSTWriteGroupTracker.mm
parent1e769d708459ff64ca3571ab562377cc56a9d637 (diff)
Change write groups to use transactions (#912)
* 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 * Everything passing * Drop unused function * Style * Renaming * Style * Add log line * Style * Add debug log line for commits, drop unused BatchDescription
Diffstat (limited to 'Firestore/Source/Local/FSTWriteGroupTracker.mm')
-rw-r--r--Firestore/Source/Local/FSTWriteGroupTracker.mm11
1 files changed, 11 insertions, 0 deletions
diff --git a/Firestore/Source/Local/FSTWriteGroupTracker.mm b/Firestore/Source/Local/FSTWriteGroupTracker.mm
index 7e3bf60..2cb10bd 100644
--- a/Firestore/Source/Local/FSTWriteGroupTracker.mm
+++ b/Firestore/Source/Local/FSTWriteGroupTracker.mm
@@ -40,6 +40,17 @@ NS_ASSUME_NONNULL_BEGIN
return self.activeGroup;
}
+- (FSTWriteGroup *)startGroupWithAction:(NSString *)action
+ transaction:
+ (firebase::firestore::local::LevelDbTransaction *)transaction {
+ // NOTE: We can relax this to allow nesting if/when we find we need it.
+ FSTAssert(!self.activeGroup,
+ @"Attempt to create write group (%@) while existing write group (%@) still active.",
+ action, self.activeGroup.action);
+ self.activeGroup = [FSTWriteGroup groupWithAction:action transaction:transaction];
+ return self.activeGroup;
+}
+
- (void)endGroup:(FSTWriteGroup *)group {
FSTAssert(self.activeGroup == group,
@"Attempted to end write group (%@) which is different from active group (%@)",