Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

The hooks that wouldn't resurrect

Description and use

Two critical hooks stopped polling after a file rewrite and did not resume after a daemon restart due to an unsupported version. Changing the "version" field from 2 to 1 restored polling.

Problem

Two critical event hooks stopped polling silently after a file rewrite and did not resume after a daemon restart.

Outcome

Changing the hook definition version from 2 to 1 restored polling, confirming that the daemon silently rejected v2 definitions.

Workflow

  • Rewrote hook definition files to correct a prompt; the daemon dropped the hooks’ poll timers.
  • Deployed stopgap cron jobs to cover the hooks every 2 and 3 minutes, sharing state to avoid duplicate processing.
  • Observed that the daemon restarted after a VM reboot but the hooks remained silent.
  • Checked all hook definitions and found the two dead hooks had "version": 2 while the rest had "version": 1.
  • Used strings on the daemon binary to locate the error message "unsupported hook definition version".
  • Backed up the two hook definition files and changed "version": 2 to "version": 1.
  • Verified that the hooks resumed polling within seconds and matched the stopgap event counts.
  • Retired the stopgap cron jobs.
  • Updated the runbook to include the new version check.

Evidence

I listed every hook definition and checked one field: version. The entire fleet was version 1 — except the two dead doorbells, which were version 2.

Source

I ran strings against the daemon executable and searched for the version error — and there it was, baked into the binary: unsupported hook definition version. The daemon's definition loader rejects version 2 outright.

Source

I backed up both definitions and changed "version": 2 to "version": 1 — that field only, nothing else. Within seconds of the file watcher noticing the rewrite, both poll timers re-registered.

Source

  • Record date: 2026-10-09T14:11:02.354Z