Commit Graph

44 Commits

Author SHA1 Message Date
Max Inden 8fd343e39d client/*: Treat protocol name as str and not [u8] (#6967)
* client/*: Treat protocol name as str and not [u8]

Notification protocol names are in practice always valid utf8 strings.
Instead of treating them as such in the type system, thus far they were
casted to a [u8] at creation time.

With this commit protocol names are instead treated as valid utf8
strings throughout the codebase and passed as `Cow<'static, str>`
instead of `Cow<'static, [u8]>`. Among other things this eliminates the
need for string casting when logging.

* client/network: Don't allocate when protocol name is borrowed
2020-08-28 15:34:25 +00:00
Pierre Krieger 1bd6082cf7 Enforce that ProtocolId is a string (#6953)
* Enforce that ProtocolId is a string

* Fix test
2020-08-26 12:27:30 +00:00
Pierre Krieger 6d9928e4bf Wait for all notifications protocols to be open before reporting opening (#6821)
* Wait for all notifications protocols to be open before reporting opening

* Update client/network/src/protocol/generic_proto/handler/notif_out.rs

Co-authored-by: Max Inden <mail@max-inden.de>

* Concern

* Fix attempt

* Another fix attempt

* Update client/network/src/protocol/generic_proto/handler/group.rs

Co-authored-by: Max Inden <mail@max-inden.de>

Co-authored-by: parity-processbot <>
Co-authored-by: Max Inden <mail@max-inden.de>
2020-08-23 22:26:42 +02:00
Pierre Krieger ee35dc9415 Fix legacy substream fallback not working (#6826)
* Fix legacy substream fallback not working

* Make it nicer
2020-08-05 16:20:09 +00:00
Pierre Krieger a1786a92ec Don't close inbound notifications substreams immediately (#6781)
* Don't close inbound notifications substreams immediately

* Fix not closing in return to node A closing
2020-07-31 14:42:53 +00:00
Gavin Wood 6bfbb7c6f1 Cleanup our sort usage (#6754) 2020-07-29 14:00:51 +02:00
Pierre Krieger 1ab7719314 Add a back-pressure-friendly alternative to NetworkService::write_notifications 🎉 (#6692)
* Add NetworkService::send_notifications

* Doc

* Doc

* API adjustment

* Address concerns

* Make it compile

* Start implementation

* Progress in the implementation

* Change implementation strategy again

* More work before weekend

* Finish changes

* Minor doc fix

* Revert some minor changes

* Apply suggestions from code review

* GroupError -> NotifsHandlerError

* Apply suggestions from code review

Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>

* state_transition_waker -> close_waker

* Apply suggestions from code review

Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>

* Finish renames in service.rs

* More renames

* More review suggestsions applied

* More review addressing

* Final change

* 512 -> 2048

Co-authored-by: Roman Borschel <romanb@users.noreply.github.com>
2020-07-29 11:23:19 +00:00
pscott 046fda914a Improve overall performance (#6699)
* Improve overall performance

* Clean up code

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Remove needless ::

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Remove needless ::

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
2020-07-21 14:46:49 +02:00
Pierre Krieger 4720f0fdda Move the legacy protocol handshake to the legacy substream (#5938)
* Move the legacy protocol handshake to the legacy substream

* Fix tests

* Remove line that wasn't supposed to be committed

* Remove hack

* Rework how it's done

* Some little changes

* update_chain wasn't doing its thing

* Fix service tests not calling update_chain

* Update client/network/src/protocol/generic_proto/behaviour.rs

Co-authored-by: Max Inden <mail@max-inden.de>

* [WIP]

* Revert "[WIP]"

This reverts commit 2b892e6a7637c0b1297e6ecdbb919321c9098ff5.

* Update client/network/src/protocol.rs

Co-authored-by: Max Inden <mail@max-inden.de>

* Fix received message not being handshake

* Update client/network/src/protocol/generic_proto/behaviour.rs

Co-authored-by: Max Inden <mail@max-inden.de>

Co-authored-by: Max Inden <mail@max-inden.de>
2020-07-15 09:29:10 +00:00
Pierre Krieger 4613dc2af4 Remove legacy Clogged event (#6652) 2020-07-14 15:43:08 +00:00
Pierre Krieger 8ca05879e8 Send Status message on all newly-opened legacy substreams (#6593)
* Send Status message on all newly-opened legacy substreams

* Fix tests
2020-07-08 11:44:51 +00:00
Roman Borschel 731e7d77c7 Find the alive incoming entry on disconnect. (#6320)
When a peer in `Incoming` state disconnects, the "alive" entry
in the `incoming` list for that peer must be updated (set to `false`).
Currently the entry that is updated may be an earlier entry for the
same peer that is already no longer alive. This can happen if a
peer repeatedly connects (incoming) and disconnects between invocations to
`poll()` of the behaviour.
2020-06-11 11:55:55 +02:00
Pierre Krieger 9906a2e39d Don't iterate over peers in generic_proto::behaviour::poll (#6142)
* Don't iterate over peers in generic_proto::behaviour::poll

* Improve comment

* Rework to use DelayIds
2020-05-26 21:23:32 +02:00
Arkadiy Paronyan 5bf9e63181 Optimize network poll (#6099) 2020-05-21 13:54:50 +02:00
Pierre Krieger c8339f9694 Turn a SmallVec into VecDeque for performances (#6091)
* Turn a SmallVec into VecDeque for performances

* Fix the other SmallVecs
2020-05-20 21:12:49 +02:00
Pierre Krieger 717fa95bc7 Restore the empty line after the license (#6088) 2020-05-20 13:08:27 +00:00
Pierre Krieger 7536de97b1 Print an error if we discover our own network identity (#6047)
* Add an error if we discover our own network identity

* Fix tests
2020-05-18 18:42:44 +02:00
Nikolay Volf d5411969ac fix whitespace (#6062) 2020-05-18 13:51:28 +02:00
Pierre Krieger 6ecdf20a1f Fix lots of small nits in sc-network (#6028)
* Fix lots of small nits in sc-network

* Update client/network/src/protocol/sync/blocks.rs

Co-authored-by: Arkadiy Paronyan <arkady.paronyan@gmail.com>

* Fix warning

* Yes. The line width.

Co-authored-by: Arkadiy Paronyan <arkady.paronyan@gmail.com>
2020-05-15 12:58:52 +01:00
Benjamin Kampmann be8c96adec Relax substrate licensing scheme (#5947) 2020-05-15 13:21:56 +02:00
Pierre Krieger 074d80f519 Fix potential state mismatch in behaviour.rs (#6013)
* Fix state mismatch in behaviour.rs

* Add TODO
2020-05-13 19:50:01 +02:00
Pierre Krieger 10492c0689 Add mitigation for the state inconsistency issue (#5996)
* Add mitigation for the state inconsistency issue

* Add logging
2020-05-13 14:54:59 +02:00
Pierre Krieger 0a11c48aa1 Turn an error! into a debug! (#6000) 2020-05-12 19:22:41 +02:00
Pierre Krieger 3ad9f65f11 Send a status message on block announce handshake (#5726)
* Send a status message on block announce handshake

* Make sure to send the handshake to all handlers
2020-04-22 10:20:52 +02:00
Pierre Krieger f2578bdc3b Pass an encoded Roles as the notifications protocols handshakes (#5665) 2020-04-21 10:47:37 +02:00
Pierre Krieger efde6056f6 Temporarily increase notifications buffer size (#5644)
* Temporarily increase notifications buffer size

* Add a 511.0 bucket
2020-04-15 23:27:33 +02:00
Roman Borschel 40c56deea3 Do not prematurely emit CustomProtocolClosed on connection close. (#5595) 2020-04-09 12:41:34 +02:00
Pierre Krieger cebd073649 Report local force-closing connections to Prometheus (#5575)
* Report local force-closing connections to Prometheus

* Also report ping timeouts separately

* Address concerns of #5571
2020-04-09 11:24:01 +02:00
Pierre Krieger 0cc2e4df89 Fix #5516 (#5560)
* Add a failing test

* Make test not freeze

* Fix the bug

* Fix spaces

* Fix tests

* Apply suggestions from code review

Co-Authored-By: Toralf Wittner <tw@dtex.org>

* Make sure test doesn't succeed if nothing happened

* Fix build

* Do the events change

Co-authored-by: Toralf Wittner <tw@dtex.org>
2020-04-08 13:32:22 +02:00
Roman Borschel f8c8355ac7 libp2p-next (#5278)
* Adapt to rust-libp2p#1440.

* Further adapt to libp2p/master.

* Update to libp2p-0.17

* Finishing touches.

* Remove stray TODO.

* Incorporate review feedback.

* Remove unused import.
2020-04-08 09:23:21 +02:00
Pierre Krieger 8c03a4fcef Split the Roles in three types (#5520)
* Split the Roles bitfield in three

* Forgot to include some changes

* Fix cli test

* More test fixes

* Oh God, merging master broke other tests

* Didn't run the doctests

* Address review

* I'm trying to fix the build blindly because it's taking a good hour to compile on my machine

* Address some review

* Also update the peerset's API to make sense

* Fix peerset tests

* Fix browser node

* client: distinguish between local and network authority

Co-authored-by: André Silva <andre.beat@gmail.com>
2020-04-03 19:08:14 +02:00
Pierre Krieger c9f3d16f44 Improve warning about notifications queue and remove spurious triggers (#5512)
* Better logging for notifications and buffer size increase

* Address review

* Improve warning about notifications queue and remove spurious triggers
2020-04-03 14:14:55 +02:00
Pierre Krieger e8dfb37aaf Add a sub_libp2p_notifications_queues_size Prometheus metric (#5503)
* Add a sub_libp2p_notifications_queues_size Prometheus metric

* Fix network tests

* Address review
2020-04-03 08:43:55 +02:00
Gavin Wood b86c7e87a9 A few missing emojies (#5490)
* A few missing emojies

* P2p message emojis

* Add a bit of colour

* format

* Introduce a couple of spaces

* Some spaces
2020-04-01 19:41:48 +02:00
Pierre Krieger 84ff6ef157 Remove DiscoveryNetBehaviour trait (#5430) 2020-04-01 16:25:53 +01:00
Nikolay Volf b4d83a4b54 And one more fix to flaky tests (#5467)
* imporoved intervallier version

* remove extra event

* use version 0.3.1

* fix warning
2020-03-31 12:15:31 +02:00
Pierre Krieger dbba4f8929 Fix tried to send handshake twice (#5413)
* Fix tried to send handshake twice

* Fix wrong boolean

* Change to debug
2020-03-30 13:33:46 +02:00
Pierre Krieger 462eaa3f41 Make transactions and block announces use notifications substre… (#5360)
* Make transactions and block announces use notifications

* Add documentation
2020-03-30 10:00:34 +02:00
Pierre Krieger 1da48b3b3f Rewrite reconnect_after_disconnect test (#5351) 2020-03-23 11:50:11 +01:00
Pierre Krieger 57af4facbd Remove the #[doc(hidden)] reexports of sc_network (#5264)
* Remove the #[doc(hidden)] reexports of sc_network

* Fix tests not building
2020-03-20 16:42:00 +01:00
Toralf Wittner 89b93d9d4b sc-network: Return on Poll::Pending. (#5295)
If polling encounters a `Poll::Pending` we need to return it instead of
continuing the loop which may turn it into a blocking operation, causing
problems with executors.
2020-03-18 11:21:10 +00:00
Gavin Wood d957220435 Add lots of networking metrics for Prometheus (#5126)
* Add some metrics

* Address concerns
2020-03-05 21:38:41 +01:00
Robert Habermeier 0090fe979b Remove NetworkSpecialization (#4665)
* remove networkspecialization

* Fix most of the fallout

* get all tests compiling

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
2020-02-21 14:02:12 +01:00
Pierre Krieger 7a04055814 Open one substream for each notifications protocol (#4909)
* Open one substream for each notifications protocol

* Fix WASM build

* Apply suggestions from code review

Co-Authored-By: Toralf Wittner <tw@dtex.org>

* Address concerns

* Use unsigned-varint to read the varint

* Use unsigned-varint

* Forgot Cargo.lock

Co-authored-by: Toralf Wittner <tw@dtex.org>
2020-02-21 11:06:24 +01:00