| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
| |
The --recover-from option allows a node start with a given document.
|
| |
|
|
|
| |
This allows storing the swarm ID and additionally discovered seeds,
which prevents a formerly genesis node to start a new document.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
The --genesis flag has been introduced to start with a new document.
This prevents restarts to accidentally start with a new document and
accept reads/writes, causing a second swarm to appear.
Additionally, bootstrapping doesn't timeout anymore as that's of no use
for nobody.
|
| |
|
|
|
|
|
| |
Instead of fixing base heads at when proposed, compact fixes them when
committing. This shrinks the window where writes can be lost if their
author restarts to the switch delay; during replace and import remakes
writes can still be lost during the voting period.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Each stable member can be preferred at most by 4*k members.
The budget is spent in key order, which is the same on every node,
so the graph stays deterministic, symmetric and connected.
|
| | |
|
| |
|
|
| |
To reduce the number of write locks, heads are now cached.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
A sync message from a ready peer only completes the initial sync if that
peer has at least one head. A peer with an empty document can no longer
make a joiner ready on an empty store: a misconfigured second swarm, or
a genesis node in its first seconds.
Effect on a brand-new swarm: a joiner now waits until the genesis node
has registered itself in the member list, which happens within about 5 s
of it becoming ready.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
It wasn't used before, causing the supervised daemon to always pick a
random one.
|
| | |
|
| |
|
|
|
| |
For an upcoming change in remake coordination, nodes now maintain
their self-assessed liveness in the document.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
GET /admin/document to retrieve the automerge document.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
GET /admin/stats to retrieve all stats.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
This introduces a new wrapper that counts messages and payload bytes per
peer, split by kind (hello, helloReply, sync, ping, pong), each sent,
received and refused.
The traffic counter goes around the firewall, which means messages
dropped outbound are still counted as sent, and messages dropped inbound
don't count as received.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Nodes push changes to their neighbours but don't relay them directly.
In a partial mesh, nodes can learn about missing changes via keepalive
messages and can pull them from their neighbours.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
To prevent stale hello replies to cause joins and thus stale sessions,
each run gets a random ID, which used as nonce in the handshake.
|