From e2b08650103fe62f115318d054d30177199c8090 Mon Sep 17 00:00:00 2001 From: nisdas Date: Thu, 14 Mar 2024 18:20:46 +0800 Subject: [PATCH] add mplex timeout --- beacon-chain/p2p/BUILD.bazel | 1 + beacon-chain/p2p/options.go | 7 +++++++ beacon-chain/p2p/service.go | 2 ++ 3 files changed, 10 insertions(+) diff --git a/beacon-chain/p2p/BUILD.bazel b/beacon-chain/p2p/BUILD.bazel index 28d92e3b6be..af756239914 100644 --- a/beacon-chain/p2p/BUILD.bazel +++ b/beacon-chain/p2p/BUILD.bazel @@ -94,6 +94,7 @@ go_library( "@com_github_libp2p_go_libp2p_mplex//:go_default_library", "@com_github_libp2p_go_libp2p_pubsub//:go_default_library", "@com_github_libp2p_go_libp2p_pubsub//pb:go_default_library", + "@com_github_libp2p_go_mplex//:go_default_library", "@com_github_multiformats_go_multiaddr//:go_default_library", "@com_github_multiformats_go_multiaddr//net:go_default_library", "@com_github_pkg_errors//:go_default_library", diff --git a/beacon-chain/p2p/options.go b/beacon-chain/p2p/options.go index d7546849105..5ccf204af96 100644 --- a/beacon-chain/p2p/options.go +++ b/beacon-chain/p2p/options.go @@ -4,6 +4,7 @@ import ( "crypto/ecdsa" "fmt" "net" + "time" "github.com/libp2p/go-libp2p" mplex "github.com/libp2p/go-libp2p-mplex" @@ -11,6 +12,7 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/p2p/security/noise" "github.com/libp2p/go-libp2p/p2p/transport/tcp" + gomplex "github.com/libp2p/go-mplex" ma "github.com/multiformats/go-multiaddr" "github.com/pkg/errors" "github.com/prysmaticlabs/prysm/v5/config/features" @@ -134,3 +136,8 @@ func privKeyOption(privkey *ecdsa.PrivateKey) libp2p.Option { return cfg.Apply(libp2p.Identity(ifaceKey)) } } + +// Configures stream timeouts on mplex. +func configureMplex() { + gomplex.ResetStreamTimeout = 5 * time.Second +} diff --git a/beacon-chain/p2p/service.go b/beacon-chain/p2p/service.go index ea5cd10ee4b..ff808fbed37 100644 --- a/beacon-chain/p2p/service.go +++ b/beacon-chain/p2p/service.go @@ -120,6 +120,8 @@ func NewService(ctx context.Context, cfg *Config) (*Service, error) { s.ipLimiter = leakybucket.NewCollector(ipLimit, ipBurst, 30*time.Second, true /* deleteEmptyBuckets */) opts := s.buildOptions(ipAddr, s.privKey) + // Sets mplex timeouts + configureMplex() h, err := libp2p.New(opts...) if err != nil { log.WithError(err).Error("Failed to create p2p host")