Skip to content

Failed to apply bugzilla.create_bug action #6752

Description

@suhaibmujahid

https://hackbot.moz.tools/runs/b6157276-5da1-4e58-bbff-13518982a546

Here is the action that failed with http 400 error:

{
      "type": "bugzilla.create_bug",
      "params": {
        "product": "Toolkit",
        "component": "Application Update",
        "summary": "update.status_error_code_* metrics have range_max: 100, collapsing updater status codes >= 100 into the overflow bucket",
        "version": "unspecified",
        "description": "Follow-up from review of [D321460](https://phabricator.services.mozilla.com/D321460) (bug 2066420), requested by :yjuglaret.\n\n### Problem\n\nThe six status-error-code metrics in `toolkit/mozapps/update/metrics.yaml` are declared as:\n\n```yaml\n    type: custom_distribution\n    range_min: 0\n    range_max: 100\n    bucket_count: 101\n    histogram_type: linear\n```\n\n- `update.status_error_code_complete_startup`\n- `update.status_error_code_partial_startup`\n- `update.status_error_code_unknown_startup`\n- `update.status_error_code_complete_stage`\n- `update.status_error_code_partial_stage`\n- `update.status_error_code_unknown_stage`\n\nWith a 0..100 linear distribution of 101 buckets, the top bucket is the `100` overflow bucket, so every sample >= 100 is collapsed into it. `AUSTLMY.pingStatusErrorCode()` (`UpdateTelemetry.sys.mjs`) passes the code to `accumulateSingleSample()` with no clamping or remapping, so this happens silently.\n\nUpdater status codes have since grown past that limit (`toolkit/mozapps/update/common/updatererrors.h`):\n\n| Code | Name |\n| --- | --- |\n| 100 | `FALLBACKKEY_UNKNOWN_ERROR` |\n| 101 | `FALLBACKKEY_REGPATH_ERROR` |\n| 102 | `FALLBACKKEY_NOKEY_ERROR` |\n| 103 | `FALLBACKKEY_SERVICE_NO_STOP_ERROR` |\n| 104 | `FALLBACKKEY_LAUNCH_ERROR` |\n| 105 | `SILENT_UPDATE_NEEDED_ELEVATION_ERROR` |\n| 106 | `BACKGROUND_TASK_SHARING_VIOLATION` |\n\n105 and 106 are genuinely written to `update.status` by `updater.cpp` (`WriteStatusFile(SILENT_UPDATE_NEEDED_ELEVATION_ERROR)`, `WriteStatusFile(BACKGROUND_TASK_SHARING_VIOLATION)`), so they do reach `pingStatusErrorCode()` and are indistinguishable from each other in the data.\n\n### Notes\n\n- Bug 1940967 (FIXED) removed the glean_parser/Glean 100-bucket cap and explicitly cited `UPDATE_STATUS_ERROR_CODE_*` as a motivating case, so a wider range is no longer blocked by the SDK. It did not change any `update.*` metric definition.\n- Since these metrics were mechanically generated from the Legacy Telemetry enumerated histograms during the bug 1963871 migration, widening the range is a metric-definition change and likely wants new metric names plus a data review rather than an in-place edit of a `expires: never` probe.\n- Not affected: `update.state_code_*` use `range_max: 20` and the highest state code is 14; `update.download_code_*` use 50; `update.bits_result_*` use 99/100.\n- Bug 2066420 does not fix this - if anything it makes the overflow observable, since before it no updater error code reached the `*_startup` probes at all.\n\n### Suggested fix\n\nIntroduce new `custom_distribution` metrics with a range that covers the current code space with headroom (and keep the reserved JS-side ranges in mind: 80-99 for `UpdateService.sys.mjs`, 110-111 reserved), then switch `pingStatusErrorCode()` over to them.",
        "is_markdown": true,
        "type": "defect",
        "see_also": [
          "https://bugzilla.mozilla.org/show_bug.cgi?id=2066420",
          "https://phabricator.services.mozilla.com/D321460"
        ],
        "depends_on": [
          1940967
        ]
      },
      "reasoning": "yjuglaret asked in inline comment 1722920 on D321460 to file a follow-up about migrating to new Glean metrics, since the current ones have range_max: 100 while updater status codes now exceed that, unless an existing bug already covers the gap. Verified in the tree: all six update.status_error_code_* metrics are range_min 0 / range_max 100 / bucket_count 101 / linear, and updatererrors.h defines codes 100-106 including SILENT_UPDATE_NEEDED_ELEVATION_ERROR (105) and BACKGROUND_TASK_SHARING_VIOLATION (106), both of which updater.cpp actually writes to update.status. An extensive Bugzilla search (summary and longdesc searches for range_max, bucket_count, custom_distribution, glean, metric, telemetry, histogram, status_error_code, and the two error-code names, plus the dependency lists of bug 2061897 and bug 1963871) found no bug covering this; the closest, bug 1940967, only lifted the Glean SDK bucket cap and changed no update.* definition. Filing rather than commenting because the reviewer requested it explicitly and the duplicate check came back clean."
    }

Activity

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

Metadata

Metadata

Assignees

Labels

Type

Fields

Priority

None yet

Effort

Medium

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions