Fuse.Firebase icon indicating copy to clipboard operation
Fuse.Firebase copied to clipboard

Issue when detaching listeners on android

Open shnupta opened this issue 7 years ago • 0 comments

When a user logs out of my app I detach various listeners from different paths. Sometimes it logs them out fine however around 1 in 5 times the app will crash after the user has been logged out. Here is the output from the console:

06-20 20:41:37.203 29260 29734 W SyncTree: Listen at /users/liApgOzu1pg6jHSUp29xQiqo8T83/riders failed: DatabaseError: Permission denied
06-20 20:41:37.219 29260 29734 W SyncTree: Listen at /events failed: DatabaseError: Permission denied
06-20 20:41:37.221 29260 29260 D QuickLaps: Uno.Exception: This promise is already resolved or rejected
06-20 20:41:37.221 29260 29260 D QuickLaps:    at Uno.Threading.Future`1.InternalReject(Uno.Exception)
06-20 20:41:37.221 29260 29260 D QuickLaps:    at Uno.Threading.Promise`1.Reject(Uno.Exception)
06-20 20:41:37.221 29260 29260 D QuickLaps:    at Firebase.Database.Read.Reject(string)
06-20 20:41:37.221 29260 29260 D AndroidRuntime: Shutting down VM
06-20 20:41:37.223 29260 29260 E AndroidRuntime: FATAL EXCEPTION: main
06-20 20:41:37.223 29260 29260 E AndroidRuntime: Process: io.github.shnupta.quick_laps, PID: 29260
06-20 20:41:37.223 29260 29260 E AndroidRuntime: java.lang.RuntimeException: Uno.Exception: This promise is already resolved or rejected
06-20 20:41:37.223 29260 29260 E AndroidRuntime:    at Uno.Threading.Future`1.InternalReject(Uno.Exception)
06-20 20:41:37.223 29260 29260 E AndroidRuntime:    at Uno.Threading.Promise`1.Reject(Uno.Exception)
06-20 20:41:37.223 29260 29260 E AndroidRuntime:    at Firebase.Database.Read.Reject(string)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at com.Bindings.ExternedBlockHost.callUno_Firebase_Database_Read_Reject1454(Native Method)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at com.foreign.Firebase.Database.Read$1.onCancelled(Read.java:59)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at com.google.firebase.database.Query$1.onCancelled(Unknown Source:2)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at com.google.android.gms.internal.zzaih.zza(Unknown Source:2)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at com.google.android.gms.internal.zzajf.zzctc(Unknown Source:4)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at com.google.android.gms.internal.zzajk$1.run(Unknown Source:62)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:790)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:164)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6753)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482)
06-20 20:41:37.223 29260 29260 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
06-20 20:41:37.226   592   592 E SELinux : avc:  denied  { find } for service=opdiagnose pid=29260 uid=10263 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:opdiagnose_service:s0 tclass=service_manager permissive=0
06-20 20:41:37.226   592   592 E SELinux : avc:  denied  { find } for service=opdiagnose pid=29260 uid=10263 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:opdiagnose_service:s0 tclass=service_manager permissive=0
06-20 20:41:37.227 29260 29260 W OPDiagnose: getService:OPDiagnoseService NULL
06-20 20:41:37.233 29260 31073 D OSTracker: OS Event: crash
06-20 20:41:37.347 29260 31073 D AbstractTracker: Event success
06-20 20:41:37.367 29260 29734 W SyncTree: Listen at /users/riders failed: DatabaseError: Permission denied
06-20 20:41:37.381 29260 29734 W SyncTree: Listen at /events failed: DatabaseError: Permission denied

Looking at the source, I'm confused as to why the Android method for DetachListeners is empty? If this is supposed to be then is there a way to check whether the current promise has already been resolved before calling a read?

shnupta avatar Jun 20 '18 21:06 shnupta