Giovanni Petrantoni
f81a085d0b
More gossip coverage ( #553 )
...
* add floodPublish test
* test delivery via control Iwant/have mechanics
* fix issues in control, and add testing
* fix possible backoff issue with pruned routine overriding it
2021-04-22 18:51:22 +09:00
Jacek Sieka
e285d8bbf4
mem usage cleanups for pubsub ( #564 )
...
In `async` functions, a closure environment is created for variables
that cross an await boundary - this closure environment is kept in
memory for the lifetime of the associated future - this means that
although _some_ variables are no longer used, they still take up memory
for a long time.
In Nimbus, message validation is processed in batches meaning the future
of an incoming gossip message stays around for quite a while - this
leads to memory consumption peaks of 100-200 mb when there are many
attestations in the pipeline.
To avoid excessive memory usage, it's generally better to move non-async
code into proc's such that the variables therein can be released earlier
- this includes the many hidden variables introduced by macro and
template expansion (ie chronicles that does expensive exception
handling)
* move seen table salt to floodsub, use there as well
* shorten seen table salt to size of hash
* avoid unnecessary memory allocations and copies in a few places
* factor out message scoring
* avoid reencoding outgoing message for every peer
* keep checking validators until reject (in case there's both reject and
ignore)
* `readOnce` avoids `readExactly` overhead for single-byte read
* genericAssign -> assign2
2021-04-18 10:08:33 +02:00
Dmitriy Ryajov
6b930ae7e6
More builders ( #560 )
...
* address some issues pointed out in review
* re-add to prevent breaking other projects
2021-04-06 14:16:23 -06:00
Dmitriy Ryajov
290866dd62
builders ( #559 )
2021-04-05 16:06:45 -06:00
Giovanni Petrantoni
795a651839
use a builder pattern to build the switch ( #551 )
...
* use a builder pattern to build the switch
* with with
* more refs
2021-04-02 10:20:51 +09:00
Giovanni Petrantoni
df497660bc
fix nimbus ref for auto-bump stable's PR
2021-03-23 16:46:24 +09:00
Jacek Sieka
54031c9e9b
Fix minor exception issues ( #550 )
...
Makes code compatible with
https://github.com/status-im/nim-chronos/pull/166 without requiring it.
2021-03-23 07:45:25 +01:00
Giovanni Petrantoni
38333e45ae
put conditional locks on nbc bump ( #549 )
2021-03-22 22:13:00 +09:00
Giovanni Petrantoni
3bf6acef23
merge nbc auto bump with CI in order to bump only on CI success
2021-03-16 09:31:06 +09:00
Giovanni Petrantoni
2d3595708c
fix auto-bump CI
2021-03-16 08:45:37 +09:00
Giovanni Petrantoni
9175a9476e
add stable/unstable auto bumps
2021-03-16 08:31:39 +09:00
Dmitriy Ryajov
f7a9d83545
add mounted protos to identify message ( #546 )
2021-03-15 15:29:05 -06:00
Giovanni Petrantoni
03bbdd2261
Revisit Floodsub ( #543 )
...
Fixes #525
add coverage to unsubscribeAll and testing
2021-03-15 13:16:03 -06:00
Giovanni Petrantoni
a54e1cc699
add coverage to disabled metrics ( #545 )
2021-03-15 21:36:57 +09:00
Giovanni Petrantoni
aeb18c4e41
now wild `except:`
2021-03-15 16:48:11 +09:00
Giovanni Petrantoni
c5b9fd3353
Try fix ci ( #544 )
...
* use apt-get
* try bump ubuntu ver
2021-03-15 14:50:36 +09:00
Giovanni Petrantoni
ba0a57ee34
fix reports number
2021-03-15 12:16:01 +09:00
Giovanni Petrantoni
996dc5be9c
add testfloodsub coverage for different build options
2021-03-15 12:15:29 +09:00
Giovanni Petrantoni
4760df1e31
fix build with libp2p_agents_metrics switch
2021-03-15 01:42:47 +00:00
Jacek Sieka
70deac9e0d
fix peer score accumulation ( #541 )
...
* fix accumulating peer score
* fix missing exception handling
* remove unnecessary initHashSet/initTable calls
* simplify peer stats management
* clean up tests a little
* fix some missing raises annotations
2021-03-09 13:22:52 +01:00
Giovanni Petrantoni
269d3df351
Consolidate metrics collection for mesh ( #540 )
...
* Consolidate metrics collection for mesh
* more fixes
* wrapping up
* Update libp2p/protocols/pubsub/gossipsub/behavior.nim
Co-authored-by: Jacek Sieka <jacek@status.im>
* Update libp2p/protocols/pubsub/gossipsub/behavior.nim
Co-authored-by: Jacek Sieka <jacek@status.im>
* Update libp2p/protocols/pubsub/gossipsub/behavior.nim
Co-authored-by: Jacek Sieka <jacek@status.im>
Co-authored-by: Jacek Sieka <jacek@status.im>
2021-03-03 22:11:21 +01:00
Giovanni Petrantoni
34c2fbeb16
small gossipsub metrics change
2021-03-03 08:41:21 +00:00
Giovanni Petrantoni
02ad017107
Gossipsub fixes and Initiator flagging fixes ( #539 )
...
* properly propagate initiator information for gossipsub
* Fix pubsubpeer lifetime management
* restore old behavior
* tests fixing
* clamp backoff time value received
* fix member name collisions
* internal test fixes
* better names and explaining of the importance of transport direction
* fixes
2021-03-03 08:23:40 +09:00
Giovanni Petrantoni
c1334c6d89
pubsubpeer better address management
2021-02-28 04:53:17 +00:00
Giovanni Petrantoni
7b2727d930
avoid leaking in peersInIP, don't depend on sendConn
2021-02-27 23:49:56 +09:00
Giovanni Petrantoni
67d0926e89
use in any case PeerID for peersInIP to avoid keeping references
2021-02-27 21:31:59 +09:00
Giovanni Petrantoni
fae38e0146
fix PubSubPeer hashing issues
2021-02-26 19:19:15 +09:00
Giovanni Petrantoni
45300c28a9
[SEC] gossipsub - handleIHAVE/handleIWANT recommendations & notes ( #535 )
...
Fixes #400
2021-02-26 14:27:42 +09:00
Giovanni Petrantoni
d7469b2286
[SEC] gossipsub - a peer score is not retained up until expiry if abusive peer unsubscribes ( #534 )
...
* [SEC] gossipsub - a peer score is not retained up until expiry if abusive peer unsubscribes
Fixes #402
* remove debug logging
2021-02-26 14:15:58 +09:00
Giovanni Petrantoni
c1d8317e3c
fix badly merged code in gossipsub.colocationFactor
2021-02-26 12:39:57 +09:00
Giovanni Petrantoni
eac6cd3dbf
Debt: cleanup warnings #426 ( #536 )
...
* testswitch cleanups
* Debt: cleanup warnings
Fixes #426
2021-02-25 09:24:49 -06:00
Giovanni Petrantoni
2015a878ad
fix missing coverage ( #533 )
...
* investigate missing coverage
* test different pattern
* wip pattern testing
* try globastar
2021-02-23 12:50:43 +09:00
Giovanni Petrantoni
8236319a91
[SEC] gossipsub - handleGraft/handlePrune recommendations & notes ( #530 )
...
Fixes #401
2021-02-22 12:04:20 +09:00
Giovanni Petrantoni
1368bf7ecb
test rebalanceMesh with low score peers ( #529 )
2021-02-22 10:05:25 +09:00
Giovanni Petrantoni
922cd92f94
don't check if peers have `sendConn` when disconnecting for bad scoring
2021-02-22 10:04:02 +09:00
Giovanni Petrantoni
51d8cd4ade
[SEC] gossipsub - rebalanceMesh may prune up to D_lo on oversubscription ( #531 )
...
Fixes #403
2021-02-13 13:39:32 +09:00
Giovanni Petrantoni
e124e342b0
n subscription limits ( #528 )
...
* subscription high water, cleanups
* subscription limits test
* newline
2021-02-12 12:27:26 +09:00
Dmitriy Ryajov
12adefb4de
add multi types to exports ( #527 )
...
* add multitypes to exports
* export standard setup
2021-02-10 11:42:46 -06:00
Dmitriy Ryajov
f4145ebbfa
More exports cleanup ( #522 )
...
* annotate `SecureProtocol.Secio` as deprecated
* dont export varint
* add `errors` to exports - convenient error utils
2021-02-09 15:41:49 -06:00
Giovanni Petrantoni
fff54fa23c
add more diagnostics when gossip publish fails
2021-02-09 18:42:59 +09:00
Ștefan Talpalaru
d9563d65ae
support compilation with Nim-1.4 HEAD ( #521 )
2021-02-08 15:21:43 -06:00
Dmitriy Ryajov
2658181df9
Merge unstable ( #518 )
...
* Address Book POC implementation (#499 )
* Address Book POC implementation
* Feat/peerstore impl (#505 )
Co-authored-by: Hanno Cornelius <68783915+jm-clius@users.noreply.github.com>
2021-02-08 15:16:23 -06:00
Dmitriy Ryajov
4dea23c394
Remove secio usage and cleanup exports ( #519 )
...
* cleaned up exports
* remove secio use
* added more useful exports
* proper import
2021-02-08 14:33:34 -06:00
Giovanni Petrantoni
646557597d
lower some gossipsub logging to debug level
2021-02-08 10:11:41 +09:00
Giovanni Petrantoni
fd73cf9f9d
Refactor gossipsub into multiple modules ( #515 )
...
* Refactor gossipsub into multiple modules
* splitup further gossipsub
* move more mesh related stuff to behavior
* fix internal tests
* fix PubSubPeer.outbound flag, make it more reliable
* use discard rather then _
2021-02-06 09:13:04 +09:00
Dmitriy Ryajov
3213e5d377
add sane exports to libp2p ( #517 )
2021-02-05 11:57:32 -06:00
Dmitriy Ryajov
5c234ddd37
add hash proc to support using with containers ( #516 )
2021-02-05 10:12:44 -06:00
Giovanni Petrantoni
5aebf0990e
peer stats fixes ( #511 )
...
Gossipsub fix, required by nimbus, merging into master as low impact
2021-01-29 12:41:51 +09:00
Dmitriy Ryajov
fb493d1a4a
Connection limits tests ( #509 )
...
* connection limit tests
* remove use of secio
* check that upgraded fut is not nil
* rebuild
2021-01-27 21:27:33 -06:00
Giovanni Petrantoni
1d77d37f17
Gossipsub scoring fixes ( #508 )
...
* Fix some problematics when running with full scoring
* more fixes
2021-01-25 21:13:42 +09:00