diff --git a/firebase-firestore/CHANGELOG.md b/firebase-firestore/CHANGELOG.md index 13d56e5ac6a..bbee08cee85 100644 --- a/firebase-firestore/CHANGELOG.md +++ b/firebase-firestore/CHANGELOG.md @@ -1,4 +1,7 @@ # Unreleased +- [fixed] Removed a delay that may have prevented Firestore from immediately + reestablishing a network connection if a connectivity change occurred while + the app was in the background. - [fixed] Fixed an issue that may have prevented the client from connecting to the backend immediately after a user signed in. diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/remote/RemoteStore.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/remote/RemoteStore.java index 1c38f149496..088576ae526 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/remote/RemoteStore.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/remote/RemoteStore.java @@ -211,6 +211,9 @@ public void onClose(Status status) { (NetworkStatus networkStatus) -> { workerQueue.enqueueAndForget( () -> { + // Porting Note: Unlike iOS, `restartNetwork()` is called even when the network + // becomes unreachable as we don't have any other way to tear down our streams. + // If the network has been explicitly disabled, make sure we don't accidentally // re-enable it. if (canUseNetwork()) { @@ -277,6 +280,8 @@ private void restartNetwork() { networkEnabled = false; disableNetworkInternal(); onlineStateTracker.updateState(OnlineState.UNKNOWN); + writeStream.inhibitBackoff(); + watchStream.inhibitBackoff(); enableNetwork(); }