Skip to content

[Due for payment 2026-08-28] [No QA] stop the pong watchdog from reconnecting Pusher #98886

Closed

Description

@mountiny

Problem

The PING/PONG watchdog declares a live socket dead. Its 60 second staleness threshold equals the PING cadence the app actually reaches in production, so the check fires on healthy connections. Every false alarm discards a working socket and pulls a full ReconnectApp sync behind it.

The volume is large. In a 4 hour baseline window the presumed dead path fired 96,667 times across 20,163 users, an average of 4.79 each, with 541 users firing 20 or more times. That works out to 565,054 watchdog reconnects per day and roughly 1,450,000 presumed alive log lines per 4 hours.

Solution

Delete the reconnect from the watchdog. Recovery moves to the Pusher SDK, which detects a dead socket with a websocket ping frame on the connection under test, so a stale PONG no longer throws away a socket that still works. The watchdog keeps logging staleness, with [Pusher PINGPONG] The server has not sent a PONG in ... leaving recovery to the Pusher SDK replacing the old presumed dead and Pusher is being reconnected line.

The prediction this PR is measured against: presumed dead fires, watchdog reconnects and presumed alive log lines all drop to zero, and pushed ReconnectApp per user per 4 hours falls from 5.45 to between 4.25 and 4.47, a drop of 18% to 22%. GetMissingOnyxMessages did not advance is the control at 1.10 per user and must not rise. Recovery is slower by design, so allow up to 150 seconds for a socket to come back after sleep or backgrounding.

PR

#98884

Issue OwnerCurrent Issue Owner: @mallenexpensify

Activity

  1. changed the title [-][No QA] stop the pong watchdog from reconnecting Pusher[/-] [+][Due for payment 2026-08-28] [No QA] stop the pong watchdog from reconnecting Pusher[/+] on Aug 21, 2026
  2. melvin-bot commented on Aug 21, 2026

    @melvin-bot

    @ZhenjaHorbach

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.4.57-3 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:

    If no regressions arise, payment will be issued on 2026-08-28. 🎊

    The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]

  3. melvin-bot commented on Aug 24, 2026

    @melvin-bot

    @ZhenjaHorbach Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

  4. melvin-bot commented on Aug 26, 2026

    @melvin-bot

    @ZhenjaHorbach Eep! 4 days overdue now. Issues have feelings too...

  5. melvin-bot commented on Aug 27, 2026

    @melvin-bot

    Triggered auto assignment to @mallenexpensify (Awaiting Payment)

  6. melvin-bot commented on Aug 27, 2026

    @melvin-bot

    Payment Summary

    Resolving PRs:

    BugZero Checklist (@mallenexpensify)

    • I have confirmed assignees, roles, and Upwork contracts look correct
    • I have paid out Upwork contracts / manual NewDot requests
    • [BugZero Assignee] I have created a GH issue for creating/updating the regression test once above steps have been agreed upon
  7. ZhenjaHorbach commented on Aug 28, 2026

    @ZhenjaHorbach
    Contributor

    It's a performance issue
    So don't need a checklist here

  8. mallenexpensify commented on Aug 31, 2026

    @mallenexpensify
    Contributor

    Payment Summary

    Contributor+: @ZhenjaHorbach due $250 via NewDot

  9. garrettmknight commented on Sep 2, 2026

    @garrettmknight
    Contributor

    $250 approved for @ZhenjaHorbach

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionDailyKSv2Task

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions