@@ -108,11 +108,13 @@ protected static void setCachedFirebaseFirestoreInstanceForKey(
108108
109109 protected static FirebaseFirestore getFirestoreInstanceByNameAndDatabaseUrl (
110110 String appName , String databaseURL ) {
111- for (Map .Entry <FirebaseFirestore , FlutterFirebaseFirestoreExtension > entry :
112- firestoreInstanceCache .entrySet ()) {
113- if (entry .getValue ().getInstance ().getApp ().getName ().equals (appName )
114- && entry .getValue ().getDatabaseURL ().equals (databaseURL )) {
115- return entry .getKey ();
111+ synchronized (firestoreInstanceCache ) {
112+ for (Map .Entry <FirebaseFirestore , FlutterFirebaseFirestoreExtension > entry :
113+ firestoreInstanceCache .entrySet ()) {
114+ if (entry .getValue ().getInstance ().getApp ().getName ().equals (appName )
115+ && entry .getValue ().getDatabaseURL ().equals (databaseURL )) {
116+ return entry .getKey ();
117+ }
116118 }
117119 }
118120 return null ;
@@ -200,12 +202,14 @@ public Task<Void> didReinitializeFirebaseCore() {
200202 () -> {
201203 try {
202204 // Context is ignored by API so we don't send it over even though annotated non-null.
203- for (Map .Entry <FirebaseFirestore , FlutterFirebaseFirestoreExtension > entry :
204- firestoreInstanceCache .entrySet ()) {
205- FirebaseFirestore firestore = entry .getKey ();
206- Tasks .await (firestore .terminate ());
207- FlutterFirebaseFirestorePlugin .destroyCachedFirebaseFirestoreInstanceForKey (
208- firestore );
205+ synchronized (firestoreInstanceCache ) {
206+ for (Map .Entry <FirebaseFirestore , FlutterFirebaseFirestoreExtension > entry :
207+ firestoreInstanceCache .entrySet ()) {
208+ FirebaseFirestore firestore = entry .getKey ();
209+ Tasks .await (firestore .terminate ());
210+ FlutterFirebaseFirestorePlugin .destroyCachedFirebaseFirestoreInstanceForKey (
211+ firestore );
212+ }
209213 }
210214 removeEventListeners ();
211215
0 commit comments