Skip to content

Telemetry pings silently dropped on desktop Firefox since v10.5.42 #3494

Description

@chrmod

Summary

Since v10.5.42, active and engaged telemetry pings are silently dropped on a subset of desktop Firefox profiles. Telemetry shows ~7% of desktop-Firefox DAU (Windows/Mac/Linux, uniform) went silent from mid-May and never recovered; Chrome/Edge/Safari and Firefox-Android are unaffected. Tracker blocking is not affected — this is a metrics-only regression (affected users are still active, just uncounted).

Cause

#3331 added a pv ping param, which put an unguarded IndexedDB read on the ping's critical path in src/background/telemetry/index.js (getConf):

const [options, config, dailyStats] = await Promise.all([
  store.resolve(Options),
  store.resolve(Config),
  store.resolve(DailyStats, yesterdayId),   // rejects if the `insights` DB fails to open
]);

store.resolve rejects on a failed DB open. Long-lived (pre-v10) desktop-Firefox profiles hit a throwing branch in the daily-stats.js v31 upgrade() (deleteObjectStore('search'/'tabs'), or missing daily store). The rejection flows through getConf_buildMetricsUrl and is swallowed by the .catch in _recordActive/_recordEngaged, so both pings are dropped — and since the timestamps are already advanced, there's no retry until the next window, where it fails again. Fresh installs create a clean v31 DB and are unaffected.

Fix

Make the DailyStats read non-fatal: wrap it in try/catch and default yesterdayPages to 0 (→ pv=0) instead of letting it reject getConf. Logging the caught IndexedDB error name would confirm the exact failure on affected profiles.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions