Skip to content

Commit

Permalink
RavenDB-23183 - ensure the cached items are cleared before returning …
Browse files Browse the repository at this point in the history
…the array to the ArrayPool
  • Loading branch information
grisha-kotler committed Nov 26, 2024
1 parent 13b7a21 commit f1b08f7
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,8 @@ public void Dispose()
for (int i = 0; i < _size; i++)
{
Values[i].Release.Dispose();
Values[i].Release = default;
//Values[i].Cached = null;
}
ArrayPool<(HttpCache.ReleaseCacheItem, BlittableJsonReaderObject)>.Shared.Return(Values);
Values = null;
Expand Down
60 changes: 60 additions & 0 deletions test/StressTests/Client/MultiGet.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using FastTests;
using Raven.Tests.Core.Utils.Entities;
using Xunit;
using Xunit.Abstractions;

namespace StressTests.Client
{
public class MultiGet : RavenTestBase
{
public MultiGet(ITestOutputHelper output) : base(output)
{
}

[Fact]
public async Task MultiGetCanGetFromCache()
{
var store = GetDocumentStore();

using (var bulk = store.BulkInsert())
{
for (var i = 0; i < 10_000; i++)
{
await bulk.StoreAsync(new User { Id = $"Users/{i}", Count = i });
}
}

async Task Fetch()
{
for (var i = 0; i < 64; i++)
{
using (var session = store.OpenAsyncSession())
{
var n1 = Random.Shared.Next(0, 10_000);
var n2 = Random.Shared.Next(0, 10_000);
session.Advanced.Lazily.LoadAsync<User>($"Users/{n1}");
session.Advanced.Lazily.LoadAsync<User>($"Users/{n2}");
await session.Advanced.Eagerly.ExecuteAllPendingLazyOperationsAsync();

var loaded1 = await session.LoadAsync<User>($"Users/{n1}");
Assert.Equal(n1, loaded1.Count);

var loaded2 = await session.LoadAsync<User>($"Users/{n2}");
Assert.Equal(n2, loaded2.Count);
}
}
}

var tasks = new List<Task>();
for (var i = 0; i < 100; i++)
{
tasks.Add(Task.Run(Fetch));
}

await Task.WhenAll(tasks);
}
}
}

0 comments on commit f1b08f7

Please sign in to comment.