Skip to content

Commit 05bd383

Browse files
author
Greg Bielleman
committed
Do not remove FailedMessage documents
1 parent b46045b commit 05bd383

File tree

5 files changed

+39
-18
lines changed

5 files changed

+39
-18
lines changed

src/ServiceControl.UnitTests/Expiration/CustomExpirationBundleTests.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
using NUnit.Framework;
1111
using Raven.Client;
1212
using ServiceBus.Management.Infrastructure.Settings;
13-
using ServiceControl.CompositeViews.Messages;
13+
using ServiceControl.Infrastructure.RavenDB.Expiration;
1414

1515
[TestFixture]
1616
public class CustomExpirationBundleTests : TestWithRavenDB
@@ -54,13 +54,14 @@ public void Processed_messages_are_being_expired()
5454
[Test]
5555
public void Many_processed_messages_are_being_expired()
5656
{
57-
new MessagesViewIndex().Execute(documentStore);
57+
new ExpiryProcessedMessageIndex().Execute(documentStore);
5858

5959
var processedMessage = new ProcessedMessage
6060
{
6161
Id = Guid.NewGuid().ToString(),
6262
ProcessedAt = DateTime.UtcNow.AddMinutes(-DateTime.UtcNow.Millisecond%30).AddDays(-(Settings.HoursToKeepMessagesBeforeExpiring*3)),
6363
};
64+
6465
var processedMessage2 = new ProcessedMessage
6566
{
6667
Id = "2",
@@ -69,7 +70,7 @@ public void Many_processed_messages_are_being_expired()
6970

7071
using (var session = documentStore.OpenSession())
7172
{
72-
for (var i = 0; i < 2049; i++)
73+
for (var i = 0; i < 100; i++)
7374
{
7475
processedMessage = new ProcessedMessage
7576
{
@@ -85,13 +86,10 @@ public void Many_processed_messages_are_being_expired()
8586
}
8687

8788
WaitForIndexing(documentStore);
88-
Thread.Sleep(Settings.ExpirationProcessTimerInSeconds * 1000 * 4);
89-
89+
Thread.Sleep(Settings.ExpirationProcessTimerInSeconds * 1000 * 10);
9090
using (var session = documentStore.OpenSession())
9191
{
92-
var results = session.Query<ProcessedMessage, MessagesViewIndex>()
93-
.Customize(x => x.WaitForNonStaleResults())
94-
.ToArray();
92+
var results = session.Query<ProcessedMessage, ExpiryProcessedMessageIndex>().Customize(x => x.WaitForNonStaleResults()).ToArray();
9593
Assert.AreEqual(1, results.Length);
9694

9795
var msg = session.Load<ProcessedMessage>(processedMessage.Id);
@@ -105,6 +103,8 @@ public void Many_processed_messages_are_being_expired()
105103
[Test]
106104
public void Only_processed_messages_are_being_expired()
107105
{
106+
new ExpiryProcessedMessageIndex().Execute(documentStore);
107+
108108
var processedMessage = new ProcessedMessage
109109
{
110110
Id = "1",
@@ -141,6 +141,8 @@ public void Only_processed_messages_are_being_expired()
141141
[Test]
142142
public void Recent_processed_messages_are_not_being_expired()
143143
{
144+
new ExpiryProcessedMessageIndex().Execute(documentStore);
145+
144146
var processedMessage = new ProcessedMessage
145147
{
146148
Id = "1",
@@ -205,12 +207,8 @@ public void SetUp()
205207
{
206208
documentStore = InMemoryStoreBuilder.GetInMemoryStore(withExpiration: true);
207209

208-
var customIndex = new MessagesViewIndex();
210+
var customIndex = new ExpiryProcessedMessageIndex();
209211
customIndex.Execute(documentStore);
210-
211-
var transformer = new MessagesViewTransformer();
212-
213-
transformer.Execute(documentStore);
214212
}
215213

216214
[TearDown]

src/ServiceControl.UnitTests/Infrastructure/RavenDB/Indexes/InMemoryStoreBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.IO;
33
using Raven.Client.Embedded;
44
using ServiceBus.Management.Infrastructure.Settings;
5-
using ServiceControl.CompositeViews.Messages;
5+
using ServiceControl.Infrastructure.RavenDB.Expiration;
66

77
public class InMemoryStoreBuilder
88
{
@@ -25,15 +25,15 @@ public static EmbeddableDocumentStore GetInMemoryStore(bool withExpiration = fal
2525
if (withExpiration)
2626
{
2727
Settings.ExpirationProcessTimerInSeconds = 1; // so we don't have to wait too much in tests
28-
store.Configuration.Catalog.Catalogs.Add(new AssemblyCatalog(typeof(ServiceControl.Infrastructure.RavenDB.Expiration.ExpiredDocumentsCleaner).Assembly));
28+
store.Configuration.Catalog.Catalogs.Add(new AssemblyCatalog(typeof(ExpiredDocumentsCleaner).Assembly));
2929
store.Configuration.Settings.Add("Raven/ActiveBundles", "CustomDocumentExpiration"); // Enable the expiration bundle
3030
}
3131

3232
store.Initialize();
3333

3434
if (withExpiration)
3535
{
36-
new MessagesViewIndex().Execute(store); // this index is being queried by our expiration bundle
36+
new ExpiryProcessedMessageIndex().Execute(store); // this index is being queried by our expiration bundle
3737
}
3838

3939
return store;

src/ServiceControl/Infrastructure/RavenDB/Expiration/ExpiredDocumentsCleaner.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
using System.Globalization;
88
using System.Linq;
99
using System.Threading;
10-
using CompositeViews.Messages;
1110
using Raven.Abstractions;
1211
using Raven.Abstractions.Commands;
1312
using Raven.Abstractions.Data;
@@ -31,7 +30,7 @@ public class ExpiredDocumentsCleaner : IStartupTask, IDisposable
3130
public void Execute(DocumentDatabase database)
3231
{
3332
Database = database;
34-
indexName = new MessagesViewIndex().IndexName;
33+
indexName = new ExpiryProcessedMessageIndex().IndexName;
3534

3635
deletionBatchSize = Settings.ExpirationProcessBatchSize;
3736
deleteFrequencyInSeconds = Settings.ExpirationProcessTimerInSeconds;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
namespace ServiceControl.Infrastructure.RavenDB.Expiration
2+
{
3+
using System.Linq;
4+
using Contracts.Operations;
5+
using MessageAuditing;
6+
using Raven.Client.Indexes;
7+
8+
public class ExpiryProcessedMessageIndex : AbstractIndexCreationTask<ProcessedMessage>
9+
{
10+
public ExpiryProcessedMessageIndex()
11+
{
12+
Map = (messages => from message in messages
13+
select new
14+
{
15+
MessageId = (string) message.MessageMetadata["MessageId"],
16+
Status = (bool)message.MessageMetadata["IsRetried"] ? MessageStatus.ResolvedSuccessfully : MessageStatus.Successful,
17+
ProcessedAt = message.ProcessedAt,
18+
});
19+
20+
DisableInMemoryIndexing = true;
21+
}
22+
}
23+
}

src/ServiceControl/ServiceControl.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@
271271
<SubType>Component</SubType>
272272
</Compile>
273273
<Compile Include="Hosting\Options.cs" />
274+
<Compile Include="Infrastructure\RavenDB\Expiration\ExpiryProcessedMessageIndex.cs" />
274275
<Compile Include="Infrastructure\Settings\RegistryReader.cs" />
275276
<Compile Include="Infrastructure\SubscribeToAllEvents.cs" />
276277
<Compile Include="MessageFailures\FailedMessageViewIndexNotifications.cs" />

0 commit comments

Comments
 (0)