Skip to content

Commit

Permalink
Updated to the latest RavenDB 3.5 version. (liquidprojections#69)
Browse files Browse the repository at this point in the history
  • Loading branch information
dennisdoomen committed Nov 23, 2016
1 parent dd10960 commit 252296c
Show file tree
Hide file tree
Showing 17 changed files with 148 additions and 72 deletions.
19 changes: 10 additions & 9 deletions Samples/ExampleHost/ExampleHost.csproj
Expand Up @@ -65,16 +65,16 @@
<HintPath>..\..\packages\AutoFixture.3.50.2\lib\net40\Ploeh.AutoFixture.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Raven.Abstractions, Version=3.0.0.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Database.3.0.30153\lib\net45\Raven.Abstractions.dll</HintPath>
<Reference Include="Raven.Abstractions, Version=3.5.1.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Database.3.5.1\lib\net45\Raven.Abstractions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Raven.Client.Lightweight, Version=3.0.0.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Client.3.0.30153\lib\net45\Raven.Client.Lightweight.dll</HintPath>
<Reference Include="Raven.Client.Lightweight, Version=3.5.1.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Client.3.5.1\lib\net45\Raven.Client.Lightweight.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Raven.Database, Version=3.0.0.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Database.3.0.30153\lib\net45\Raven.Database.dll</HintPath>
<Reference Include="Raven.Database, Version=3.5.1.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Database.3.5.1\lib\net45\Raven.Database.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
Expand Down Expand Up @@ -137,14 +137,15 @@
<Compile Include="TinyIocWebApiDependencyResolver.cs" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\packages\RavenDB.Database.3.5.1\tools\Raven.Studio.Html5.zip">
<Link>Raven.Studio.Html5.zip</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="App.config" />
<None Include="ExampleEvents.zip">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
<None Include="Raven.Studio.Html5.zip">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Src\LiquidProjections.NEventStore\LiquidProjections.NEventStore.csproj">
Expand Down
2 changes: 1 addition & 1 deletion Samples/ExampleHost/Program.cs
Expand Up @@ -62,7 +62,7 @@ private static EmbeddableDocumentStore BuildDocumentStore(string rootDir, int? s
{
DisableInMemoryIndexing = true,
DataDirectory = dataDir,
CountersDataDirectory = Path.Combine(rootDir, "Counters"),
Counter = { DataDirectory = Path.Combine(rootDir, "Counters") },
CompiledIndexCacheDirectory = Path.Combine(rootDir, "CompiledIndexCache"),
DefaultStorageTypeName = "Esent",
},
Expand Down
Binary file removed Samples/ExampleHost/Raven.Studio.Html5.zip
Binary file not shown.
6 changes: 3 additions & 3 deletions Samples/ExampleHost/packages.config
Expand Up @@ -11,8 +11,8 @@
<package id="Microsoft.Owin.SelfHost" version="3.0.1" targetFramework="net452" />
<package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
<package id="Owin" version="1.0" targetFramework="net452" />
<package id="RavenDB.Client" version="3.0.30153" targetFramework="net45" />
<package id="RavenDB.Database" version="3.0.30153" targetFramework="net45" />
<package id="RavenDB.Embedded" version="3.0.30153" targetFramework="net45" />
<package id="RavenDB.Client" version="3.5.1" targetFramework="net452" />
<package id="RavenDB.Database" version="3.5.1" targetFramework="net452" />
<package id="RavenDB.Embedded" version="3.5.1" targetFramework="net452" />
<package id="TinyIoC" version="1.3" targetFramework="net452" developmentDependency="true" />
</packages>
Expand Up @@ -577,11 +577,10 @@ internal class LifespanManager<T> : IEnumerable<INode<T>> where T : class
private DateTime nextValidityCheck;
private readonly int bagItemLimit;

private readonly AgeBag<T>[] bags;
private readonly OrderedAgeBagCollection<T> bags;
internal int itemsInCurrentBag;
private int currentBagIndex;
private int oldestBagIndex;
private const int nrBags = 265; // based on 240 timeslices + 20 bags for ItemLimit + 5 bags empty buffer

public LifespanManager(FluidCache<T> owner, int capacity, TimeSpan minAge, TimeSpan maxAge, GetNow getNow)
{
Expand All @@ -592,12 +591,9 @@ public LifespanManager(FluidCache<T> owner, int capacity, TimeSpan minAge, TimeS
this.maxAge = TimeSpan.FromMilliseconds(maxMS);
validatyCheckInterval = TimeSpan.FromMilliseconds(maxMS / 240.0); // max timeslice = 3 min
bagItemLimit = Math.Max(capacity / 20, 1); // max 5% of capacity per bag
bags = new AgeBag<T>[nrBags];

for (int loop = nrBags - 1; loop >= 0; --loop)
{
bags[loop] = new AgeBag<T>();
}
const int nrBags = 265; // based on 240 timeslices + 20 bags for ItemLimit + 5 bags empty buffer
bags = new OrderedAgeBagCollection<T>(nrBags);

Statistics = new CacheStats(capacity);

Expand Down Expand Up @@ -653,7 +649,7 @@ private void CleanUp(DateTime now)
lock (this)
{
int itemsToRemove = Statistics.Current - Statistics.Capacity;
AgeBag<T> bag = bags[oldestBagIndex % nrBags];
AgeBag<T> bag = bags[oldestBagIndex];

while (AlmostOutOfBags || bag.HasExpired(maxAge, now) ||
(itemsToRemove > 0 && bag.HasReachedMinimumAge(minAge, now)))
Expand Down Expand Up @@ -686,7 +682,7 @@ private void CleanUp(DateTime now)

// increment oldest bag
++oldestBagIndex;
bag = bags[oldestBagIndex % nrBags];
bag = bags[oldestBagIndex];

if (HasProcessedAllBags)
{
Expand All @@ -699,7 +695,7 @@ private void CleanUp(DateTime now)
}
}

private bool AlmostOutOfBags => (currentBagIndex - oldestBagIndex) > (nrBags - 5);
private bool AlmostOutOfBags => (currentBagIndex - oldestBagIndex) > (bags.Count - 5);

private bool HasProcessedAllBags => (oldestBagIndex == currentBagIndex);

Expand All @@ -710,17 +706,7 @@ public void Clear()
{
lock (this)
{
foreach (AgeBag<T> bag in bags)
{
Node<T> node = bag.First;
bag.First = null;
while (node != null)
{
Node<T> next = node.Next;
node.Remove();
node = next;
}
}
bags.Empty();

Statistics.Reset();

Expand All @@ -745,7 +731,7 @@ private void OpenBag(int bagNumber)
// open new age bag for next time slice
currentBagIndex = bagNumber;

AgeBag<T> currentBag = bags[currentBagIndex % nrBags];
AgeBag<T> currentBag = bags[currentBagIndex];
currentBag.StartTime = now;
currentBag.First = null;

Expand All @@ -762,7 +748,7 @@ public IEnumerator<INode<T>> GetEnumerator()
{
for (int bagNumber = currentBagIndex; bagNumber >= oldestBagIndex; --bagNumber)
{
AgeBag<T> bag = bags[bagNumber % nrBags];
AgeBag<T> bag = bags[bagNumber];
// if bag.first == null then bag is empty or being cleaned up, so skip it!
for (Node<T> node = bag.First; node != null && bag.First != null; node = node.Next)
{
Expand Down Expand Up @@ -876,3 +862,64 @@ public void Remove()
}
}


namespace FluidCaching
{
internal class OrderedAgeBagCollection<T> where T : class
{
private readonly AgeBag<T>[] bags;

public OrderedAgeBagCollection(int capacity)
{
bags = new AgeBag<T>[capacity];

for (int loop = capacity - 1; loop >= 0; --loop)
{
bags[loop] = new AgeBag<T>();
}
}

public AgeBag<T> this[int number]
{
get
{
if (number == int.MaxValue)
{
throw new OverflowException("The bag number has reached its max value");
}

if (number < 0)
{
throw new ArgumentException("The bag number must be positive");
}

int index = number % bags.Length;
return bags[index];
}
}

public int Count => bags.Length;

/// <summary>
/// Empties the bags in the current set.
/// </summary>
/// <remarks>
/// Emptying here means that all nodes in all bags are disassociated from the bag.
/// </remarks>
public void Empty()
{
foreach (AgeBag<T> bag in bags)
{
Node<T> node = bag.First;
bag.First = null;
while (node != null)
{
Node<T> next = node.Next;
node.Remove();
node = next;
}
}
}
}
}

Expand Up @@ -38,12 +38,12 @@
<LangVersion>6</LangVersion>
</PropertyGroup>
<ItemGroup>
<Reference Include="Raven.Abstractions, Version=3.0.0.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Client.3.0.30153\lib\net45\Raven.Abstractions.dll</HintPath>
<Reference Include="Raven.Abstractions, Version=3.5.1.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Client.3.5.1\lib\net45\Raven.Abstractions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Raven.Client.Lightweight, Version=3.0.0.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Client.3.0.30153\lib\net45\Raven.Client.Lightweight.dll</HintPath>
<Reference Include="Raven.Client.Lightweight, Version=3.5.1.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Client.3.5.1\lib\net45\Raven.Client.Lightweight.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
Expand Down
4 changes: 2 additions & 2 deletions Src/LiquidProjections.RavenDB/packages.config
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FluidCaching.Sources" version="1.0.3" targetFramework="net452" />
<package id="RavenDB.Client" version="3.0.30153" targetFramework="net452" />
<package id="FluidCaching.Sources" version="1.0.4" targetFramework="net452" />
<package id="RavenDB.Client" version="3.5.1" targetFramework="net452" />
</packages>
@@ -0,0 +1,27 @@
<ProjectConfiguration>
<AutoDetectNugetBuildDependencies>true</AutoDetectNugetBuildDependencies>
<BuildPriority>1000</BuildPriority>
<CopyReferencedAssembliesToWorkspace>false</CopyReferencedAssembliesToWorkspace>
<ConsiderInconclusiveTestsAsPassing>false</ConsiderInconclusiveTestsAsPassing>
<PreloadReferencedAssemblies>false</PreloadReferencedAssemblies>
<AllowDynamicCodeContractChecking>true</AllowDynamicCodeContractChecking>
<AllowStaticCodeContractChecking>false</AllowStaticCodeContractChecking>
<AllowCodeAnalysis>false</AllowCodeAnalysis>
<IgnoreThisComponentCompletely>false</IgnoreThisComponentCompletely>
<RunPreBuildEvents>false</RunPreBuildEvents>
<RunPostBuildEvents>false</RunPostBuildEvents>
<PreviouslyBuiltSuccessfully>true</PreviouslyBuiltSuccessfully>
<TrackFileDependencies>false</TrackFileDependencies>
<InstrumentAssembly>true</InstrumentAssembly>
<PreventSigningOfAssembly>false</PreventSigningOfAssembly>
<AnalyseExecutionTimes>true</AnalyseExecutionTimes>
<DetectStackOverflow>true</DetectStackOverflow>
<IncludeStaticReferencesInWorkspace>true</IncludeStaticReferencesInWorkspace>
<DefaultTestTimeout>60000</DefaultTestTimeout>
<UseBuildConfiguration />
<UseBuildPlatform />
<ProxyProcessPath />
<UseCPUArchitecture>AutoDetect</UseCPUArchitecture>
<MSTestThreadApartmentState>STA</MSTestThreadApartmentState>
<BuildProcessArchitecture>x86</BuildProcessArchitecture>
</ProjectConfiguration>
Expand Up @@ -40,12 +40,12 @@
<HintPath>..\..\packages\FakeItEasy.2.3.1\lib\net40\FakeItEasy.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentAssertions, Version=4.15.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.15.0\lib\net45\FluentAssertions.dll</HintPath>
<Reference Include="FluentAssertions, Version=4.17.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.17.0\lib\net45\FluentAssertions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentAssertions.Core, Version=4.15.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.15.0\lib\net45\FluentAssertions.Core.dll</HintPath>
<Reference Include="FluentAssertions.Core, Version=4.17.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.17.0\lib\net45\FluentAssertions.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NEventStore, Version=5.2.0.0, Culture=neutral, processorArchitecture=MSIL">
Expand Down
2 changes: 1 addition & 1 deletion Tests/LiquidProjections.NEventStore.Specs/packages.config
Expand Up @@ -3,7 +3,7 @@
<package id="AutoFixture" version="3.50.2" targetFramework="net452" />
<package id="Chill" version="2.4.0" targetFramework="net452" />
<package id="FakeItEasy" version="2.3.1" targetFramework="net452" />
<package id="FluentAssertions" version="4.15.0" targetFramework="net452" />
<package id="FluentAssertions" version="4.17.0" targetFramework="net452" />
<package id="NEventStore" version="5.2.0" targetFramework="net452" />
<package id="xunit" version="2.1.0" targetFramework="net452" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net452" />
Expand Down
Expand Up @@ -38,12 +38,12 @@
<HintPath>..\..\packages\Chill.2.4.0\lib\net45\Chill.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentAssertions, Version=4.15.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.15.0\lib\net45\FluentAssertions.dll</HintPath>
<Reference Include="FluentAssertions, Version=4.17.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.17.0\lib\net45\FluentAssertions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentAssertions.Core, Version=4.15.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.15.0\lib\net45\FluentAssertions.Core.dll</HintPath>
<Reference Include="FluentAssertions.Core, Version=4.17.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.17.0\lib\net45\FluentAssertions.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentNHibernate, Version=2.0.3.0, Culture=neutral, processorArchitecture=MSIL">
Expand Down
2 changes: 1 addition & 1 deletion Tests/LiquidProjections.NHibernate.Specs/packages.config
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Chill" version="2.4.0" targetFramework="net452" />
<package id="FluentAssertions" version="4.15.0" targetFramework="net452" />
<package id="FluentAssertions" version="4.17.0" targetFramework="net452" />
<package id="FluentNHibernate" version="2.0.3.0" targetFramework="net452" />
<package id="Iesi.Collections" version="4.0.0.4000" targetFramework="net452" />
<package id="NHibernate" version="4.0.4.4000" targetFramework="net452" />
Expand Down
Expand Up @@ -39,24 +39,24 @@
<HintPath>..\..\packages\Chill.2.4.0\Lib\net45\Chill.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentAssertions, Version=4.15.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.15.0\lib\net45\FluentAssertions.dll</HintPath>
<Reference Include="FluentAssertions, Version=4.17.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.17.0\lib\net45\FluentAssertions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FluentAssertions.Core, Version=4.15.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.15.0\lib\net45\FluentAssertions.Core.dll</HintPath>
<Reference Include="FluentAssertions.Core, Version=4.17.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\..\packages\FluentAssertions.4.17.0\lib\net45\FluentAssertions.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Raven.Abstractions, Version=3.0.0.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Database.3.0.30153\lib\net45\Raven.Abstractions.dll</HintPath>
<Reference Include="Raven.Abstractions, Version=3.5.1.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Database.3.5.1\lib\net45\Raven.Abstractions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Raven.Client.Lightweight, Version=3.0.0.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Client.3.0.30153\lib\net45\Raven.Client.Lightweight.dll</HintPath>
<Reference Include="Raven.Client.Lightweight, Version=3.5.1.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Client.3.5.1\lib\net45\Raven.Client.Lightweight.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Raven.Database, Version=3.0.0.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Database.3.0.30153\lib\net45\Raven.Database.dll</HintPath>
<Reference Include="Raven.Database, Version=3.5.1.0, Culture=neutral, PublicKeyToken=37f41c7f99471593, processorArchitecture=MSIL">
<HintPath>..\..\packages\RavenDB.Database.3.5.1\lib\net45\Raven.Database.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
Expand Down Expand Up @@ -91,10 +91,11 @@
<Compile Include="RavenProjectorSpecs.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<None Include="Raven.Studio.Html5.zip">
<None Include="..\..\packages\RavenDB.Database.3.5.1\tools\Raven.Studio.Html5.zip">
<Link>Raven.Studio.Html5.zip</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Src\LiquidProjections.RavenDB\LiquidProjections.RavenDB.csproj">
Expand Down
Binary file not shown.

0 comments on commit 252296c

Please sign in to comment.