Skip to content

Commit e9c97ca

Browse files
authored
Dequeue limbo resolutions when their respective queries are stopped (#7455)
1 parent 0341e9c commit e9c97ca

File tree

9 files changed

+3139
-9
lines changed

9 files changed

+3139
-9
lines changed

Firestore/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Unreleased
22
- [fixed] Fixed a crash that could happen when the App is being deleted and
33
there's an active listener (#6909).
4+
- [fixed] Fixed a bug where local cache inconsistencies were unnecessarily
5+
being resolved (#7455).
46

57
# v7.5.0
68
- [changed] A write to a document that contains FieldValue transforms is no

Firestore/Example/Firestore.xcodeproj/project.pbxproj

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@
228228
338DFD5BCD142DF6C82A0D56 /* cc_compilation_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1B342370EAE3AA02393E33EB /* cc_compilation_test.cc */; };
229229
339CFFD1323BDCA61EAAFE31 /* query_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B9C261C26C5D311E1E3C0CB9 /* query_test.cc */; };
230230
340987A77D72C80A3E0FDADF /* view_snapshot_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CC572A9168BBEF7B83E4BBC5 /* view_snapshot_test.cc */; };
231+
3409F2AEB7D6D95478D4344A /* random_access_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 014C60628830D95031574D15 /* random_access_queue_test.cc */; };
231232
34202A37E0B762386967AF3D /* grpc_stream_tester.cc in Sources */ = {isa = PBXBuildFile; fileRef = 87553338E42B8ECA05BA987E /* grpc_stream_tester.cc */; };
232233
342724CA250A65E23CB133AC /* async_queue_std_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4681208EA0BE00554BA2 /* async_queue_std_test.cc */; };
233234
3451DC1712D7BF5D288339A2 /* view_testing.cc in Sources */ = {isa = PBXBuildFile; fileRef = A5466E7809AD2871FFDE6C76 /* view_testing.cc */; };
@@ -255,6 +256,7 @@
255256
3A8C29BF47A62B7BADCBA6F5 /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93620239689000A432D /* empty_credentials_provider_test.cc */; };
256257
3ABF84FC618016CA6E1D3C03 /* leveldb_util_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 332485C4DCC6BA0DBB5E31B7 /* leveldb_util_test.cc */; };
257258
3AC147E153D4A535B71C519E /* sorted_set_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA4C20A36DBB00BCEB75 /* sorted_set_test.cc */; };
259+
3AFBEF94A35034719477C066 /* random_access_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 014C60628830D95031574D15 /* random_access_queue_test.cc */; };
258260
3B1E27D951407FD237E64D07 /* FirestoreEncoderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1235769422B86E65007DDFA9 /* FirestoreEncoderTests.swift */; };
259261
3B23E21D5D7ACF54EBD8CF67 /* memory_lru_garbage_collector_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9765D47FA12FA283F4EFAD02 /* memory_lru_garbage_collector_test.cc */; };
260262
3B256CCF6AEEE12E22F16BB8 /* hashing_test_apple.mm in Sources */ = {isa = PBXBuildFile; fileRef = B69CF3F02227386500B281C8 /* hashing_test_apple.mm */; };
@@ -836,6 +838,7 @@
836838
ABF6506C201131F8005F2C74 /* timestamp_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABF6506B201131F8005F2C74 /* timestamp_test.cc */; };
837839
ABFD599019CF312CFF96B3EC /* perf_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = D5B2593BCB52957D62F1C9D3 /* perf_spec_test.json */; };
838840
AC03C4F1456FB1C0D88E94FF /* query_listener_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F995E040E9E9C5E8514BB /* query_listener_test.cc */; };
841+
AC6B856ACB12BB28D279693D /* random_access_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 014C60628830D95031574D15 /* random_access_queue_test.cc */; };
839842
AC6C1E57B18730428CB15E03 /* executor_libdispatch_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4689208F9B9100554BA2 /* executor_libdispatch_test.mm */; };
840843
AC835157AD2BE7AA8D20FB5A /* ConditionalConformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3228F51DCDC2E90D5C58F97 /* ConditionalConformanceTests.swift */; };
841844
ACC9369843F5ED3BD2284078 /* timestamp_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABF6506B201131F8005F2C74 /* timestamp_test.cc */; };
@@ -944,6 +947,7 @@
944947
C1B4621C0820EEB0AC9CCD22 /* bits_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB380D01201BC69F00D97691 /* bits_test.cc */; };
945948
C1E35BCE2CFF9B56C28545A2 /* Pods_Firestore_Example_tvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62E103B28B48A81D682A0DE9 /* Pods_Firestore_Example_tvOS.framework */; };
946949
C1F196EC5A7C112D2F7C7724 /* view_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = C7429071B33BDF80A7FA2F8A /* view_test.cc */; };
950+
C1F8991BD11FFD705D74244F /* random_access_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 014C60628830D95031574D15 /* random_access_queue_test.cc */; };
947951
C21B3A1CCB3AD42E57EA14FC /* Pods_Firestore_Tests_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 759E964B6A03E6775C992710 /* Pods_Firestore_Tests_macOS.framework */; };
948952
C23552A6D9FB0557962870C2 /* local_store_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 307FF03D0297024D59348EBD /* local_store_test.cc */; };
949953
C25F321AC9BF8D1CFC8543AF /* reference_set_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 132E32997D781B896672D30A /* reference_set_test.cc */; };
@@ -1041,6 +1045,7 @@
10411045
DC0E186BDD221EAE9E4D2F41 /* sorted_map_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA4E20A36DBB00BCEB75 /* sorted_map_test.cc */; };
10421046
DC1C711290E12F8EF3601151 /* array_sorted_map_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54EB764C202277B30088B8F3 /* array_sorted_map_test.cc */; };
10431047
DC48407370E87F2233D7AB7E /* statusor_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54A0352D20A3B3D7003E0143 /* statusor_test.cc */; };
1048+
DC6804424FC8F7B3044DD0BB /* random_access_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 014C60628830D95031574D15 /* random_access_queue_test.cc */; };
10441049
DCD83C545D764FB15FD88B02 /* counting_query_engine.cc in Sources */ = {isa = PBXBuildFile; fileRef = 99434327614FEFF7F7DC88EC /* counting_query_engine.cc */; };
10451050
DD213F68A6F79E1D4924BD95 /* Pods_Firestore_Example_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42355285B9EF55ABD785792 /* Pods_Firestore_Example_macOS.framework */; };
10461051
DD5976A45071455FF3FE74B8 /* string_win_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 79507DF8378D3C42F5B36268 /* string_win_test.cc */; };
@@ -1143,6 +1148,7 @@
11431148
F73471529D36DD48ABD8AAE8 /* async_testing.cc in Sources */ = {isa = PBXBuildFile; fileRef = 872C92ABD71B12784A1C5520 /* async_testing.cc */; };
11441149
F7718C43D3A8FCCDB4BB0071 /* geo_point_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB7BAB332012B519001E0872 /* geo_point_test.cc */; };
11451150
F7B1DF16A9DDFB664EA98EBB /* memory_remote_document_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1CA9800A53669EFBFFB824E3 /* memory_remote_document_cache_test.cc */; };
1151+
F800F48743D3CB31BA1EBAE7 /* random_access_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 014C60628830D95031574D15 /* random_access_queue_test.cc */; };
11461152
F950A371FADCA2F0B73683E0 /* remote_document_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7EB299CF85034F09CFD6F3FD /* remote_document_cache_test.cc */; };
11471153
F9705E595FC3818F13F6375A /* to_string_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B68B1E002213A764008977EF /* to_string_apple_test.mm */; };
11481154
F9DC01FCBE76CD4F0453A67C /* strerror_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 358C3B5FE573B1D60A4F7592 /* strerror_test.cc */; };
@@ -1228,6 +1234,7 @@
12281234
/* End PBXContainerItemProxy section */
12291235

