From 593336003dfe417ebb4bcd73b87704ed5c298253 Mon Sep 17 00:00:00 2001 From: moshe-blox <89339422+moshe-blox@users.noreply.github.com> Date: Sun, 16 Jun 2024 17:22:19 +0300 Subject: [PATCH] refactor: low discovery interval (#1435) * try 1ms discovery interval on mainnet node 1 * deploy to mainnet 2 * deploy to mainnet 3 * deploy to mainnet 3 * Revert "deploy to mainnet 3" This reverts commit 38a1746457b0fe678d94e91e41287325b3f783f6. * Revert "deploy to mainnet 3" This reverts commit 4d9e8dc59af95a80175a0bf3058c6e71caeb944a. * deploy different interval mechanism to node 1 * add domain type filtering (mainnet node 1) * 100ms discovery interval * comment * deploy to node 2 * deploy to mainnet 3 & 4 * revert deployments * deploy to holesky prod * revert deployments --- network/discovery/dv5_service.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/network/discovery/dv5_service.go b/network/discovery/dv5_service.go index 98312675ce..6842015d9b 100644 --- a/network/discovery/dv5_service.go +++ b/network/discovery/dv5_service.go @@ -24,7 +24,7 @@ import ( ) var ( - defaultDiscoveryInterval = time.Second + defaultDiscoveryInterval = time.Millisecond * 100 publishENRTimeout = time.Minute publishStateReady = int32(0) @@ -215,7 +215,7 @@ func (dvs *DiscV5Service) initDiscV5Listener(logger *zap.Logger, discOpts *Optio // by a random walking on the underlying DHT. // // handler will act upon new node. -// interval enables to control the rate of new nodes that we find. +// interval enables to control the rate of discovered nodes that we accept. // filters will be applied on each new node before the handler is called, // enabling to apply custom access control for different scenarios. func (dvs *DiscV5Service) discover(ctx context.Context, handler HandleNewPeer, interval time.Duration, filters ...NodeFilter) { @@ -226,15 +226,10 @@ func (dvs *DiscV5Service) discover(ctx context.Context, handler HandleNewPeer, i // selfID is used to exclude current node selfID := dvs.dv5Listener.LocalNode().Node().ID().TerminalString() - t := time.NewTimer(interval) - defer t.Stop() - wait := func() { - t.Reset(interval) - <-t.C - } + ticker := time.NewTicker(interval) + defer ticker.Stop() for ctx.Err() == nil { - wait() exists := iterator.Next() if !exists { continue @@ -252,6 +247,11 @@ func (dvs *DiscV5Service) discover(ctx context.Context, handler HandleNewPeer, i AddrInfo: *ai, Node: n, }) + select { + case <-ticker.C: + case <-ctx.Done(): + return + } } } }