firebase / firebase/firebase-android-sdk
[CLOUD_FIRESTORE] Long fetching time of data in local cache
- Dominant language
- Java
- Stars
- 2.6k
- Forks
- 710
- Avg merge
- 2d 23h
- Merged PRs (30d)
- 34
Description
### [REQUIRED] Step 2: Describe your environment
Packages in Flutter project:
- firebase_core: 4.4.0
- cloud_firestore: 6.1.2 (corresponding to Firebase BoM 34.7.0)
### [REQUIRED] Step 3: Describe the problem
We've noticed an issue with persistent storage in our Flutter project. Very similar to https://github.com/firebase/firebase-android-sdk/issues/7198#issuecomment-4045347626. It happens only on Android, I’m not able to reproduce it on iOS.
When we have a lot of cached data e.g. 5k records, then some specific queries need much more time to be executed e.g. 100ms vs 2s.
Here is an example of a query:
```dart
final DateTime nowDateTime = DateTime.now();
query = query
.where('Dateandtime', isGreaterThanOrEqualTo: Timestamp.fromDate(nowDateTime))
.where('Dateandtime',
isLessThanOrEqualTo: Timestamp.fromDate(nowDateTime.add(const Duration(days: 7))));
```
Disabling persistence storage fixes the issue.
I also tried enabling automatic index creation and manually providing indexes, but I didn’t notice any significant difference.
#### Steps to reproduce:
1. Fetch a list of items using Stream. It should return data very quickly.
2. Persistence storage is enabled. Fetch ~5k random items.
3. Execute the same query as in step 1. The execution time increases a lot.
Here is also a SQLite database with the state at which executing the above query takes ~2s instead of 200ms.
https://drive.google.com/file/d/1rP3hB6qSMjRqUshvmS7rMrNIhDJSXyqh/view?usp=sharing
cc: @dconeybe
If you won't be able to reproduce the issue let me know. I will try to help.
Contributor guide
Assessment
This issue has not been assessed yet.