12301236
/* Begin PBXFileReference section */
1237+
014C60628830D95031574D15 /* random_access_queue_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = random_access_queue_test.cc; sourceTree = "<group>"; };
12311238
045D39C4A7D52AF58264240F /* remote_document_cache_test.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = remote_document_cache_test.h; sourceTree = "<group>"; };
12321239
0473AFFF5567E667A125347B /* ordered_code_benchmark.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ordered_code_benchmark.cc; sourceTree = "<group>"; };
12331240
0840319686A223CC4AD3FAB1 /* leveldb_remote_document_cache_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = leveldb_remote_document_cache_test.cc; sourceTree = "<group>"; };
@@ -1786,6 +1793,7 @@
17861793
0473AFFF5567E667A125347B /* ordered_code_benchmark.cc */,
17871794
AB380D03201BC6E400D97691 /* ordered_code_test.cc */,
17881795
403DBF6EFB541DFD01582AA3 /* path_test.cc */,
1796+
014C60628830D95031574D15 /* random_access_queue_test.cc */,
17891797
9B0B005A79E765AF02793DCE /* schedule_test.cc */,
17901798
54740A531FC913E500713A1A /* secure_random_test.cc */,
17911799
5493A423225F9990006DE7BA /* status_apple_test.mm */,
@@ -3392,6 +3400,7 @@
33923400
21E66B6A4A00786C3E934EB1 /* query_engine_test.cc in Sources */,
33933401
AC03C4F1456FB1C0D88E94FF /* query_listener_test.cc in Sources */,
33943402
7EF540911720DAAF516BEDF0 /* query_test.cc in Sources */,
3403+
3AFBEF94A35034719477C066 /* random_access_queue_test.cc in Sources */,
33953404
37EC6C6EA9169BB99078CA96 /* reference_set_test.cc in Sources */,
33963405
4E0777435A9A26B8B2C08A1E /* remote_document_cache_test.cc in Sources */,
33973406
D377FA653FB976FB474D748C /* remote_event_test.cc in Sources */,
@@ -3569,6 +3578,7 @@
35693578
0ABCE06A0D96EA3899B3A259 /* query_engine_test.cc in Sources */,
35703579
0D88B4CB916A4752B08E5B42 /* query_listener_test.cc in Sources */,
35713580
F481368DB694B3B4D0C8E4A2 /* query_test.cc in Sources */,
3581+
F800F48743D3CB31BA1EBAE7 /* random_access_queue_test.cc in Sources */,
35723582
7DBE7DB90CF83B589A94980F /* reference_set_test.cc in Sources */,
35733583
F696B7467E80E370FDB3EAA7 /* remote_document_cache_test.cc in Sources */,
35743584
EF43FF491B9282E0330E4CA2 /* remote_event_test.cc in Sources */,
@@ -3758,6 +3768,7 @@
37583768
7A2D523AEF58B1413CC8D64F /* query_engine_test.cc in Sources */,
37593769
05D99904EA713414928DD920 /* query_listener_test.cc in Sources */,
37603770
339CFFD1323BDCA61EAAFE31 /* query_test.cc in Sources */,
3771+
C1F8991BD11FFD705D74244F /* random_access_queue_test.cc in Sources */,
37613772
C25F321AC9BF8D1CFC8543AF /* reference_set_test.cc in Sources */,
37623773
65537B22A73E3909666FB5BC /* remote_document_cache_test.cc in Sources */,
37633774
37286D731E432CB873354357 /* remote_event_test.cc in Sources */,
@@ -3947,6 +3958,7 @@
39473958
FB2D5208A6B5816A7244D77A /* query_engine_test.cc in Sources */,
39483959
6C92AD45A3619A18ECCA5B1F /* query_listener_test.cc in Sources */,
39493960
9617B75E9E27E7BA46D87EF3 /* query_test.cc in Sources */,
3961+
3409F2AEB7D6D95478D4344A /* random_access_queue_test.cc in Sources */,
39503962
FBBB13329D3B5827C21AE7AB /* reference_set_test.cc in Sources */,
39513963
77BB66DD17A8E6545DE22E0B /* remote_document_cache_test.cc in Sources */,
39523964
A7309DAD4A3B5334536ECA46 /* remote_event_test.cc in Sources */,
@@ -4134,6 +4146,7 @@
41344146
9012B0E121B99B9C7E54160B /* query_engine_test.cc in Sources */,
41354147
CD226D868CEFA9D557EF33A1 /* query_listener_test.cc in Sources */,
41364148
6F3CAC76D918D6B0917EDF92 /* query_test.cc in Sources */,
4149+
AC6B856ACB12BB28D279693D /* random_access_queue_test.cc in Sources */,
41374150
132E3483789344640A52F223 /* reference_set_test.cc in Sources */,
41384151
F950A371FADCA2F0B73683E0 /* remote_document_cache_test.cc in Sources */,
41394152
59880AE766F7FBFF0C41A94E /* remote_event_test.cc in Sources */,
@@ -4342,6 +4355,7 @@
43424355
5DA741B0B90DB8DAB0AAE53C /* query_engine_test.cc in Sources */,
43434356
BC8DFBCB023DBD914E27AA7D /* query_listener_test.cc in Sources */,
43444357
DE435F33CE563E238868D318 /* query_test.cc in Sources */,
4358+
DC6804424FC8F7B3044DD0BB /* random_access_queue_test.cc in Sources */,
43454359
B921A4F35B58925D958DD9A6 /* reference_set_test.cc in Sources */,
43464360
E2AE851F9DC4C037CCD05E36 /* remote_document_cache_test.cc in Sources */,
43474361
AD35AA07F973934BA30C9000 /* remote_event_test.cc in Sources */,

Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#import <Foundation/Foundation.h>
1818

