Storage Model
Cyntex uses a three-tier storage architecture with clearly defined responsibilities at each layer.
Three-Tier Storage
L1 — Hazelcast (Distributed In-Memory)
- Task runtime state, Ringbuffer CDC data stream
- Forked from Hazelcast 5.7.0 (strips
hazelcast-sql/ HCL extensions — pure Apache 2.0) - Note: CP Subsystem (FencedLock / leader election) was removed from OSS entirely since version 5.5 — EE only
L2 — MongoDB (Persistent Source of Truth)
- Single source of truth for connection and task definitions
- CDC offset, checkpoint, task HA lease (CAS document lock + fencing epoch)
- Connector jar distribution (GridFS)
L3 — Paimon (Incremental Data Lake, external add-on at end of GA)
- Finance-grade low-latency historical audit
- Not included in the initial rollout (POC/Alpha/Beta); added at the end of GA
DSL Artifact Dual-Layer Model (ADR-0021)
Local .cyn.yml file MongoDB cyntex.resources(authoring draft) → (official store, single source of truth) applycyntex apply <file>= validate → canonicalize →idupsert (same hash = no-op)cyntex export <id>= pull canonical YAML from MongoDB to localcyntex diff <file>= compare local draft against canonical version in the store
Task HA Strategy
Because Hazelcast CP Subsystem is unavailable in OSS, task HA uses:
- MongoDB document CAS lease (
findOneAndUpdatewith$incfencing epoch) - Heartbeat suicide (lease not renewed on timeout → process exits voluntarily)
- Monotonic fencing token to prevent split-brain dual scheduling