firebase-android-sdk icon indicating copy to clipboard operation
firebase-android-sdk copied to clipboard

Realtime Database get() API doesn't time out when getting data that is not in cache while offline

Open puf opened this issue 11 months ago • 2 comments

Context: https://stackoverflow.com/q/78117075

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: N/A
  • Firebase Component: Database
  • Component version: 20.3.1 (BoM: 32.7.4)

[REQUIRED] Step 3: Describe the problem

Code:

val ref = database
    .getReference("timeline/240306/stations")
    .orderByChild("tripName")
    .equalTo(tripNameDouble)

ref.get()
  .addOnSuccessListener{...}
  .addOnFailureListener{...}
  .addOnCanceledListener{...} 

When executing this code while offline when never having executed this query/accessed this path before (so without any info for it in the cache), I expect the failure listener to be invoked, after the call to the server times out. Instead none of the callbacks is ever invoked, which means developers have to work around this condition with their own timeout mechanism.

puf avatar Mar 08 '24 21:03 puf

Hi @puf, thank you for filing the issue. I was able to reproduce the behavior where no callback is invoked. It makes sense to me to expect the failure listener to be invoked after the server call times out. I’ll inform our engineers about this and see what we can do here.

lehcar09 avatar Mar 11 '24 13:03 lehcar09

Any update on this? There's another similar bug that never times out when there is no data at the reference. I would expect a failure or a null value to return on success.

val ref = database.getReference("ref").get().await()

kennyli92 avatar Apr 25 '24 19:04 kennyli92