Skip to content

Commit

Permalink
RavenDB-4251 Index gets never unstale
Browse files Browse the repository at this point in the history
  • Loading branch information
grisha-kotler committed Jan 26, 2016
1 parent 5f02c05 commit 0f36c4f
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 1 deletion.
Expand Up @@ -377,7 +377,11 @@ public JsonDocument DocumentByKey(string key)
public JsonDocumentMetadata DocumentMetadataByKey(string key)
{
if (string.IsNullOrEmpty(key))
throw new ArgumentNullException("key");
{
if (logger.IsDebugEnabled)
logger.Debug("Document key can't be null or empty");
return null;
}

var normalizedKey = CreateKey(key);
var sliceKey = (Slice)normalizedKey;
Expand Down
121 changes: 121 additions & 0 deletions Raven.Tests.MailingList/PeterBalzli.cs
@@ -0,0 +1,121 @@
// -----------------------------------------------------------------------
// <copyright file="PeterBalzli.cs" company="Hibernating Rhinos LTD">
// Copyright (c) Hibernating Rhinos LTD. All rights reserved.
// </copyright>
// -----------------------------------------------------------------------
using System;
using System.Linq;
using FluentAssertions;
using Raven.Abstractions.Indexing;
using Raven.Client;
using Raven.Client.Embedded;
using Raven.Client.Indexes;
using Raven.Imports.Newtonsoft.Json;
using Raven.Tests.Common;
using Xunit;

namespace Raven.Tests.MailingList
{
public class PeterBalzli : RavenTest
{
private EmbeddableDocumentStore _documentStore { get; set; }

public void Setup()
{
_documentStore = new EmbeddableDocumentStore
{
RunInMemory = true,
UseEmbeddedHttpServer = true
};

_documentStore.Conventions.CustomizeJsonSerializer = serializers => serializers.Converters.Add(new CustomerNumberJsonConverter());
_documentStore.Configuration.Storage.Voron.AllowOn32Bits = true;
_documentStore.Initialize();
_documentStore.ExecuteIndex(new Index());
}

[Fact]
public void Test()
{
Setup();

using (var session = _documentStore.OpenSession())
{
session.Store(new Item() { Id = "1" });
session.SaveChanges();
}

using (var session = _documentStore.OpenSession())
{
var items = session
.Query<Index.Result, Index>()
.Customize(c => c.WaitForNonStaleResults())
.ProjectFromIndexFieldsInto<Index.Result>()
.ToList();

Assert.Equal(1, items.Count);
}
}
}

public class Item
{
public string Id { get; set; }
public CustomerNumber Number { get; set; }
}

public class Customer1
{
public string Id { get; set; }
public string Name { get; set; }
}

public class CustomerNumber
{
public string Number { get; set; }
}

public class Index : AbstractIndexCreationTask<Item, Index.Result>
{

public class Result
{
public string Id { get; set; }
public string Customer { get; set; }
}

public Index()
{
Map = items => from item in items
let customer = LoadDocument<Customer1>(item.Number.ToString())
select new Result
{
Id = item.Id,
Customer = customer.Name
};

StoreAllFields(FieldStorage.Yes);
}
}

public class CustomerNumberJsonConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var obj = (CustomerNumber)value;
writer.WriteValue(obj.Number);
}

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var number = (string)reader.Value;

return new CustomerNumber { Number = number };
}

public override bool CanConvert(Type objectType)
{
return typeof(CustomerNumber) == objectType;
}
}
}
1 change: 1 addition & 0 deletions Raven.Tests.MailingList/Raven.Tests.MailingList.csproj
Expand Up @@ -129,6 +129,7 @@
<Compile Include="..\Raven.Tests\Properties\TestAssemblyInfo.cs">
<Link>Properties\TestAssemblyInfo.cs</Link>
</Compile>
<Compile Include="PeterBalzli.cs" />
<Compile Include="AaronSt.cs" />
<Compile Include="AccessControlHeaders.cs" />
<Compile Include="Accounts.cs" />
Expand Down

0 comments on commit 0f36c4f

Please sign in to comment.