Skip to content

Commit 1fc41b5

Browse files
Reverting changes
1 parent c476040 commit 1fc41b5

File tree

9 files changed

+9
-115
lines changed

9 files changed

+9
-115
lines changed

src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/ExternalIntegrationAcceptanceTest.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ public ErrorSender() =>
2020
EndpointSetup<DefaultServerWithoutAudit>(c =>
2121
{
2222
c.NoDelayedRetries();
23-
//TODO: Get back to this to determine whether or not this duplication for simulating the production code is really needed
2423
c.ReportSuccessfulRetriesToServiceControl();
2524
});
2625

src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_edit_is_resolved_by_retry.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public async Task Should_publish_notification()
100100

101101
Assert.Multiple(() =>
102102
{
103-
Assert.That(context.ResolvedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
103+
Assert.That(context.ResolvedMessageId, Is.EqualTo(context.EditedMessageFailureId));
104104
Assert.That(context.EditedMessageEditOf, Is.EqualTo(context.OriginalMessageFailureId));
105105
Assert.That(context.MessageFailedFailedMessageIds.Count, Is.EqualTo(2));
106106
Assert.That(context.MessageFailedFailedMessageIds, Is.Unique);

src/ServiceControl.Persistence.RavenDB/Editing/EditFailedMessageManager.cs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
namespace ServiceControl.Persistence.RavenDB
22
{
33
using System;
4-
using System.Linq;
54
using System.Threading.Tasks;
6-
using Raven.Client.Documents;
75
using Raven.Client.Documents.Session;
86
using ServiceControl.MessageFailures;
97
using ServiceControl.Persistence.Recoverability.Editing;
10-
using ServiceControl.Persistence.RavenDB.Indexes;
118

129
class EditFailedMessageManager : AbstractSessionManager, IEditFailedMessagesManager
1310
{
@@ -57,21 +54,5 @@ public Task SetFailedMessageAsResolved()
5754

5855
return Task.CompletedTask;
5956
}
60-
61-
public async Task<string> GetFailedMessageIdByEditId(string editId)
62-
{
63-
var edit = await session.Query<FailedMessageEdit, FailedMessageEditIndex>()
64-
.Customize(x => x.WaitForNonStaleResults())
65-
.Where(x => x.EditId == editId)
66-
.SingleOrDefaultAsync();
67-
// .FirstOrDefaultAsync();
68-
69-
if (edit?.FailedMessageId != null)
70-
{
71-
return FailedMessageIdGenerator.GetMessageIdFromDocumentId(edit.FailedMessageId);
72-
}
73-
74-
return null;
75-
}
7657
}
7758
}

src/ServiceControl.Persistence.RavenDB/Indexes/FailedMessageEditIndex.cs

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/ServiceControl.Persistence.Tests.RavenDB/ApprovalFiles/RavenPersistedTypes.Verify.approved.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ ServiceControl.Operations.FailedErrorImport, ServiceControl.Persistence, Version
66
ServiceControl.Persistence.KnownEndpoint, ServiceControl.Persistence, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null
77
ServiceControl.Persistence.MessagesViewIndex+SortAndFilterOptions, ServiceControl.Persistence.RavenDB, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null
88
ServiceControl.Persistence.RavenDB.Throughput.Models.EndpointDocument, ServiceControl.Persistence.RavenDB, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null
9-
ServiceControl.Persistence.Recoverability.Editing.FailedMessageEdit, ServiceControl.Persistence.RavenDB, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null
109
ServiceControl.Persistence.RetryBatch, ServiceControl.Persistence, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null
1110
ServiceControl.Persistence.RetryBatchGroup, ServiceControl.Persistence, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null
1211
ServiceControl.Recoverability.FailedMessageRetry, ServiceControl.Persistence, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null

src/ServiceControl.Persistence/IEditFailedMessagesManager.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,5 @@ public interface IEditFailedMessagesManager : IDataSessionManager
99
Task<string> GetCurrentEditingRequestId(string failedMessageId);
1010
Task SetCurrentEditingRequestId(string editingMessageId);
1111
Task SetFailedMessageAsResolved();
12-
Task<string> GetFailedMessageIdByEditId(string editId);
1312
}
1413
}

src/ServiceControl/Operations/ErrorIngestor.cs

Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,24 @@
1515
using Recoverability;
1616
using ServiceBus.Management.Infrastructure.Settings;
1717
using ServiceControl.Persistence.UnitOfWork;
18-
using ServiceControl.Persistence;
1918
using ServiceControl.Transports;
2019

