When loading documents lazily with changes tracking disabled, the aggressive cache is not used. Failing test (tested on 5.1.0, tests are almost identical to the ones in
https://groups.google.com/g/ravendb/c/700pC-kkZk4, except for
AggressiveCacheMode.DoNotTrackChanges (and fixed typos)):
using Raven.TestDriver;
using System;
using System.Threading.Tasks;
using Raven.Client.Http;
using Xunit;
namespace RavenDB5Tests.Tests
{
public class AggressiveCacheWithLazyWithoutChangesTracking : RavenTestDriver
{
[Fact]
public async Task AggressiveCacheWithLazyTestAsync()
{
using var store = GetDocumentStore();
var requestExecutor = store.GetRequestExecutor();
using (var session = store.OpenSession())
{
session.Store(new Doc { Id = "doc-1" });
session.SaveChanges();
}
using (var session = store.OpenAsyncSession())
using (session.Advanced.DocumentStore.AggressivelyCacheFor(TimeSpan.FromMinutes(5), AggressiveCacheMode.DoNotTrackChanges))
{
var docLazy = session.Advanced.Lazily.LoadAsync<Doc>("doc-1");
var doc = await docLazy.Value;
}
var requests = requestExecutor.NumberOfServerRequests;
using (var session = store.OpenAsyncSession())
using (session.Advanced.DocumentStore.AggressivelyCacheFor(TimeSpan.FromMinutes(5), AggressiveCacheMode.DoNotTrackChanges))
{
var cachedDocLazy = session.Advanced.Lazily.LoadAsync<Doc>("doc-1");
var cachedDoc = await cachedDocLazy.Value;
}
Assert.Equal(requests, requestExecutor.NumberOfServerRequests);
}
[Fact]
public void AggressiveCacheWithLazyTest()
{
using var store = GetDocumentStore();
var requestExecutor = store.GetRequestExecutor();
using (var session = store.OpenSession())
{
session.Store(new Doc { Id = "doc-1" });
session.SaveChanges();
}
using (var session = store.OpenSession())
using (session.Advanced.DocumentStore.AggressivelyCacheFor(TimeSpan.FromMinutes(5), AggressiveCacheMode.DoNotTrackChanges))
{
var docLazy = session.Advanced.Lazily.Load<Doc>("doc-1");
var doc = docLazy.Value;
}
var requests = requestExecutor.NumberOfServerRequests;
using (var session = store.OpenSession())
using (session.Advanced.DocumentStore.AggressivelyCacheFor(TimeSpan.FromMinutes(5), AggressiveCacheMode.DoNotTrackChanges))
{
var cachedDocLazy = session.Advanced.Lazily.Load<Doc>("doc-1");
var cachedDoc = cachedDocLazy.Value;
}
Assert.Equal(requests, requestExecutor.NumberOfServerRequests);
}
public class Doc
{
public string Id { get; set; }
}
}
}