App: HIGH: [Debugability] [$250] Add logging around offline state to help diagnose bugs

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!


Version Number: Needs reproduction Reproducible in staging?: N/A Reproducible in production?: N/A If this was caught during regression testing, add the test name, ID and link from TestRail: Email or phone of affected tester (no customers): @quinthar Logs: https://stackoverflow.com/c/expensify/questions/4856 Expensify/Expensify Issue URL: Issue reported by: @quinthar Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1712886605520589

Action Performed:

  1. Open NewDot being online
  2. Observe there is a message " You appear to be offline"
  3. Do some actions and check the API request

Expected Result:

  • " You appear to be offline" should not show when online
  • If offline then success 200 OK API request should not be showin
  • No pusher notification Add something to the logs that will help diagnose this

Actual Result:

  • " You appear to be offline" message appears when online
  • Success 200 OK API request appears
  • Push notification is received I don’t see anything useful in the logs. Can we maybe improve the logging around whatever code we use to determine if we’re online to output its logic so we can diagnose and fix it.

Workaround:

unknown

Platforms:

Which of our officially supported platforms is this issue occurring on?

  • Android: Native
  • Android: mWeb Chrome
  • iOS: Native
  • iOS: mWeb Safari
  • MacOS: Chrome / Safari
  • MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence

image (4)

image (5)

View all open jobs on GitHub

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~016051a56c40abfc4a
  • Upwork Job ID: 1782729213837856768
  • Last Price Increase: 2024-04-23
  • Automatic offers:
    • nkdengineer | Contributor | 0

About this issue

  • Original URL
  • State: open
  • Created 3 months ago
  • Comments: 17 (5 by maintainers)

Most upvoted comments

Proposal

Please re-state the problem that we are trying to solve in this issue.

Nothing useful in the logs to debug online/offline issues

What is the root cause of that problem?

We don’t have such logs.

What changes do you think we should make in order to solve the problem?

There’re 3 places we’re setting offline status via setOfflineStatus, we should add additional logs with the context by Log.info

  1. In https://github.com/Expensify/App/blob/7ca0748be632d0ef4f93a6171a8dc768fc11817b/src/libs/NetworkConnection.ts#L62 We should log:
Log.info(`[NetworkStatus] Setting "offlineStatus" to "true" because user is under force offline`);
  1. In https://github.com/Expensify/App/blob/7ca0748be632d0ef4f93a6171a8dc768fc11817b/src/libs/NetworkConnection.ts#L65

We should log the full state that NetInfo returned

Log.info(`[NetworkStatus] The user is not under force offline, calling NetInfo.fetch, setting "offlineStatus" to ${(state.isInternetReachable ?? false) === false} with network state: ${JSON.stringify(state)}`);
  1. In https://github.com/Expensify/App/blob/7ca0748be632d0ef4f93a6171a8dc768fc11817b/src/libs/NetworkConnection.ts#L109

We should log the full state that NetInfo returned, and mention that this is set in NetInfo.addEventListener

Log.info(`[NetworkStatus] NetInfo.addEventListener event coming, setting "offlineStatus" to ${(state.isInternetReachable ?? false) === false} with network state: ${JSON.stringify(state)}`);

We can logs the logic we use to determine offline status (state.isInternetReachable ?? false) === false, if that’s necessary.

Those are the core places we need the logs, the specifics of the log content/params can be adjusted in the PR phase.

What alternative solutions did you explore? (Optional)

Currently we have only true/false network status, if later we decide to have enum/number/string network statuses, then we need to log that value in the same way.