Limitations
Enroute is a 0.x release with the following current limits.
Compatibility
- There is no backwards compatibility between
0.xreleases. - The
v1alpha1contract is unstable until Enroute 1.0. Messages, fields, and services can change in any release. - The object store format and the configuration keys can change in any release.
- Release
0.3.0replaced the storage engine and has no migration. Storage from0.2.0is not readable, so start clean and push again. A later format change needs the same. - There is no supported downgrade.
Transport and synchronization
- Git smart HTTP is supported; SSH and
git://are not. - Enroute does not terminate TLS or authenticate API callers.
- Fetches that ask for
thin-packandPushToRemotesend thin packs. The receiving Git must be version 2.50 or later. An earlier version can reject the pack withREF_DELTA at offset N already resolved. PushToRemotesupports push-onlyhttpsremotes with basic or bearer credentials. It does not fetch, use SSH, persist remotes, or follow redirects.- Remote pushes are synchronous: one hour total and one minute without remote output. Progress is not reported.
Data model and storage
- Production requires a durable disk for each ledger node, and an S3-compatible
object store or a
file://bucket. Afile://bucket serves only nodes on one machine. - There is no procedure yet to move a deployment from a
file://bucket to an object store. - Enroute does not encrypt data at rest or collect unreachable branch objects.
- SHA-1 is the only object format. Enroute creates no merge commits.
visible_refshides ref names, not objects.- Reads are bounded: 100 repositories or commits per page and 50,000 tree or diff entries.
ListRepositoriescompares aprefixbyte for byte and returns keys in byte order.updated_atinListRefscomes from the clock of the node that proposed the change. It can go back when node clocks differ.
Operations
- There are no quotas, rate limits, per-caller concurrency limits, or metrics for background work.
- Ledger nodes scale up, not out. Each one holds every repository, so more ledger nodes add fault tolerance and not capacity. Compute nodes scale out.
- A push is acknowledged when a small layer is in the replicated log on a majority of ledger nodes. The log is the only copy until Enroute flushes the layer to the object store.
- Losing a majority of ledger nodes needs manual recovery from the last checkpoint. Up to about a minute of writes can be lost. There is no tool for this yet.
- Removing a ledger node is a manual step,
enroute members --remove. See Maintenance. - The
latestimage tag moves and can be rebuilt. A version tag names one image and is not rebuilt.
Generated from docs/reference/limitations.md at bc0dc6e