Skip to content

Commit 95ece2b

Browse files
committed
Check SocketPoolOptions timeout properties
1 parent a6b88cb commit 95ece2b

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

Enyim.Caching/Configuration/MemcachedClientConfiguration.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,27 @@ public MemcachedClientConfiguration(
5252
SocketPool = new SocketPoolConfiguration();
5353
if (options.SocketPool != null)
5454
{
55+
options.SocketPool.CheckTimeout();
56+
5557
SocketPool.MinPoolSize = options.SocketPool.MinPoolSize;
5658
_logger.LogInformation($"{nameof(SocketPool.MinPoolSize)}: {SocketPool.MinPoolSize}");
59+
5760
SocketPool.MaxPoolSize = options.SocketPool.MaxPoolSize;
5861
_logger.LogInformation($"{nameof(SocketPool.MaxPoolSize)}: {SocketPool.MaxPoolSize}");
59-
SocketPool.ConnectionTimeout = options.SocketPool.ConnectionTimeout;
60-
_logger.LogInformation($"{nameof(SocketPool.ConnectionTimeout)}: {SocketPool.ConnectionTimeout}");
62+
63+
SocketPool.ConnectionTimeout = options.SocketPool.ConnectionTimeout;
64+
_logger.LogInformation($"{nameof(SocketPool.ConnectionTimeout)}: {SocketPool.ConnectionTimeout}");
65+
6166
SocketPool.ReceiveTimeout = options.SocketPool.ReceiveTimeout;
6267
_logger.LogInformation($"{nameof(SocketPool.ReceiveTimeout)}: {SocketPool.ReceiveTimeout}");
68+
6369
SocketPool.DeadTimeout = options.SocketPool.DeadTimeout;
6470
_logger.LogInformation($"{nameof(SocketPool.DeadTimeout)}: {SocketPool.DeadTimeout}");
71+
6572
SocketPool.QueueTimeout = options.SocketPool.QueueTimeout;
6673
_logger.LogInformation($"{nameof(SocketPool.QueueTimeout)}: {SocketPool.QueueTimeout}");
6774
}
68-
75+
6976
Protocol = options.Protocol;
7077

7178
if (options.Authentication != null && !string.IsNullOrEmpty(options.Authentication.Type))

Enyim.Caching/Configuration/MemcachedClientOptions.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,5 +66,21 @@ public class SocketPoolOptions
6666
public TimeSpan ReceiveTimeout { get; set; } = new TimeSpan(0, 0, 10);
6767
public TimeSpan DeadTimeout { get; set; } = new TimeSpan(0, 0, 10);
6868
public TimeSpan QueueTimeout { get; set; } = new TimeSpan(0, 0, 0, 0, 100);
69+
70+
public void CheckTimeout()
71+
{
72+
CheckTimeout(nameof(ConnectionTimeout), ConnectionTimeout);
73+
CheckTimeout(nameof(ReceiveTimeout), ReceiveTimeout);
74+
CheckTimeout(nameof(DeadTimeout), DeadTimeout);
75+
CheckTimeout(nameof(QueueTimeout), QueueTimeout);
76+
}
77+
78+
private void CheckTimeout(string paramName, TimeSpan value)
79+
{
80+
if (value.TotalHours > 1)
81+
{
82+
throw new ArgumentOutOfRangeException(paramName, $"{paramName} must be <= 1 hour");
83+
}
84+
}
6985
}
7086
}

0 commit comments

Comments
 (0)