Skip to content

Exercise 5: Fix Prometheus activeRequestsGauge Leakage #8

Description

@harsharajkumar-273

Goal

Prevent memory leakage and telemetry drift inside the gateway observability metrics.

Problem

In src/middleware/metrics.ts, the gauge tracking active HTTP requests is incremented on entry and decremented inside res.on('finish'). If a client aborts the connection prematurely, the 'finish' event never fires—only the 'close' event fires. This causes the gauge to accumulate dead counts, drifting upward forever.

Task

  1. Modify src/middleware/metrics.ts to listen to both 'finish' and 'close' response socket events.
  2. Use a flag or check if res.writableEnded is true to ensure activeRequestsGauge.dec() is called exactly once per lifecycle to prevent double-decrementing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions