From ae326815e4008639edd95bbd7d1ab4cc8e9425b8 Mon Sep 17 00:00:00 2001 From: Michael Lehenbauer Date: Tue, 26 Jun 2018 12:11:40 -0700 Subject: Improves "Could not reach Firestore backend." log message. (#1455) Port of https://github.com/firebase/firebase-js-sdk/pull/864 --- Firestore/Source/Remote/FSTOnlineStateTracker.mm | 27 ++++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'Firestore/Source/Remote/FSTOnlineStateTracker.mm') diff --git a/Firestore/Source/Remote/FSTOnlineStateTracker.mm b/Firestore/Source/Remote/FSTOnlineStateTracker.mm index fb993e5..a5c2b38 100644 --- a/Firestore/Source/Remote/FSTOnlineStateTracker.mm +++ b/Firestore/Source/Remote/FSTOnlineStateTracker.mm @@ -84,11 +84,10 @@ static const NSTimeInterval kOnlineStateTimeout = 10; HARD_ASSERT( self.state == FSTOnlineStateUnknown, "Timer should be canceled if we transitioned to a different state."); - LOG_DEBUG( - "Watch stream didn't reach Online or Offline within %s seconds. " - "Considering client offline.", - kOnlineStateTimeout); - [self logClientOfflineWarningIfNecessary]; + [self logClientOfflineWarningIfNecessaryWithReason: + [NSString + stringWithFormat:@"Backend didn't respond within %f seconds.", + kOnlineStateTimeout]]; [self setAndBroadcastState:FSTOnlineStateOffline]; // NOTE: handleWatchStreamFailure will continue to increment @@ -98,7 +97,7 @@ static const NSTimeInterval kOnlineStateTimeout = 10; } } -- (void)handleWatchStreamFailure { +- (void)handleWatchStreamFailure:(NSError *)error { if (self.state == FSTOnlineStateOnline) { [self setAndBroadcastState:FSTOnlineStateUnknown]; @@ -110,7 +109,9 @@ static const NSTimeInterval kOnlineStateTimeout = 10; self.watchStreamFailures++; if (self.watchStreamFailures >= kMaxWatchStreamFailures) { [self clearOnlineStateTimer]; - [self logClientOfflineWarningIfNecessary]; + [self logClientOfflineWarningIfNecessaryWithReason: + [NSString stringWithFormat:@"Connection failed %d times. Most recent error: %@", + kMaxWatchStreamFailures, error]]; [self setAndBroadcastState:FSTOnlineStateOffline]; } } @@ -136,10 +137,18 @@ static const NSTimeInterval kOnlineStateTimeout = 10; } } -- (void)logClientOfflineWarningIfNecessary { +- (void)logClientOfflineWarningIfNecessaryWithReason:(NSString *)reason { + NSString *message = [NSString + stringWithFormat: + @"Could not reach Cloud Firestore backend. %@\n This typically indicates that your " + @"device does not have a healthy Internet connection at the moment. The client will " + @"operate in offline mode until it is able to successfully connect to the backend.", + reason]; if (self.shouldWarnClientIsOffline) { - LOG_WARN("Could not reach Firestore backend."); + LOG_WARN("%s", message); self.shouldWarnClientIsOffline = NO; + } else { + LOG_DEBUG("%s", message); } } -- cgit v1.2.3