firebase / firebase/firebase-android-sdk

Firebase Storage - StorageTask cannot be canceled while the network connection is unavailable

Open
#3,700 2 comments 0 reactions 0 assignees View on GitHub
api: storage internal-bug-filed
Dominant language
Java
Stars
2.6k
Forks
710
Avg merge
2d 23h
Merged PRs (30d)
34

Description

### [REQUIRED] Step 2: Describe your environment

* Android Studio version: Bumblebee 2021.1.1 Patch 3
* Firebase Component: Storage
* Component version: firebase-storage:20.0.1

### [REQUIRED] Step 3: Describe the problem

StorageTask cannot be canceled while the network connection is unavailable.

#### Relevant Code:

```kotlin
suspend fun reproduceBug() {
// STEP 1 - turn off network connection (wifi/mobile)
val task = FirebaseStorage.getInstance()
.getReference("my-firebase-storage.json")
.getFile(File("my-file-pathname"))
task.addOnCanceledListener {
// even though task.cancel() returns true,
// listener will not be called until network connection gets established
}
task.addOnCompleteListener {
// even though task.cancel() returns true,
// listener will not be called until network connection gets established
}
delay(5000)
val isCanceled = task.cancel() // returns true, but not canceled
}
```

StorageTask goes into 'canceling' state:
https://github.com/firebase/firebase-android-sdk/blob/f625c8c72aa6cca2429af3a0c67928fe37be9ffb/firebase-storage/src/main/java/com/google/firebase/storage/StorageTask.java#L50
ExponentialBackoffSender is stuck in the while loop, wasting resources, until it hits max-wait-time or network connection is established, because 'cancel' is not yet called.
https://github.com/firebase/firebase-android-sdk/blob/f625c8c72aa6cca2429af3a0c67928fe37be9ffb/firebase-storage/src/main/java/com/google/firebase/storage/internal/ExponentialBackoffSender.java#L86
https://github.com/firebase/firebase-android-sdk/blob/f625c8c72aa6cca2429af3a0c67928fe37be9ffb/firebase-storage/src/main/java/com/google/firebase/storage/internal/ExponentialBackoffSender.java#L124

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.