Files
ha-reticulum/custom_components/reticulum/manifest.json
claude a80f65c442 Embed RNS cleanly: fix signal-thread crash, tame atexit/stdout, persist on stop
Root cause of setup failure: Reticulum.__init__ calls signal.signal() with no
main-thread guard, but we (correctly) initialise off the event loop in an
executor thread, where signal.signal() raises ValueError. It failed after
setting the __instance singleton, which both broke setup and caused the
"Attempt to reinitialise Reticulum" error on every retry.

- Temporarily neutralise signal.signal during RNS init so init completes in the
  executor, and so RNS does not hijack HA's SIGINT/SIGTERM (needed for clean
  shutdown under Kubernetes).
- Unregister RNS's and LXMF's atexit exit handlers, which otherwise persist
  state with blocking file I/O on the event-loop thread and detach HA's
  stdout/stderr at interpreter exit (the loop-blocking warnings seen in logs).
- Persist RNS/LXMF state ourselves off-loop on the homeassistant_stop event.

Documents the remaining non-daemon RNS worker threads as a known shutdown note.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 18:46:06 +03:00

17 lines
477 B
JSON

{
"domain": "reticulum",
"name": "Reticulum",
"codeowners": [],
"config_flow": true,
"dependencies": [],
"after_dependencies": ["conversation"],
"documentation": "https://github.com/tewris/ha-reticulum",
"integration_type": "hub",
"iot_class": "local_push",
"issue_tracker": "https://github.com/tewris/ha-reticulum/issues",
"loggers": ["RNS", "LXMF"],
"requirements": ["rns>=0.9.0", "lxmf>=0.6.0"],
"single_config_entry": true,
"version": "1.0.2"
}