You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Deadlock re-mask still sends raw-graph hashes as bind parameters, which log_min_duration_statement writes into the store's own log #4035
Found while fixing #4012's review (finding 6), in the PR that follows up #4022.
What is left
That PR stops the deadlock re-mask from sending a row's raw TEXT back to the store as a bind parameter: the alert and finding writes now check the row by xmin, and the report write by the raw-hash test alone. Raw-graph HASHES still travel as bind parameters in three places in PgDeadlockRemask:
ReportPageSql's cursor ($3, the last row's deadlock_hash);
ReportUpdateSql's key ($2, the report's raw hash);
AlertReportLookupSql's key array ($2, the raw hashes the alerts name).
With log_min_duration_statement set on the store, a slow statement's parameters land in the store's own log. A raw-graph hash is a test for the literals #4004 removed, so the store log would hold that test for a while after the rows themselves no longer do.
What a fix needs to decide
The report walk needs a total order that does not include the hash (collection_time, server_id plus something stable on a compressed chunk).
The alert lookup could be done in SQL from context_json itself, so the keys never leave the store.
Whether it is worth it: the rows being rewritten still hold the same hash until the walk reaches them, and the pass finishes within hours on a measured 120k-row store.
Disposition (backtrack of #3898-#4043, 2026-09-23): work order 1 of 6, tier 1 (security). Folded into #4036 (draft): the re-mask no longer sends any raw-graph hash as a bind parameter. Compressed chunks refuse ctid/xmin, so the walk pages by (collection_time, server_id) and looks the raw hash up inside the store. The final security review round is running; this closes when #4036 merges.
Activity
Deadlock re-mask round 2: runs without a log-hash key (only the alert…
erikdarlingdata commentedon Sep 23, 2026
Disposition (backtrack of #3898-#4043, 2026-09-23): work order 1 of 6, tier 1 (security). Folded into #4036 (draft): the re-mask no longer sends any raw-graph hash as a bind parameter. Compressed chunks refuse ctid/xmin, so the walk pages by (collection_time, server_id) and looks the raw hash up inside the store. The final security review round is running; this closes when #4036 merges.
Deadlock re-mask keys a missed alert instead of leaving its raw hash,…
erikdarlingdata commentedon Sep 23, 2026
Closed by the watcher: delivered in PR #4036, merged to dev.