Skip to content

Commit 339c840

Browse files
Revert "Add +[FIRServerValues increment:] (#4328)" (#4627)
This reverts commit 1cf8a94.
1 parent fe822f4 commit 339c840

File tree

7 files changed

+49
-335
lines changed

7 files changed

+49
-335
lines changed

Example/Database/Tests/Integration/FData.m

Lines changed: 9 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
#import "FEventTester.h"
2222
#import "FIRDatabaseConfig_Private.h"
2323
#import "FIRDatabaseQuery_Private.h"
24-
#import "FIRServerValue_unreleased.h"
2524
#import "FRepo_Private.h"
2625
#import "FTestHelpers.h"
2726
#import "FTupleEventTypeString.h"
@@ -2572,7 +2571,7 @@ - (void)testParentDeleteShadowsChildListenersWithNonDefaultQuery {
25722571
WAIT_FOR(done);
25732572
}
25742573

2575-
- (void)testLocalServerTimestampEventuallyButNotImmediatelyMatchServer {
2574+
- (void)testLocalServerValuesEventuallyButNotImmediatelyMatchServer {
25762575
FTupleFirebase *refs = [FTestHelpers getRandomNodePair];
25772576
FIRDatabaseReference *writer = refs.one;
25782577
FIRDatabaseReference *reader = refs.two;
@@ -2636,7 +2635,7 @@ - (void)testLocalServerTimestampEventuallyButNotImmediatelyMatchServer {
26362635
@"Eventual reader and writer priorities should be equal");
26372636
}
26382637

2639-
- (void)testServerTimestampSetWithPriorityRemoteEvents {
2638+
- (void)testServerValuesSetWithPriorityRemoteEvents {
26402639
FTupleFirebase *refs = [FTestHelpers getRandomNodePair];
26412640
FIRDatabaseReference *writer = refs.one;
26422641
FIRDatabaseReference *reader = refs.two;
@@ -2677,7 +2676,7 @@ - (void)testServerTimestampSetWithPriorityRemoteEvents {
26772676
}];
26782677
}
26792678

2680-
- (void)testServerTimestampSetPriorityRemoteEvents {
2679+
- (void)testServerValuesSetPriorityRemoteEvents {
26812680
FTupleFirebase *refs = [FTestHelpers getRandomNodePair];
26822681
FIRDatabaseReference *writer = refs.one;
26832682
FIRDatabaseReference *reader = refs.two;
@@ -2709,7 +2708,7 @@ - (void)testServerTimestampSetPriorityRemoteEvents {
27092708
@"Number should be no more than 2 seconds ago");
27102709
}
27112710

2712-
- (void)testServerTimestampUpdateRemoteEvents {
2711+
- (void)testServerValuesUpdateRemoteEvents {
27132712
FTupleFirebase *refs = [FTestHelpers getRandomNodePair];
27142713
FIRDatabaseReference *writer = refs.one;
27152714
FIRDatabaseReference *reader = refs.two;
@@ -2739,7 +2738,7 @@ - (void)testServerTimestampUpdateRemoteEvents {
27392738
@"Number should be no more than 2 seconds ago");
27402739
}
27412740

2742-
- (void)testServerTimestampSetWithPriorityLocalEvents {
2741+
- (void)testServerValuesSetWithPriorityLocalEvents {
27432742
FIRDatabaseReference *node = [FTestHelpers getRandomNode];
27442743

27452744
NSDictionary *data = @{
@@ -2784,7 +2783,7 @@ - (void)testServerTimestampSetWithPriorityLocalEvents {
27842783
}];
27852784
}
27862785

2787-
- (void)testServerTimestampSetPriorityLocalEvents {
2786+
- (void)testServerValuesSetPriorityLocalEvents {
27882787
FIRDatabaseReference *node = [FTestHelpers getRandomNode];
27892788

27902789
__block FIRDataSnapshot *snap = nil;
@@ -2813,7 +2812,7 @@ - (void)testServerTimestampSetPriorityLocalEvents {
28132812
@"Number should be no more than 2 seconds ago");
28142813
}
28152814

2816-
- (void)testServerTimestampUpdateLocalEvents {
2815+
- (void)testServerValuesUpdateLocalEvents {
28172816
FIRDatabaseReference *node1 = [FTestHelpers getRandomNode];
28182817

28192818
__block FIRDataSnapshot *snap1 = nil;
@@ -2850,7 +2849,7 @@ - (void)testServerTimestampUpdateLocalEvents {
28502849
@"Number should be no more than 2 seconds ago");
28512850
}
28522851

2853-
- (void)testServerTimestampTransactionLocalEvents {
2852+
- (void)testServerValuesTransactionLocalEvents {
28542853
FIRDatabaseReference *node = [FTestHelpers getRandomNode];
28552854

28562855
__block FIRDataSnapshot *snap = nil;
@@ -2874,137 +2873,6 @@ - (void)testServerTimestampTransactionLocalEvents {
28742873
@"Number should be no more than 2 seconds ago");
28752874
}
28762875

2877-
- (void)testServerIncrementOverwritesExistingData {
2878-
FIRDatabaseReference *ref = [FTestHelpers getRandomNode];
2879-
__block NSMutableArray *found = [NSMutableArray new];
2880-
NSMutableArray *expected = [NSMutableArray new];
2881-
[ref observeEventType:FIRDataEventTypeValue
2882-
withBlock:^(FIRDataSnapshot *snap) {
2883-
[found addObject:snap.value];
2884-
}];
2885-
2886-
// Going offline ensures that local events get queued up before server events
2887-
[ref.repo interrupt];
2888-
2889-
// null + incr
2890-
[ref setValue:[FIRServerValue increment:@1]];
2891-
[expected addObject:@1];
2892-
2893-
// number + incr
2894-
[ref setValue:@5];
2895-
[ref setValue:[FIRServerValue increment:@1]];
2896-
[expected addObject:@5];
2897-
[expected addObject:@6];
2898-
2899-
// string + incr
2900-
[ref setValue:@"hello"];
2901-
[ref setValue:[FIRServerValue increment:@1]];
2902-
[expected addObject:@"hello"];
2903-
[expected addObject:@1];
2904-
2905-
// object + incr
2906-
[ref setValue:@{@"hello" : @"world"}];
2907-
[ref setValue:[FIRServerValue increment:@1]];
2908-
[expected addObject:@{@"hello" : @"world"}];
2909-
[expected addObject:@1];
2910-
2911-
[self waitUntil:^BOOL {
2912-
return found.count == expected.count;
2913-
}];
2914-
XCTAssertEqualObjects(expected, found);
2915-
[ref.repo resume];
2916-
}
2917-
2918-
- (void)testServerIncrementPriority {
2919-
FIRDatabaseReference *ref = [FTestHelpers getRandomNode];
2920-
__block NSMutableArray *found = [NSMutableArray new];
2921-
NSMutableArray *expected = [NSMutableArray new];
2922-
[ref observeEventType:FIRDataEventTypeValue
2923-
withBlock:^(FIRDataSnapshot *snap) {
2924-
[found addObject:snap.priority];
2925-
}];
2926-
2927-
// Going offline ensures that local events get queued up before server events
2928-
// Also necessary because increment may not be live yet in the server.
2929-
[ref.repo interrupt];
2930-
2931-
// null + incr
2932-
[ref setValue:@0 andPriority:[FIRServerValue increment:@1]];
2933-
[expected addObject:@1];
2934-
[ref setValue:@0 andPriority:[FIRServerValue increment:@1.5]];
2935-
[expected addObject:@2.5];
2936-
2937-
[self waitUntil:^BOOL {
2938-
return found.count == expected.count;
2939-
}];
2940-
XCTAssertEqualObjects(expected, found);
2941-
[ref.repo resume];
2942-
}
2943-
2944-
- (void)testServerIncrementOverflowAndTypeCoercion {
2945-
FIRDatabaseReference *ref = [FTestHelpers getRandomNode];
2946-
__block NSMutableArray *found = [NSMutableArray new];
2947-
__block NSMutableArray *foundTypes = [NSMutableArray new];
2948-
NSMutableArray *expected = [NSMutableArray new];
2949-
NSMutableArray *expectedTypes = [NSMutableArray new];
2950-
[ref observeEventType:FIRDataEventTypeValue
2951-
withBlock:^(FIRDataSnapshot *snap) {
2952-
[found addObject:snap.value];
2953-
[foundTypes addObject:@([(NSNumber *)snap.value objCType])];
2954-
}];
2955-
2956-
// Going offline ensures that local events get queued up before server events
2957-
// Also necessary because increment may not be live yet in the server.
2958-
[ref.repo interrupt];
2959-
2960-
// long + double = double
2961-
[ref setValue:@1];
2962-
[ref setValue:[FIRServerValue increment:@1.0]];
2963-
[expected addObject:@1];
2964-
[expected addObject:@2.0];
2965-
[expectedTypes addObject:@(@encode(int))];
2966-
[expectedTypes addObject:@(@encode(double))];
2967-
2968-
// double + long = double
2969-
[ref setValue:@1.5];
2970-
[ref setValue:[FIRServerValue increment:@1]];
2971-
[expected addObject:@1.5];
2972-
[expected addObject:@2.5];
2973-
[expectedTypes addObject:@(@encode(double))];
2974-
[expectedTypes addObject:@(@encode(double))];
2975-
2976-
// long overflow = double
2977-
[ref setValue:@(1)];
2978-
[ref setValue:[FIRServerValue increment:@(LONG_MAX)]];
2979-
[expected addObject:@(1)];
2980-
[expected addObject:@(LONG_MAX + 1.0)];
2981-
[expectedTypes addObject:@(@encode(int))];
2982-
[expectedTypes addObject:@(@encode(double))];
2983-
2984-
// unsigned long long overflow = double
2985-
[ref setValue:@1];
2986-
[ref setValue:[FIRServerValue increment:@((unsigned long long)ULLONG_MAX)]];
2987-
[expected addObject:@1];
2988-
[expected addObject:@((double)ULLONG_MAX + 1)];
2989-
[expectedTypes addObject:@(@encode(int))];
2990-
[expectedTypes addObject:@(@encode(double))];
2991-
2992-
// long underflow = double
2993-
[ref setValue:@(-1)];
2994-
[ref setValue:[FIRServerValue increment:@(LONG_MIN)]];
2995-
[expected addObject:@(-1)];
2996-
[expected addObject:@(LONG_MIN - 1.0)];
2997-
[expectedTypes addObject:@(@encode(int))];
2998-
[expectedTypes addObject:@(@encode(double))];
2999-
3000-
[self waitUntil:^BOOL {
3001-
return found.count == expected.count && foundTypes.count == expectedTypes.count;
3002-
}];
3003-
XCTAssertEqualObjects(expectedTypes, foundTypes);
3004-
XCTAssertEqualObjects(expected, found);
3005-
[ref.repo resume];
3006-
}
3007-
30082876
- (void)testUpdateAfterChildSet {
30092877
FIRDatabaseReference *node = [FTestHelpers getRandomNode];
30102878

@@ -3081,7 +2949,7 @@ - (void)testDeltaSyncNoDataUpdatesAfterReconnect {
30812949
[FRepoManager disposeRepos:cfg];
30822950
}
30832951

3084-
- (void)testServerTimestampEventualConsistencyBetweenLocalAndRemote {
2952+
- (void)testServerValuesEventualConsistencyBetweenLocalAndRemote {
30852953
FTupleFirebase *refs = [FTestHelpers getRandomNodePair];
30862954
FIRDatabaseReference *writer = refs.one;
30872955
FIRDatabaseReference *reader = refs.two;

Firebase/Database/Api/FIRServerValue.m

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616

1717
#import "FIRServerValue.h"
18-
#import "FIRServerValue_unreleased.h"
18+
#import "FIRDatabaseReference.h"
1919

2020
@implementation FIRServerValue
2121

@@ -27,8 +27,4 @@ + (NSDictionary *)timestamp {
2727
return timestamp;
2828
}
2929

30-
+ (NSDictionary *)increment:(NSNumber *)delta {
31-
return @{@".sv" : @{@"increment" : delta}};
32-
}
33-
3430
@end

Firebase/Database/Api/FIRServerValue_unreleased.h

Lines changed: 0 additions & 42 deletions
This file was deleted.

Firebase/Database/Core/FRepo.m

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -238,9 +238,6 @@ - (void)restoreWrites {
238238
}
239239
lastWriteId = writeId;
240240
self.writeIdCounter = writeId + 1;
241-
id<FNode> existing =
242-
[self.serverSyncTree calcCompleteEventCacheAtPath:write.path
243-
excludeWriteIds:@[]];
244241
if ([write isOverwrite]) {
245242
FFLog(@"I-RDB038001", @"Restoring overwrite with id %ld",
246243
(long)write.writeId);
@@ -250,8 +247,7 @@ - (void)restoreWrites {
250247
withCallback:callback];
251248
id<FNode> resolved =
252249
[FServerValues resolveDeferredValueSnapshot:write.overwrite
253-
withExisting:existing
254-
serverValues:serverValues];
250+
withServerValues:serverValues];
255251
[self.serverSyncTree applyUserOverwriteAtPath:write.path
256252
newData:resolved
257253
writeId:writeId
@@ -264,8 +260,7 @@ - (void)restoreWrites {
264260
withCallback:callback];
265261
FCompoundWrite *resolved =
266262
[FServerValues resolveDeferredValueCompoundWrite:write.merge
267-
withExisting:existing
268-
serverValues:serverValues];
263+
withServerValues:serverValues];
269264
[self.serverSyncTree applyUserMergeAtPath:write.path
270265
changedChildren:resolved
271266
writeId:writeId];
@@ -319,12 +314,9 @@ - (void)set:(FPath *)path
319314
// where possible and / or (b) store unresolved paths on JSON parse
320315
NSDictionary *serverValues =
321316
[FServerValues generateServerValues:self.serverClock];
322-
id<FNode> existing = [self.serverSyncTree calcCompleteEventCacheAtPath:path
323-
excludeWriteIds:@[]];
324317
id<FNode> newNode =
325318
[FServerValues resolveDeferredValueSnapshot:node
326-
withExisting:existing
327-
serverValues:serverValues];
319+
withServerValues:serverValues];
328320

329321
NSInteger writeId = [self nextWriteId];
330322
[self.persistenceManager saveUserOverwrite:node
@@ -366,12 +358,9 @@ - (void)update:(FPath *)path
366358
[values description]);
367359
NSDictionary *serverValues =
368360
[FServerValues generateServerValues:self.serverClock];
369-
id<FNode> existing = [self.serverSyncTree calcCompleteEventCacheAtPath:path
370-
excludeWriteIds:@[]];
371361
FCompoundWrite *resolved =
372362
[FServerValues resolveDeferredValueCompoundWrite:nodes
373-
withExisting:existing
374-
serverValues:serverValues];
363+
withServerValues:serverValues];
375364

376365
if (!resolved.isEmpty) {
377366
NSInteger writeId = [self nextWriteId];
@@ -781,22 +770,18 @@ - (void)runOnDisconnectEvents {
781770
FFLog(@"I-RDB038019", @"Running onDisconnectEvents");
782771
NSDictionary *serverValues =
783772
[FServerValues generateServerValues:self.serverClock];
773+
FSparseSnapshotTree *resolvedTree =
774+
[FServerValues resolveDeferredValueTree:self.onDisconnect
775+
withServerValues:serverValues];
784776
NSMutableArray *events = [[NSMutableArray alloc] init];
785777

786-
[self.onDisconnect
778+
[resolvedTree
787779
forEachTreeAtPath:[FPath empty]
788780
do:^(FPath *path, id<FNode> node) {
789-
id<FNode> existing = [self.serverSyncTree
790-
calcCompleteEventCacheAtPath:path
791-
excludeWriteIds:@[]];
792-
id<FNode> resolved = [FServerValues
793-
resolveDeferredValueSnapshot:node
794-
withExisting:existing
795-
serverValues:serverValues];
796781
[events addObjectsFromArray:
797782
[self.serverSyncTree
798783
applyServerOverwriteAtPath:path
799-
newData:resolved]];
784+
newData:node]];
800785
FPath *affectedPath =
801786
[self abortTransactionsAtPath:path
802787
error:kFTransactionSet];
@@ -926,8 +911,7 @@ - (void)startTransactionOnPath:(FPath *)path
926911
id<FNode> newValUnresolved = [result.update nodeValue];
927912
id<FNode> newVal =
928913
[FServerValues resolveDeferredValueSnapshot:newValUnresolved
929-
withExisting:currentState
930-
serverValues:serverValues];
914+
withServerValues:serverValues];
931915
transaction.currentOutputSnapshotRaw = newValUnresolved;
932916
transaction.currentOutputSnapshotResolved = newVal;
933917
transaction.currentWriteId =
@@ -1208,9 +1192,7 @@ - (void)rerunTransactionQueue:(NSArray *)queue atPath:(FPath *)path {
12081192
id<FNode> newVal = [result.update nodeValue];
12091193
id<FNode> newValResolved = [FServerValues
12101194
resolveDeferredValueSnapshot:newVal
1211-
withExisting:transaction
1212-
.currentInputSnapshot
1213-
serverValues:serverValues];
1195+
withServerValues:serverValues];
12141196

12151197
transaction.currentOutputSnapshotRaw = newVal;
12161198
transaction.currentOutputSnapshotResolved = newValResolved;

0 commit comments

Comments
 (0)