mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix(coderd): render collected_at as UTC RFC3339 in the agent metadata aggregate (#27991)
Follow-up to #27934; this fix was pushed to the branch after the squash-merge and missed it. `jsonb_build_object` renders timestamptz in the session `TimeZone`, which Coder never pins, and `collected_at` defaults to year 1 until the agent's first report. On a non-UTC Postgres session a registered-but-never-collected item renders with an LMT second-offset (even `BC`, e.g. `0001-12-31T19:03:58-04:56:02 BC`), which Go's RFC3339 parsing rejects - a 500 for the entire list page whenever `include_agent_metadata` is used. - `to_char(... AT TIME ZONE 'UTC', ...)` pins the rendering; never-collected items round-trip as Go's zero time. - The test now runs against a named-zone database (`dbtestutil.WithTimezone("America/Caracas")`) and requests a registered but never-collected key; it reproduces the 500 without the fix. Also contains the failure mode Go-side: an unparsable aggregate now degrades to missing metadata for that workspace (with a warning log) instead of failing the entire page. The SQL fix prevents the known cause; the containment covers any future one. The test still catches regressions because it asserts the metadata values, not just a 200. --- Authored by Coder Agents on behalf of @Emyrk.
This commit is contained in:
@@ -494,7 +494,11 @@ SELECT
|
||||
'error', workspace_agent_metadata.error,
|
||||
'timeout', workspace_agent_metadata.timeout,
|
||||
'interval', workspace_agent_metadata.interval,
|
||||
'collected_at', workspace_agent_metadata.collected_at,
|
||||
-- Rendered explicitly as UTC RFC3339: jsonb renders
|
||||
-- timestamptz in the session TimeZone, and the year-1
|
||||
-- default of collected_at renders named zones with
|
||||
-- LMT second-offsets (even BC), which Go rejects.
|
||||
'collected_at', to_char(workspace_agent_metadata.collected_at AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"'),
|
||||
'display_order', workspace_agent_metadata.display_order
|
||||
))
|
||||
FROM
|
||||
|
||||
Reference in New Issue
Block a user