@@ -574,29 +574,9 @@ public void releaseQuery(Query query) {
574
574
persistence .runTransaction (
575
575
"Release query" ,
576
576
() -> {
577
- QueryData queryData = queryCache . getQueryData (query );
577
+ QueryData queryData = getQueryData (query );
578
578
hardAssert (queryData != null , "Tried to release nonexistent query: %s" , query );
579
579
580
- int targetId = queryData .getTargetId ();
581
- QueryData cachedQueryData = targetIds .get (targetId );
582
-
583
- boolean needsUpdate = false ;
584
- if (cachedQueryData .getSnapshotVersion ().compareTo (queryData .getSnapshotVersion ()) > 0 ) {
585
- // If we've been avoiding persisting the resumeToken (see shouldPersistQueryData for
586
- // conditions and rationale) we need to persist the token now because there will no
587
- // longer be an in-memory version to fall back on.
588
- needsUpdate = true ;
589
- } else if (!cachedQueryData
590
- .getLastLimboFreeSnapshotVersion ()
591
- .equals (queryData .getLastLimboFreeSnapshotVersion ())) {
592
- needsUpdate = true ;
593
- }
594
-
595
- if (needsUpdate ) {
596
- queryData = cachedQueryData ;
597
- queryCache .updateQueryData (queryData );
598
- }
599
-
600
580
// References for documents sent via Watch are automatically removed when we delete a
601
581
// query's target data from the reference delegate. Since this does not remove references
602
582
// for locally mutated documents, we have to remove the target associations for these
@@ -606,6 +586,8 @@ public void releaseQuery(Query query) {
606
586
for (DocumentKey key : removedReferences ) {
607
587
persistence .getReferenceDelegate ().removeReference (key );
608
588
}
589
+
590
+ // Note: This also updates the query cache
609
591
persistence .getReferenceDelegate ().removeTarget (queryData );
610
592
targetIds .remove (queryData .getTargetId ());
611
593
});
0 commit comments