diff --git a/firebase-firestore/CHANGELOG.md b/firebase-firestore/CHANGELOG.md index ef6e74ea3a1..9ce32df41f1 100644 --- a/firebase-firestore/CHANGELOG.md +++ b/firebase-firestore/CHANGELOG.md @@ -8,6 +8,8 @@ by opting into a release at AppCheck users that set their expiration time to under an hour. - [fixed] Fixed a potential problem during Firestore's shutdown that prevented the shutdown from proceeding if a network connection was opened right before. +- [changed] Queries are now send to the backend before the SDK starts local + processing, which reduces overall Query latency. # 24.0.1 - [changed] Improved performance for databases that contain many document diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/SyncEngine.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/SyncEngine.java index fb63ebce7b1..f51d1e88062 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/SyncEngine.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/SyncEngine.java @@ -201,10 +201,11 @@ public int listen(Query query) { hardAssert(!queryViewsByQuery.containsKey(query), "We already listen to query: %s", query); TargetData targetData = localStore.allocateTarget(query.toTarget()); + remoteStore.listen(targetData); + ViewSnapshot viewSnapshot = initializeViewAndComputeSnapshot(query, targetData.getTargetId()); syncEngineListener.onViewSnapshots(Collections.singletonList(viewSnapshot)); - remoteStore.listen(targetData); return targetData.getTargetId(); }