Network dedup hash ignores the issue: every single-host network alert for a host lands on one ticket #116
Closed
opened 2026-11-11 01:13:51 -05:00 by jared
·
1 comment
No Branch/Tag Specified
main
development
fix/comment-markdown-persist-18
deploy-2026.11.11-291
deploy-2026.10.03-279
deploy-2026.10.03-275
deploy-2026.09.26-272
deploy-2026.09.25-268
deploy-2026.09.25-264
deploy-2026.09.24-258
deploy-2026.09.24-254
deploy-2026.09.12-242
deploy-2026.09.12-238
deploy-2026.09.12-234
deploy-2026.09.12-230
deploy-2026.09.12-226
deploy-2026.09.12-222
deploy-2026.09.11-218
deploy-2026.09.11-214
deploy-2026.09.11-210
deploy-2026.09.11-206
deploy-2026.09.11-202
deploy-2026.09.11-198
deploy-2026.09.11-194
deploy-2026.09.11-190
deploy-2026.09.11-186
deploy-2026.09.09-182
deploy-2026.09.09-178
deploy-2026.09.08-172
deploy-2026.09.01-163
deploy-2026.08.08-155
deploy-2026.08.08-151
deploy-2026.08.08-147
deploy-2026.08.08-143
deploy-2026.08.08-139
deploy-2026.07.15-130
deploy-2026.07.15-122
deploy-2026.07.11-107
deploy-2026.06.30-96
deploy-2026.06.30-92
deploy-2026.06.30-88
deploy-2026.06.30-84
deploy-2026.06.30-80
deploy-2026.06.30-76
deploy-2026.06.30-72
deploy-2026.06.30-68
deploy-2026.04.29-49
deploy-2026.04.29-41
deploy-2026.04.18-35
deploy-2026.04.16-31
deploy-2026.04.16-27
deploy-2026.04.16-23
deploy-2026.04.16-11
deploy-2026.04.14-9
Labels
Clear labels
api
bug
concurrency
config
data-integrity
dead-code
documentation
duplicate
enhancement
help wanted
invalid
needs-decision
notifications
performance
priority/docs
priority/high
priority/low
priority/medium
question
rate-limiting
reliability
security
ux
wontfix
workflow
Bearer/internal API surface
Something is not working
Race condition / concurrency bug
Configuration / deployment default
Data correctness / schema / integrity issue
Unused / dead code cleanup
README / docs accuracy
This issue or pull request already exists
New feature
Need some help
Something is wrong
Needs a maintainer decision, not clearly a bug
Matrix / in-app notification bug
Performance or resource-usage concern
Documentation-only gap
High-severity / high-impact issue
Low-severity / cosmetic issue
Medium-severity issue
More information is needed
Rate limiting behavior
Reliability / error-handling gap
Security or access-control impact
User-facing UX/functional bug
This won't be fixed
Ticket status workflow engine
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: LotusGuild/tinker_tickets#116
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
generateTicketHash()increate_ticket_api.phpkeys everynetworkticket on the following fields only:source_type(auto)issue_category(network)issue_subtype, which is always''for this category[production],[single-node]/[cluster-wide])hostname, the first[...]tagThe
networkbranch never setsissue_subtype. Every automated single-host network alert for a host therefore hashes the same, whatever the problem is: a host reboot, a NIC link going down, a switch port, a cable mismatch, a modem fault. One host gets one network ticket, forever.This is the same shape of bug that #112's fix addressed for Ceph HEALTH_WARN, where unrelated warnings collapsed onto one ticket.
Real-world impact (2026-11-11)
Gandalf filed
[micro1][auto][production][issue][network][single-node] Interface enp3s0 link-down. It matched 993441773,[micro1]...[single-node] No metrics from host, a closed false alarm about a reboot from 2026-11-06.The two alerts have nothing in common, but they hash identically. Because 993441773 is Closed and can't be reopened unattended (#115), Tinker:
success: truewithaction: recurrence_notedandticket_id: 993441773.Gandalf recorded that ID as the ticket for the interface alert. The real problem got no visible ticket, and the reboot ticket gained a misleading comment.
The same thing happens to every Gandalf alert type for any host that has ever had a network ticket.
Who sends
networkticketsGandalf (
monitor.py):[<target>][auto][production][issue][network][single-node|cluster-wide] <heading>. The headings are stable for a given problem and differ between problems:No metrics from hostHost unreachableInterface <iface> link-downUniFi device offlineCable <label> does not match the cutsheetWAN link downFiber <metric> alarm/Fiber <metric> warningFiber Rx power droppedWAN modem unreachable/WAN modem status unreadableMultiple hosts reporting interface failures(cluster-wide)hwmonDaemon:
[host][auto][network] - <issue>[single-node][production][issue]. Its network issues are fixed sentences ("Management network is unreachable", "Ceph network is unreachable"), so keying on the text is stable for it too.Suggested fix
In the
networkbranch, setissue_subtypefrom the title text outside the bracketed tags, normalised. This mirrors how #112 keys HEALTH_WARN on its text:Points to decide:
enp3s0, cableC07). Unlike HEALTH_WARN counts, none of these headings carry changing numbers. Acheck_codefrom Gandalf, as #112 added for Ceph, would be an even steadier key if preferred; Gandalf can send one.hashfor open network tickets to avoid that.Related
actionin the create response. It should log, and probably not store, a ticket ID returned withaction: recurrence_noted.🤖 Generated with Claude Code
Fixed in
aad3e8e(PR #117) and deployed to prod (a03fd64).Fix
check_codewhen it is sent (it must name the instance, e.g.iface_down:enp3s0), otherwise on host + the title text outside the tags, with digits kept.helpers/TicketHash.php.Rehash: I ran
scripts/rehash_network_tickets.phpon prod. It re-keyed the one open network ticket, pbs 281331508, with 0 conflicts. A second dry run showed it already current.Cleanup of past tickets. The audit log shows the bug had already done more damage than the original report:
enp36s0 link-downalert, and it was then closed as that false alarm.I restored both original titles and recorded the change in the audit log. Both stay Closed, with a comment explaining what happened. Their original descriptions were overwritten and are lost. If hwmonDaemon still sees either problem, its next report opens a new ticket.
The Gandalf follow-up from the issue (don't store an ID returned with
action: recurrence_noted) is still open.🤖 Generated with Claude Code