Skip to content

@hyperdx/common-utils@0.25.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 22:22
· 1 commit to main since this release
c18c3ea

Minor Changes

  • 3d61cf9: Cap high-cardinality time-chart series to protect the browser from rendering
    thousands of lines at once. Time charts now materialize and draw a bounded
    number of series per tile, with escape hatches to reveal the rest on demand: a
    "+N more" affordance in the hover and pinned tooltips, and a "load all series"
    action that lifts the cap for a chart. Tooltips also cap how many rows they
    render per frame so a wide bucket can't mount thousands of popovers. The
    external dashboards API exposes the per-tile series limit as a three-state value
    across tile types — omit for the default cap, 0 for unlimited, or a positive N
    for the top N

  • 97ca34d: feat: Allow configuring a series table for accelerating metrics

  • 1af1998: Add Terraform helpers for adopting existing HyperDX resources with the ClickHouse provider. An "Export to Terraform" button on dashboards, saved searches, and saved-search alerts shows a ready-to-paste import {} block plus collapsible provider setup, and a team settings section ("API & Agents") downloads an import file covering dashboards, alerts, saved searches, sources, connections, and webhooks.

    Dashboards carrying a tile the provider cannot represent, and PromQL sources, are excluded from the export and reported as skipped — in the UI and in the generated file. The provider reads a dashboard back through the external API v2, which either drops such a tile or substitutes an empty line chart, and writes tiles back whole, so importing one would destroy that tile on the next apply.

    Import-only by design: resource configuration is generated by terraform plan -generate-config-out, which reads through the provider, rather than by HyperDX — the external API's dashboard serialisation is a field allowlist, so generating dashboard_json from it could silently drop tile settings on apply. Tile alerts are excluded because the provider models only saved-search alerts.

    Terraform addresses are derived from each resource's id, not its name, so renaming a resource in HyperDX and re-exporting does not produce a destroy-and-recreate plan. The generator lives in @hyperdx/common-utils so the API can produce the same artefact the UI does. The manifest endpoint caps each listing at 1000 rows and reports which types were capped, so a very large team is told its export is partial rather than silently receiving one.

    Also redacts Authorization and Cookie headers from API request logs.

Patch Changes

  • ed9d9a6: Treat _ and % in a search term as literal characters, not LIKE wildcards

    Search terms were interpolated straight into the ILIKE pattern, so ClickHouse
    read their _ and % as wildcards. ServiceName:user_service also matched
    user-service and user.service, and the negated -ServiceName:user_service
    dropped those same rows. Token-index lookups still receive the raw term.

  • c97789a: Correctly split SQL expressions containing backslash-escaped quotes.

  • 2468b25: fix: Encode every http://, https:// and localhost:<port> in a search, not
    just the first

    A search naming two or more URLs left the later colons unescaped, so Lucene read
    them as field queries. http://a.com http://b.com compiled the second URL to
    http ILIKE '%//b.com%' — a predicate on a bare http identifier rather than a
    search of the log body.

  • 6a35df0: Honor open (*), exclusive ({}) and non-numeric bounds in Lucene ranges

    Duration:[* TO 500] compiled to Duration BETWEEN '*' AND 500, which
    ClickHouse rejects with TYPE_MISMATCH. Exclusive and half-open ranges such as
    Duration:{100 TO 500} were all serialized as an inclusive BETWEEN. Bounds
    were parsed with parseFloat, so Timestamp:[2024-01-01 TO 2024-06-01] became
    BETWEEN 2024 AND 2024 and matched nothing. The plain-English explanation of a
    search now marks excluded bounds too.

  • d1c669d: fix: Use ratio value for series-limit ranking in ratio mode

    Charts using "ratio" series return type together with a series limit ranked the
    top-N series by the bare numerator instead of by the plotted ratio, so a
    low-volume group with a high ratio could lose its slot to a high-volume group
    with a much lower ratio. The ranking now uses the same divide(a, b) expression
    the chart displays. Non-ratio charts generate identical SQL to before.

  • b082f70: Detect ClickHouse timestamp types that carry a timezone or a type wrapper

    DateTime('UTC') was not classified as a DateTime, so a source whose timestamp
    column listed both a Date partition column and a DateTime column bucketed
    charts on the Date — collapsing a whole day into one bar at midnight. The time
    filter also only wrapped bounds in toDate() for an exact Date type, so a
    Date32 or Nullable(Date) column was compared against a DateTime bound and
    lost the whole start day.

  • 347f0a6: fix: Bound the side panel's row lookup after "View Trace" to a time window