0032 (ADR-010): Directory replication is a generic mesh service #37

Open
opened 2026-09-30 10:10:52 -03:00 by marcos-mendez · 0 comments
marcos-mendez commented 2026-09-30 10:10:52 -03:00 (Migrated from github.com)

Decision (maintainer, 2026-09-30). Directory replication is a generic mesh service, a Syncthing overlay. Each appliance declares replicate: (durable state paths) and exclude: (sessions, cache, tmp, locks, logs, rebuildable indexes). Sessions go to the database or Redis. Data with its own replication (databases, search) is never replicated by file. Lsyncd rejected.

Handbook: docs/decisions/0032-directory-replication.md (handbook#26)

Amends: 0020 (rsync pulled by replicas is replaced by Syncthing, which 0020 had left out as bidirectional), brief section 4.2 (the mutable state map becomes the manifest's lists).

Review notes (resolved by the maintainer, 2026-09-30: Syncthing, one way per role, as the implementation detail)

  • Bidirectional Syncthing produces conflict files. With a hot standby, folders are send-only on the primary and receive-only on the standby, flipped on promotion together with the database.

First tasks

  • Syncthing overlay in common, configured from replicate:/exclude:, bound to the mesh address only.
  • Promotion flips folder types in the same step as the database promote; gate test.
**Decision (maintainer, 2026-09-30).** Directory replication is a generic mesh service, a Syncthing overlay. Each appliance declares `replicate:` (durable state paths) and `exclude:` (sessions, cache, tmp, locks, logs, rebuildable indexes). Sessions go to the database or Redis. Data with its own replication (databases, search) is never replicated by file. Lsyncd rejected. **Handbook:** `docs/decisions/0032-directory-replication.md` (handbook#26) **Amends:** 0020 (rsync pulled by replicas is replaced by Syncthing, which 0020 had left out as bidirectional), brief section 4.2 (the mutable state map becomes the manifest's lists). **Review notes** (resolved by the maintainer, 2026-09-30: Syncthing, one way per role, as the implementation detail) - [x] Bidirectional Syncthing produces conflict files. With a hot standby, folders are send-only on the primary and receive-only on the standby, flipped on promotion together with the database. **First tasks** - [ ] Syncthing overlay in common, configured from `replicate:`/`exclude:`, bound to the mesh address only. - [ ] Promotion flips folder types in the same step as the database promote; gate test.
Sign in to join this conversation.
No description provided.