2120
public class ErrorIngestor
2221
{
2322
static readonly long FrequencyInMilliseconds = Stopwatch.Frequency / 1000;
23+
2424
public ErrorIngestor(Metrics metrics,
2525
IEnumerable<IEnrichImportedErrorMessages> errorEnrichers,
2626
IEnumerable<IFailedMessageEnricher> failedMessageEnrichers,
2727
IDomainEvents domainEvents,
2828
IIngestionUnitOfWorkFactory unitOfWorkFactory,
2929
Lazy<IMessageDispatcher> messageDispatcher,
3030
ITransportCustomization transportCustomization,
31-
IErrorMessageDataStore errorMessageDataStore,
3231
Settings settings,
3332
ILogger<ErrorIngestor> logger)
3433
{
3534
this.unitOfWorkFactory = unitOfWorkFactory;
3635
this.messageDispatcher = messageDispatcher;
37-
this.errorMessageDataStore = errorMessageDataStore;
3836
this.settings = settings;
3937
this.logger = logger;
4038
bulkInsertDurationMeter = metrics.GetMeter("Error ingestion - bulk insert duration", FrequencyInMilliseconds);
@@ -82,17 +80,7 @@ public async Task Ingest(List<MessageContext> contexts, CancellationToken cancel
8280
}
8381
foreach (var context in retriedMessages)
8482
{
85-
var failedMessageId = await GetFailedMessageId(context);
86-
announcerTasks.Add(retryConfirmationProcessor.Announce(failedMessageId));
87-
88-
//OPTIONAL: raise events for the entire chain of edits and retries
89-
// var retryUniqueMessageId = context.Headers["ServiceControl.Retry.UniqueMessageId"];
90-
// var failedMessageIds = await GetFailedMessageIdChain(retryUniqueMessageId);
91-
92-
// foreach (var failedMessageId in failedMessageIds)
93-
// {
94-
// announcerTasks.Add(retryConfirmationProcessor.Announce(failedMessageId));
95-
// }
83+
announcerTasks.Add(retryConfirmationProcessor.Announce(context));
9684
}
9785

9886
await Task.WhenAll(announcerTasks);
@@ -119,46 +107,6 @@ public async Task Ingest(List<MessageContext> contexts, CancellationToken cancel
119107
throw;
120108
}
121109
}
122-
async Task<string> GetFailedMessageId(MessageContext context)
123-
{
124-
var retryUniqueMessageId = context.Headers["ServiceControl.Retry.UniqueMessageId"];
125-
126-
127-
//Check if this retry was recorded as an edit and retry in order to locate the original failedMessageId;
128-
using var editFailedMessagesManager = await errorMessageDataStore.CreateEditFailedMessageManager();
129-
var failedMessageId = await editFailedMessagesManager.GetFailedMessageIdByEditId(retryUniqueMessageId);
130-
131-
// If not found, this is a regular retry, so return retryUniqueMessageId
132-
return failedMessageId ?? retryUniqueMessageId;
133-
}
134-
135-
// async Task<List<string>> GetFailedMessageIdChain(string retryUniqueMessageId)
136-
// {
137-
// var failedMessageIds = new List<string>();
138-
// var currentId = retryUniqueMessageId;
139-
140-
// using var editFailedMessagesManager = await errorMessageDataStore.CreateEditFailedMessageManager();
141-
142-
// while (true)
143-
// {
144-
// var failedMessageId = await editFailedMessagesManager.GetFailedMessageIdByEditId(currentId);
145-
146-
// if (failedMessageId == null)
147-
// {
148-
// // If not found, this is a regular retry, so include the current ID
149-
// failedMessageIds.Add(currentId);
150-
// break;
151-
// }
152-
153-
// // Found an edit - add the original failed message ID to our chain
154-
// failedMessageIds.Add(failedMessageId);
155-
156-
// // Continue navigating the chain by looking for edits of this failed message
157-
// currentId = failedMessageId;
158-
// }
159-
160-
// return failedMessageIds;
161-
// }
162110

163111
async Task<IReadOnlyList<MessageContext>> PersistFailedMessages(List<MessageContext> failedMessageContexts, List<MessageContext> retriedMessageContexts, CancellationToken cancellationToken)
164112
{
@@ -245,7 +193,6 @@ public async Task VerifyCanReachForwardingAddress(CancellationToken cancellation
245193
readonly Settings settings;
246194
readonly ErrorProcessor errorProcessor;
247195
readonly Lazy<IMessageDispatcher> messageDispatcher;
248-
readonly IErrorMessageDataStore errorMessageDataStore;
249196
readonly RetryConfirmationProcessor retryConfirmationProcessor;
250197
readonly UnicastAddressTag logQueueAddress;
251198

src/ServiceControl/Operations/RetryConfirmationProcessor.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ class RetryConfirmationProcessor
1212
public const string SuccessfulRetryHeader = "ServiceControl.Retry.Successful";
1313
const string RetryUniqueMessageIdHeader = "ServiceControl.Retry.UniqueMessageId";
1414

15-
1615
public RetryConfirmationProcessor(IDomainEvents domainEvents)
1716
{
1817
this.domainEvents = domainEvents;
@@ -27,11 +26,11 @@ public async Task Process(List<MessageContext> contexts, IIngestionUnitOfWork un
2726
}
2827
}
2928

30-
public Task Announce(string failedMessageId)
29+
public Task Announce(MessageContext messageContext)
3130
{
3231
return domainEvents.Raise(new MessageFailureResolvedByRetry
3332
{
34-
FailedMessageId = failedMessageId
33+
FailedMessageId = messageContext.Headers[RetryUniqueMessageIdHeader],
3534
});
3635
}
3736

src/ServiceControl/Recoverability/Editing/EditHandler.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ public EditHandler(IErrorMessageDataStore store, IMessageRedirectsDataStore redi
3030

3131
public async Task Handle(EditAndSend message, IMessageHandlerContext context)
3232
{
33-
string editRequestIdentifier = context.MessageId;
3433
FailedMessage failedMessage;
3534
string editId;
3635
using (var session = await store.CreateEditFailedMessageManager())
@@ -53,9 +52,9 @@ public async Task Handle(EditAndSend message, IMessageHandlerContext context)
5352
}
5453

5554
// create a retries document to prevent concurrent edits
56-
await session.SetCurrentEditingRequestId(editRequestIdentifier);
55+
await session.SetCurrentEditingRequestId(context.MessageId);
5756
}
58-
else if (editId != editRequestIdentifier)
57+
else if (editId != context.MessageId)
5958
{
6059
logger.LogWarning("Discarding edit & retry request because the failed message id {FailedMessageId} has already been edited by Message ID {EditedMessageId}", message.FailedMessageId, editId);
6160
return;
@@ -68,8 +67,6 @@ public async Task Handle(EditAndSend message, IMessageHandlerContext context)
6867
await session.SaveChanges();
6968
}
7069

71-
72-
7370
var redirects = await redirectsStore.GetOrCreate();
7471

7572
var attempt = failedMessage.ProcessingAttempts.Last();
@@ -78,7 +75,6 @@ public async Task Handle(EditAndSend message, IMessageHandlerContext context)
7875
// mark the new message with a link to the original message id
7976
outgoingMessage.Headers.Add("ServiceControl.EditOf", message.FailedMessageId);
8077
outgoingMessage.Headers["ServiceControl.Retry.AcknowledgementQueue"] = errorQueueNameCache.ResolvedErrorAddress;
81-
outgoingMessage.Headers["ServiceControl.Retry.UniqueMessageId"] = editRequestIdentifier; //lets re-use the edit request identifier as the value for ServiceControl.Retry.UniqueMessageId so that when the notification from NSB about successful retries arrives, we can use this Id to query FailedMessageEdit by EditId
8278

8379
var address = ApplyRedirect(attempt.FailureDetails.AddressOfFailingEndpoint, redirects);
8480

@@ -88,7 +84,7 @@ public async Task Handle(EditAndSend message, IMessageHandlerContext context)
8884
address = retryTo;
8985
}
9086
await DispatchEditedMessage(outgoingMessage, address, context);
91-
87+
9288
await domainEvents.Raise(new MessageEditedAndRetried
9389
{
9490
EditId = editId,
@@ -136,7 +132,7 @@ Task DispatchEditedMessage(OutgoingMessage editedMessage, string address, IMessa
136132
readonly IMessageRedirectsDataStore redirectsStore;
137133
readonly IMessageDispatcher dispatcher;
138134
readonly ErrorQueueNameCache errorQueueNameCache;
139-
readonly IDomainEvents domainEvents;
140135
readonly ILogger<EditHandler> logger;
136+
readonly IDomainEvents domainEvents;
141137
}
142138
}

0 commit comments

Comments
 (0)