Determining the LiteFS primary
The LiteFS directory (typically
/litefs) provides a
.primary file that
applications can read to determine the current primary node. This file only
exists if the node is currently a replica and it is connected to the primary
You can use
cat(1) to view the contents on a replica node:
$ cat /litefs/.primary hostname.example.com
This file will return the
hostname specified in the primary node’s
configuration file or, if unspecified, it will read
hostname(2) from the
primary node’s operating system. A newline is appended to the end.
.primary file is unavailable then the local LiteFS node is either:
- Currently the primary and can accept writes, or
- Unable to determine or connect to the primary.
When a node receives a write request, it should check the
.primary file and,
if it exists, it should forward the request to the primary. If the file does not
exist, the request should attempt to write locally.
If the local node is not the primary then SQLite will return a
SQLITE_READONLY error when using the rollback journal and it will return a
disk I/O error when using the write-ahead log. Unfortunately, there’s not a
better error that LiteFS can return to SQLite when using the WAL.