1919
#include <cstddef>
20-
#include <deque>
2120
#include <map>
2221
#include <memory>
2322
#include <unordered_map>
@@ -289,7 +288,7 @@ typedef std::unordered_map<auth::User, NSMutableArray<FSTOutstandingWrite *> *,
289288
- (std::map<model::DocumentKey, model::TargetId>)activeLimboDocumentResolutions;
290289

291290
/** The current set of documents in limbo that are enqueued for resolution. */
292-
- (std::deque<model::DocumentKey>)enqueuedLimboDocumentResolutions;
291+
- (std::vector<model::DocumentKey>)enqueuedLimboDocumentResolutions;
293292

294293
/** The expected set of documents in limbo with an active target. */
295294
- (const model::DocumentKeySet &)expectedActiveLimboDocuments;

Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ - (void)receiveWatchStreamError:(int)errorCode userInfo:(NSDictionary<NSString *
518518
return _syncEngine->GetActiveLimboDocumentResolutions();
519519
}
520520

521-
- (std::deque<DocumentKey>)enqueuedLimboDocumentResolutions {
521+
- (std::vector<DocumentKey>)enqueuedLimboDocumentResolutions {
522522
return _syncEngine->GetEnqueuedLimboDocumentResolutions();
523523
}
524524

0 commit comments

Comments
 (0)