| ID | product.edge.edge_agent.local_buffer |
|---|---|
| Description | Persistent buffer for telemetry during connectivity loss. |
| Key | local_buffer |
| Type | component:database |
| Team | Edge Platform |
| Owner | edge-platform@iotgateway.example |
| Status | active |
| Technologies | SQLite, Rust |
| Attributes | buffer_size: 512MB, retention: 72h, store: SQLite |
| Tags |
The Local Buffer is the durability boundary of the gateway. Every reading the Driver Loader produces is committed here before anyone tries to send it. If the network is down, the box reboots, or the cloud is slow, the data waits safely on disk and replays in order.
Storage profile
An embedded SQLite database on the gateway’s local flash. A rolling budget of ~512 MB / 72 hours bounds wear and disk use; once the cloud acknowledges a batch its rows are pruned.
Three streams share the store: buffered telemetry waiting to go up, outbound commands waiting to be applied locally, and the sync cursors that track what the cloud has acknowledged. The ERD is embedded on the Overview tab.
seq and marked pending.acked once the cloud confirms.SYNC_CURSOR.acked_seq is the high-water mark used to prune safely.At-least-once, not exactly-once
On an ungraceful restart the publisher may resend a batch the cloud already saw. That is intentional — the cursor guarantees nothing is lost, and the cloud side is idempotent on message id, so duplicates are harmless.
captured_at preserves the original device time even if publish is delayed
by hours, so cloud-side ordering stays correct.1 incoming link · 1 outgoing link
| Source object | Label | Link type | Relation | Raw id | Required | Description | |
|---|---|---|---|---|---|---|---|
| drains batches from | — | links | product.edge.edge_agent.local_buffer | — | — |
| Target object | Label | Link type | Relation | Raw id | Required | Description | |
|---|---|---|---|---|---|---|---|
| buffers output from | — | links | product.edge.edge_agent.driver_loader | — | — |