From e78722c0ac2b52e031f754851a1663c3ca05acb5 Mon Sep 17 00:00:00 2001 From: Ahmed Yasin Koculu Date: Mon, 22 Aug 2022 10:25:43 +0200 Subject: [PATCH] Update sliding expiration. --- src/ZoneTree.UnitTests/TTLTests.cs | 2 +- src/ZoneTree/Core/ZoneTree.cs | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/ZoneTree.UnitTests/TTLTests.cs b/src/ZoneTree.UnitTests/TTLTests.cs index a5b46e9..f712bd4 100644 --- a/src/ZoneTree.UnitTests/TTLTests.cs +++ b/src/ZoneTree.UnitTests/TTLTests.cs @@ -36,7 +36,7 @@ public class TTLTests out v1, void (ref TTLValue v) => v.SlideExpiration(TimeSpan.FromMilliseconds(300))); - Thread.Sleep(300); + Thread.Sleep(450); // initial expiration (300) + slided expiration (300) - Thread.Sleep(150) f2 = zoneTree.TryGetAndUpdate( 5, out v2, diff --git a/src/ZoneTree/Core/ZoneTree.cs b/src/ZoneTree/Core/ZoneTree.cs index b92eb82..a731ac1 100644 --- a/src/ZoneTree/Core/ZoneTree.cs +++ b/src/ZoneTree/Core/ZoneTree.cs @@ -219,9 +219,10 @@ public sealed class ZoneTree : IZoneTree, IZoneTreeM if (SegmentZero.TryGet(key, out value)) { - return !IsValueDeleted(value); + if (IsValueDeleted(value)) + return false; } - if (!TryGetFromReadonlySegments(in key, out value)) + else if (!TryGetFromReadonlySegments(in key, out value)) return false; valueUpdater(ref value); @@ -238,9 +239,10 @@ public sealed class ZoneTree : IZoneTree, IZoneTreeM { if (SegmentZero.TryGet(key, out value)) { - return !IsValueDeleted(value); + if (IsValueDeleted(value)) + return false; } - if (!TryGetFromReadonlySegments(in key, out value)) + else if (!TryGetFromReadonlySegments(in key, out value)) return false; valueUpdater(ref value);