Deirdre Connolly
fee75b5da8
Add SeedService
...
This may need some cleaning up, but this is the first iteration to appease the compiler.
2019-11-12 22:39:47 -05:00
Deirdre Connolly
0ac1b663fe
Keep sets of initial peers as Strings in config file
2019-11-12 22:39:47 -05:00
Deirdre Connolly
b5bbef5c47
Default init seed nodes based on network choice
...
And more flushed out but incomplete
2019-11-12 22:39:47 -05:00
dependabot-preview[bot]
7b739b3c16
Bump thiserror from 1.0.4 to 1.0.5
...
Bumps [thiserror](https://github.com/dtolnay/thiserror ) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.4...1.0.5 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-09 18:55:46 -08:00
dependabot-preview[bot]
78b243e955
Bump tower-load from `fac5c36` to `52dbdda`
...
Bumps [tower-load](https://github.com/tower-rs/tower ) from `fac5c36` to `52dbdda`.
- [Release notes](https://github.com/tower-rs/tower/releases )
- [Commits](fac5c361a4...52dbdda23d
)
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-02 11:27:35 -07:00
dependabot-preview[bot]
ec2db11ebe
Bump toml from 0.5.4 to 0.5.5
...
Bumps [toml](https://github.com/alexcrichton/toml-rs ) from 0.5.4 to 0.5.5.
- [Release notes](https://github.com/alexcrichton/toml-rs/releases )
- [Commits](https://github.com/alexcrichton/toml-rs/compare/0.5.4...0.5.5 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-01 10:20:57 -07:00
Deirdre Connolly
a322566694
Add Cargo.lock
...
To allow Dependabot to operate correctly.
2019-10-30 18:15:29 -04:00
Henry de Valence
f588f5d368
Remove connect loop
2019-10-26 19:54:17 -04:00
Deirdre Connolly
dadc13feb4
Create README.md
2019-10-25 12:58:30 -04:00
Henry de Valence
d8ba22e7a2
Update zebra-network Monodraw diagram.
...
Also, add the source file to the repo.
2019-10-24 15:06:02 -07:00
Deirdre Connolly
bb77e509ea
Comment out suspicious run line
2019-10-24 16:50:34 -04:00
Henry de Valence
7a09223ddb
Fix typos.
...
Co-authored-by: Deirdre Connolly <deirdre@zfnd.org>
2019-10-22 19:43:44 -07:00
Henry de Valence
28a24fa91b
Import and update the previous design.md.
2019-10-22 19:43:44 -07:00
Henry de Valence
47ec2e2689
Remove stub discover module.
2019-10-22 19:06:08 -07:00
Henry de Valence
c3ec235a5b
Suppress unused import warnings.
2019-10-22 19:06:08 -07:00
Henry de Valence
ed2ee9d42f
Add a PeerConnector wrapper around PeerHandshake
2019-10-22 19:06:08 -07:00
Henry de Valence
9e2678d76c
Rename PeerConnector to PeerHandshake.
...
It's only responsible for doing the handshakes, so it should be named that way,
and then we can have a Connector responsible for actually opening the TCP
connection.
2019-10-22 19:06:08 -07:00
Henry de Valence
121cea610b
Unlink peer spans from their creation details.
2019-10-22 19:06:08 -07:00
Henry de Valence
6faebe844c
Make zebra-network::Config toml-able.
...
The toml serializer function we are using -- maybe because of to_string_pretty
(?) barfs on structs that mix ordering of simple values and "tables", so just
keep all the Durations to the end.
2019-10-22 19:06:08 -07:00
Henry de Valence
0833d31ec7
Use a timer to add peers by interval.
2019-10-22 19:06:08 -07:00
Henry de Valence
9a779a639f
Add a timeout for peer handshakes.
2019-10-22 19:06:08 -07:00
Henry de Valence
027bdc8465
Rework initial crawler logic.
...
This splits out the connection handling code into a try_connect closure, which
could be refactored into a Service of its own.
On creation, when we are likely to have very few peers, launch many concurrent
connections to the first few candidates in the initial candidate set, before
continuing to grow the peer set according to demand signals.
2019-10-22 19:06:08 -07:00
Henry de Valence
e1a35490af
Move the CandidateSet to its own file.
...
Co-authored-by: Deirdre Connolly <deirdre@zfnd.org>
2019-10-22 19:06:08 -07:00
Henry de Valence
2f3292759f
Add an explicit tracing span to each address book.
...
Co-authored-by: Deirdre Connolly <deirdre@zfnd.org>
2019-10-22 19:06:08 -07:00
Henry de Valence
e0e17a4719
Send an initial request for peers on launching crawler.
...
Co-authored-by: Deirdre Connolly <deirdre@zfnd.org>
2019-10-22 19:06:08 -07:00
Henry de Valence
b1832ce593
Initial work to add a crawl-and-dial task.
...
This responds to peerset demand by connecting to additional peers.
Co-authored-by: Deirdre Connolly <deirdre@zfnd.org>
2019-10-22 19:06:08 -07:00
Henry de Valence
4055eb8889
bugfix: ensure the PeerServer always calls fail_with before exit
...
This caused a panic in the PeerSet when remote peers disconnected from us.
2019-10-22 17:55:09 -04:00
Deirdre Connolly
32aea0cbf9
Add useful docstrings
2019-10-21 15:55:18 -04:00
Deirdre Connolly
3de34290e6
Construct LIVE_PEER_DURATION from other timeout and interval constants
...
Use constants::HEARTBEAT_INTERVAL in our ping generator, add a test to check that LIVE_PEER_DURATION
is consistent with the other constants.
2019-10-21 15:55:18 -04:00
Deirdre Connolly
8588c44bcf
Add a comment about not cloning the server channel any more than we are
2019-10-21 15:55:18 -04:00
Deirdre Connolly
61a07c67ef
Inside tokio::spawn, loop over Iterator stream and send ClientRequest
...
msgs on the channel instead
Related to #49
2019-10-21 15:55:18 -04:00
Deirdre Connolly
e65f5a05ea
Broken: I can't seem to return either an impl Future or Result to satisfy for_each
2019-10-21 15:55:18 -04:00
Deirdre Connolly
3548998980
Set server state to Failed if a response to a heartbeat Ping never comes
2019-10-21 15:55:18 -04:00
Deirdre Connolly
adffc4239d
Partially complete heartbeats to peer
2019-10-21 15:55:18 -04:00
Henry de Valence
62e423bad8
Update zebra-network/src/address_book.rs
...
Co-Authored-By: Deirdre Connolly <deirdre@zfnd.org>
2019-10-21 14:40:03 -04:00
Henry de Valence
a8ef02c826
Refactor AddressBook::update, add contains, get.
...
This also makes the quadratic `assert_consistency` check run only in
test configs.
2019-10-21 14:40:03 -04:00
Henry de Valence
501db9fcc8
Add AddressBook::is_potentially_connected()
...
This allows checking whether a SocketAddr could potentially be
connected, based on the contents of the address book.
2019-10-21 14:40:03 -04:00
Henry de Valence
fe9cef261d
Allow draining AddressBook entries oldest-first.
2019-10-21 14:40:03 -04:00
Henry de Valence
39d38a8647
Rewrite AddressBook to use a BTreeSet.
...
The previous implementation failed when timestamps were duplicated between
peers, because there was not a 1-1 relationship between timestamps and peers.
2019-10-21 14:40:03 -04:00
Henry de Valence
5e9ac87f57
Collect into an AddressBook in connect.
2019-10-21 14:40:03 -04:00
Henry de Valence
ecd57f43ed
Implement Extend and Drain for AddressBook.
2019-10-21 14:40:03 -04:00
Henry de Valence
0bfd57def2
Add iteration functions to `AddressBook`.
...
The disconnected_peers() function allows us to prevent duplicate
connections without maintaining shared state between the peerset and the
dial-additional-peers task.
2019-10-21 14:40:03 -04:00
Henry de Valence
b03a83fa86
Simplify TimestampCollector.
...
Previously, the TimestampCollector was intended to own the address book
data, so it was intended to be cloneable and hold shared state among all
of its handles. This is now modeled more directly by an
`Arc<Mutex<AddressBook>>`, so the only functionality left in the
`TimestampCollector` is setting up the inital worker, which is better
called `spawn` than `new`.
This also fixes a problem introduced in the previous commit where the
`TimestampCollector` was dropped, causing the worker task to shut down
early.
2019-10-21 14:40:03 -04:00
Henry de Valence
53be838d51
Extract `TimestampData` to `AddressBook`.
...
This allows us to hide the `TimestampCollector` and to expose only the
address book data required by the inbound request service. It also lets
us have a common data structure (the `AddressBook`) for collecting peer
information that can be used to manage information that other peers
report to us.
2019-10-21 14:40:03 -04:00
Henry de Valence
15a698b23c
Use MetaAddr in the timestamp collector.
...
We will need service bits information to report on peer addresses, so we
need to collect it in the timestamp collector.
2019-10-21 14:40:03 -04:00
Henry de Valence
9ec1e01c8f
Add a config command.
2019-10-18 21:00:01 -04:00
Henry de Valence
ad43a61fb4
Ensure that all types appearing in public types are exported.
2019-10-18 16:11:01 -07:00
Henry de Valence
1f0a7e5e73
Remove Codec::builder doctest.
...
Doctests can only test public API, so now that the Codec is private, we can't
have a doctest. Since this test was only a code example (no behaviour test),
there's no value in replacing it with a unit test.
2019-10-18 16:11:01 -07:00
Henry de Valence
c7e0d63bed
Export the BoxedZebraService type alias.
...
This gives API consumers a convenient name, and makes the Rustdoc output
significantly cleaner (because `init` can return a `BoxedZebraService`, not a
`Box<dyn ...ManyTypeConstraints.......>`.
2019-10-18 16:11:01 -07:00
Henry de Valence
1c6c4140ed
Add a nice comment to zebra-network.
2019-10-18 16:11:01 -07:00