From 009fb8817bf1b3d6468793888acff20eb522521e Mon Sep 17 00:00:00 2001 From: Marc Harvey-Hill Date: Tue, 5 Nov 2024 15:37:08 +0000 Subject: [PATCH 1/6] move disconnection log timeout to config & change deafult to 20 --- .../Nethermind.Shutter/Config/IShutterConfig.cs | 9 +++++++++ .../Nethermind.Shutter/Config/ShutterConfig.cs | 1 + src/Nethermind/Nethermind.Shutter/ShutterP2P.cs | 7 ++++--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs b/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs index d074ccf4901..79278f3a705 100644 --- a/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs +++ b/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs @@ -75,6 +75,10 @@ public interface IShutterConfig : IConfig DefaultValue = "true", HiddenFromDocs = true)] bool Validator { get; set; } + [ConfigItem(Description = "How many minutes to wait for transactions before sending a disconnection warning.", + DefaultValue = "20", HiddenFromDocs = true)] + ushort DisconnectionLogTimeout { get; set; } + public void Validate(out Multiaddress[] bootnodeP2PAddresses) { if (Validator && ValidatorInfoFile is null) @@ -107,6 +111,11 @@ public void Validate(out Multiaddress[] bootnodeP2PAddresses) throw new ArgumentException("Must set Shutter keyper set manager contract address to valid address."); } + if (DisconnectionLogTimeout == 0) + { + throw new ArgumentException("Must set Shutter disconnection log timeout greater than 0."); + } + if (P2PAgentVersion is null) { throw new ArgumentNullException(nameof(P2PAgentVersion)); diff --git a/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs b/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs index d68d26b11e6..8e638748d67 100644 --- a/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs +++ b/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs @@ -21,5 +21,6 @@ public class ShutterConfig : IShutterConfig public ulong InstanceID { get; set; } = 0; public int EncryptedGasLimit { get; set; } = 10000000; public ushort MaxKeyDelay { get; set; } = 1666; + public ushort DisconnectionLogTimeout { get; set; } = 20; } } diff --git a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs index 726df4f29db..07960e2e8f3 100644 --- a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs +++ b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs @@ -33,7 +33,7 @@ public class ShutterP2P : IShutterP2P private readonly ILocalPeer _peer; private readonly ServiceProvider _serviceProvider; private CancellationTokenSource? _cts; - private static readonly TimeSpan DisconnectionLogTimeout = TimeSpan.FromMinutes(5); + private readonly TimeSpan DisconnectionLogTimeout; public class ShutterP2PException(string message, Exception? innerException = null) : Exception(message, innerException); @@ -42,12 +42,13 @@ public ShutterP2P(IShutterConfig shutterConfig, ILogManager logManager, IFileSys { _logger = logManager.GetClassLogger(); _cfg = shutterConfig; + DisconnectionLogTimeout = TimeSpan.FromMinutes(_cfg.DisconnectionLogTimeout); _serviceProvider = new ServiceCollection() .AddLibp2p(builder => builder) .AddSingleton(new IdentifyProtocolSettings { - ProtocolVersion = shutterConfig.P2PProtocolVersion, - AgentVersion = shutterConfig.P2PAgentVersion + ProtocolVersion = _cfg.P2PProtocolVersion, + AgentVersion = _cfg.P2PAgentVersion }) // pubsub settings .AddSingleton(new Settings() From 94135374f115b59fd75ce31d17311cfd8e2a7df9 Mon Sep 17 00:00:00 2001 From: Marc Harvey-Hill Date: Wed, 6 Nov 2024 03:19:36 +0000 Subject: [PATCH 2/6] convert to milliseconds --- .../Nethermind.Shutter/Config/IShutterConfig.cs | 10 +++++----- .../Nethermind.Shutter/Config/ShutterConfig.cs | 2 +- src/Nethermind/Nethermind.Shutter/ShutterP2P.cs | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs b/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs index 79278f3a705..546be8631b1 100644 --- a/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs +++ b/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs @@ -75,9 +75,9 @@ public interface IShutterConfig : IConfig DefaultValue = "true", HiddenFromDocs = true)] bool Validator { get; set; } - [ConfigItem(Description = "How many minutes to wait for transactions before sending a disconnection warning.", - DefaultValue = "20", HiddenFromDocs = true)] - ushort DisconnectionLogTimeout { get; set; } + [ConfigItem(Description = "How many milliseconds to wait for transactions before sending a disconnection warning.", + DefaultValue = "1200000", HiddenFromDocs = true)] + uint DisconnectionLogTimeout { get; set; } public void Validate(out Multiaddress[] bootnodeP2PAddresses) { @@ -111,9 +111,9 @@ public void Validate(out Multiaddress[] bootnodeP2PAddresses) throw new ArgumentException("Must set Shutter keyper set manager contract address to valid address."); } - if (DisconnectionLogTimeout == 0) + if (DisconnectionLogTimeout < 60000) { - throw new ArgumentException("Must set Shutter disconnection log timeout greater than 0."); + throw new ArgumentException("Must set Shutter disconnection log timeout to at least a minute."); } if (P2PAgentVersion is null) diff --git a/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs b/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs index 8e638748d67..1a1f270a579 100644 --- a/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs +++ b/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs @@ -21,6 +21,6 @@ public class ShutterConfig : IShutterConfig public ulong InstanceID { get; set; } = 0; public int EncryptedGasLimit { get; set; } = 10000000; public ushort MaxKeyDelay { get; set; } = 1666; - public ushort DisconnectionLogTimeout { get; set; } = 20; + public uint DisconnectionLogTimeout { get; set; } = 1200000; } } diff --git a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs index 07960e2e8f3..035d3239dd9 100644 --- a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs +++ b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs @@ -42,7 +42,7 @@ public ShutterP2P(IShutterConfig shutterConfig, ILogManager logManager, IFileSys { _logger = logManager.GetClassLogger(); _cfg = shutterConfig; - DisconnectionLogTimeout = TimeSpan.FromMinutes(_cfg.DisconnectionLogTimeout); + DisconnectionLogTimeout = TimeSpan.FromMilliseconds(_cfg.DisconnectionLogTimeout); _serviceProvider = new ServiceCollection() .AddLibp2p(builder => builder) .AddSingleton(new IdentifyProtocolSettings From 190c4803c08c55c8b2b3b5a9caa8c42322aad00f Mon Sep 17 00:00:00 2001 From: ak88 Date: Wed, 6 Nov 2024 14:08:50 +0100 Subject: [PATCH 3/6] Keep showing the disc message after config setting has passed (#7731) --- src/Nethermind/Nethermind.Shutter/ShutterP2P.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs index 035d3239dd9..519435938ae 100644 --- a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs +++ b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs @@ -102,7 +102,7 @@ public async Task Start(Multiaddress[] bootnodeP2PAddresses, Func DisconnectionLogTimeout.TotalSeconds) + _logger.Warn($"Not receiving Shutter messages ({delta / 60}m)..."); } } catch (Exception e) From ce88616b25c2b27b10cd49e805f2d33f58fd44e4 Mon Sep 17 00:00:00 2001 From: Marc Harvey-Hill Date: Wed, 6 Nov 2024 13:22:31 +0000 Subject: [PATCH 4/6] long timeout first time --- src/Nethermind/Nethermind.Shutter/ShutterP2P.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs index 519435938ae..47c4599d31a 100644 --- a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs +++ b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs @@ -98,15 +98,18 @@ public async Task Start(Multiaddress[] bootnodeP2PAddresses, Func DisconnectionLogTimeout.TotalSeconds) - _logger.Warn($"Not receiving Shutter messages ({delta / 60}m)..."); + hasTimedOut = true; + if (_logger.IsWarn) + { + long delta = DateTimeOffset.Now.ToUnixTimeSeconds() - lastMessageProcessed; + if (delta >= DisconnectionLogTimeout.TotalSeconds) + _logger.Warn($"Not receiving Shutter messages ({delta / 60}m)..."); + } } } catch (Exception e) From bbb57055c02ba49c6c410431e2d55a3b7ef2ea1d Mon Sep 17 00:00:00 2001 From: Marc Harvey-Hill Date: Wed, 6 Nov 2024 13:25:44 +0000 Subject: [PATCH 5/6] remove redundant check --- src/Nethermind/Nethermind.Shutter/ShutterP2P.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs index 47c4599d31a..7212eb1165d 100644 --- a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs +++ b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs @@ -125,8 +125,7 @@ public async Task Start(Multiaddress[] bootnodeP2PAddresses, Func= DisconnectionLogTimeout.TotalSeconds) - _logger.Warn($"Not receiving Shutter messages ({delta / 60}m)..."); + _logger.Warn($"Not receiving Shutter messages ({delta / 60}m)..."); } } } From 122f0401571f9e377ea85315664c5cd71c638357 Mon Sep 17 00:00:00 2001 From: Marc Harvey-Hill Date: Wed, 6 Nov 2024 14:43:24 +0000 Subject: [PATCH 6/6] make disconenctionloginterval config option --- .../Nethermind.Shutter/Config/IShutterConfig.cs | 4 ++++ .../Nethermind.Shutter/Config/ShutterConfig.cs | 1 + src/Nethermind/Nethermind.Shutter/ShutterP2P.cs | 15 +++++++-------- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs b/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs index 546be8631b1..9451d23ecce 100644 --- a/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs +++ b/src/Nethermind/Nethermind.Shutter/Config/IShutterConfig.cs @@ -79,6 +79,10 @@ public interface IShutterConfig : IConfig DefaultValue = "1200000", HiddenFromDocs = true)] uint DisconnectionLogTimeout { get; set; } + [ConfigItem(Description = "How many milliseconds in between each disconnection warning.", + DefaultValue = "60000", HiddenFromDocs = true)] + uint DisconnectionLogInterval { get; set; } + public void Validate(out Multiaddress[] bootnodeP2PAddresses) { if (Validator && ValidatorInfoFile is null) diff --git a/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs b/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs index 1a1f270a579..016ad2b5857 100644 --- a/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs +++ b/src/Nethermind/Nethermind.Shutter/Config/ShutterConfig.cs @@ -22,5 +22,6 @@ public class ShutterConfig : IShutterConfig public int EncryptedGasLimit { get; set; } = 10000000; public ushort MaxKeyDelay { get; set; } = 1666; public uint DisconnectionLogTimeout { get; set; } = 1200000; + public uint DisconnectionLogInterval { get; set; } = 60000; } } diff --git a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs index 7212eb1165d..6ee4a122bc3 100644 --- a/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs +++ b/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs @@ -32,8 +32,9 @@ public class ShutterP2P : IShutterP2P private readonly PeerStore _peerStore; private readonly ILocalPeer _peer; private readonly ServiceProvider _serviceProvider; - private CancellationTokenSource? _cts; private readonly TimeSpan DisconnectionLogTimeout; + private readonly TimeSpan DisconnectionLogInterval; + private CancellationTokenSource? _cts; public class ShutterP2PException(string message, Exception? innerException = null) : Exception(message, innerException); @@ -43,6 +44,7 @@ public ShutterP2P(IShutterConfig shutterConfig, ILogManager logManager, IFileSys _logger = logManager.GetClassLogger(); _cfg = shutterConfig; DisconnectionLogTimeout = TimeSpan.FromMilliseconds(_cfg.DisconnectionLogTimeout); + DisconnectionLogInterval = TimeSpan.FromMilliseconds(_cfg.DisconnectionLogInterval); _serviceProvider = new ServiceCollection() .AddLibp2p(builder => builder) .AddSingleton(new IdentifyProtocolSettings @@ -104,7 +106,7 @@ public async Task Start(Multiaddress[] bootnodeP2PAddresses, Func