The cluster heartbeat upserts cluster_nodes ON CONFLICT (hostname), so two machines reporting the same os.hostname() clobber each other's row. A cloned capture VM whose /etc/hostname was "zampp1" (same as the primary) caused its 4 DeckLink cards to land on the primary's row, then get overwritten by the primary's cardless heartbeat — so the New Recorder modal showed "No SDI devices auto-detected" despite healthy hardware. - node-agent now reports process.env.NODE_NAME || os.hostname() as its cluster identity, so node identity is explicit and collision-proof. - docker-compose.worker.yml exposes NODE_NAME to the container. - onboard-node.sh always writes NODE_NAME to the node .env (defaults to the OS hostname) so future onboarding pins identity even on cloned images. Live remediation already applied to the zampp2 capture node: compose hostname pinned to zampp2 and its node token rebound to zampp2; DB now reports bmd=4 for zampp2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| Dockerfile | ||
| index.js | ||
| package.json | ||