CachedUntil - Clamp CachedSeconds expiry to DateTime.MaxValue

This commit is contained in:
dualfroz committed 2026-10-11 16:15:32 +02:00
1 parent d490e07ea2
commit 9537db7a71
2 files changed
+12 -5

No files matched your search

@@ -208,7 +208,12 @@ namespace NLog.LayoutRenderers.Wrappers
private DateTime? ResolveCachedValueExpires(DateTime timeStamp)
{
DateTime? expires = _cachedValueTimeout.HasValue ? timeStamp + _cachedValueTimeout.Value : null;
DateTime? expires = null;
if (_cachedValueTimeout.HasValue)
{
var timeoutTicks = Math.Min(_cachedValueTimeout.Value.Ticks, DateTime.MaxValue.Ticks - timeStamp.Ticks);
expires = timeStamp.AddTicks(timeoutTicks);
}
if (_cachedUntil != CachedUntilLifetime.None)
{
var periodTicks = _cachedUntil == CachedUntilLifetime.DayChange ? TimeSpan.TicksPerDay : TimeSpan.TicksPerHour;
@@ -154,11 +154,13 @@ namespace NLog.UnitTests.LayoutRenderers.Wrappers
}
[Theory]
[InlineData("HourChange")]
[InlineData("DayChange")]
public void CachedUntilLastPeriodTest(string cachedUntil)
[InlineData("cachedUntil=HourChange")]
[InlineData("cachedUntil=DayChange")]
[InlineData("cachedSeconds=3600")]
[InlineData("cachedUntil=DayChange:cachedSeconds=3600")]
public void CachedLastPeriodTest(string cachedOptions)
{
SimpleLayout l = "${guid:cachedUntil=" + cachedUntil + "}";
SimpleLayout l = "${guid:" + cachedOptions + "}";
var s1 = l.Render(new LogEventInfo() { TimeStamp = DateTime.MaxValue.AddMinutes(-30) });
var s2 = l.Render(new LogEventInfo() { TimeStamp = DateTime.MaxValue });
Assert.NotEmpty(s1);