| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
The Clock module is the system clock that every unix timestamp new goes
through. It comes with an offset that only tests can set.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
A source given up for not answering our sync messages could become the
source again straight away. Whoever asks first after the reset takes the
role, and that's often the same peer, which would then stall for another
delivery limit.
Now, a stalled source isn't chosen again for one more delivery_limit.
If it's the only candidate, catching up waits that long and then tries
it again. Before, a retry with that peer couldn't have helped any
sooner anyway: a source is only given up after a whole delivery limit
without a sync message, and that clock restarts when it is chosen again.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|