Aggressive cache not used for lazily loaded documents

34 views
Skip to first unread message

Andrej Krivulčík

unread,
Sep 10, 2020, 7:46:11 AM9/10/20
to RavenDB - 2nd generation document database
When loading documents lazily, the aggressive cache is not used. Failing test (tested on 5.0.2):

using Raven.TestDriver;
using System;
using System.Threading.Tasks;
using Xunit;

namespace RavenDB5Tests.Tests
{
   
public class AggresiveCacheWithLazy : RavenTestDriver
   
{
       
[Fact]
       
public async Task AggresiveCacheWithLazyTestAsync()
       
{
           
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)))
           
{
               
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)))
           
{
               
var cachedDocLazy = session.Advanced.Lazily.LoadAsync<Doc>("doc-1");
               
var cachedDoc = await cachedDocLazy.Value;
           
}

           
Assert.Equal(requests, requestExecutor.NumberOfServerRequests);
       
}

       
[Fact]
       
public void AggresiveCacheWithLazyTest()
       
{
           
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)))
           
{
               
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)))
           
{
               
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; }
       
}
   
}
}



Oren Eini (Ayende Rahien)

unread,
Sep 13, 2020, 7:02:09 AM9/13/20
to ravendb
It looks like we aren't using aggressive caching for lazy load queries (note that we are using caching here, though).

--
You received this message because you are subscribed to the Google Groups "RavenDB - 2nd generation document database" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ravendb+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ravendb/60d5ab9f-c537-4902-b71f-279e5a8cc816o%40googlegroups.com.


--
Oren Eini
CEO   /   Hibernating Rhinos LTD
Skype:  ayenderahien
Support:  sup...@ravendb.net
  

Oren Eini (Ayende Rahien)

unread,
Sep 20, 2020, 10:35:14 AM9/20/20
to ravendb
Reply all
Reply to author
Forward
0 new messages