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);