Skip to content
This repository was archived by the owner on Nov 1, 2023. It is now read-only.

Commit 68deb5f

Browse files
committed
Add another truncation case
1 parent 13aca52 commit 68deb5f

File tree

1 file changed

+22
-2
lines changed
  • src/ApiService/ApiService/onefuzzlib

1 file changed

+22
-2
lines changed

src/ApiService/ApiService/onefuzzlib/Events.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Text.Json;
22
using System.Text.Json.Serialization;
3+
using Azure;
34
using Microsoft.OneFuzz.Service.OneFuzzLib.Orm;
45

56
namespace Microsoft.OneFuzz.Service {
@@ -41,8 +42,27 @@ public Events(IQueue queue, IWebhookOperations webhook, ILogTracer log, IContain
4142
}
4243

4344
public async Async.Task QueueSignalrEvent(EventMessage message) {
44-
var ev = new SignalREvent("events", new List<EventMessage>() { message });
45-
await _queue.SendMessage("signalr-events", JsonSerializer.Serialize(ev, _options), StorageType.Config);
45+
var tags = new (string, string)[] {
46+
("event_type", message.EventType.ToString()),
47+
("event_id", message.EventId.ToString())
48+
};
49+
try {
50+
var ev = new SignalREvent("events", new List<EventMessage>() { message });
51+
await _queue.SendMessage("signalr-events", JsonSerializer.Serialize(ev, _options), StorageType.Config);
52+
} catch (RequestFailedException ex) {
53+
if (ex.Message.Contains("The request body is too large") && message.Event is ITruncatable<BaseEvent> truncatableEvent) {
54+
_log.WithTags(tags).Warning($"The EventMessage was too large for Azure Queue. Truncating event data and trying again.");
55+
message = message with {
56+
Event = truncatableEvent.Truncate(1000)
57+
};
58+
var ev = new SignalREvent("events", new List<EventMessage>() { message });
59+
await _queue.SendMessage("signalr-events", JsonSerializer.Serialize(ev, _options), StorageType.Config);
60+
} else {
61+
// Not handled
62+
throw ex;
63+
}
64+
}
65+
4666
}
4767

4868
public async Async.Task SendEvent(BaseEvent anEvent) {

0 commit comments

Comments
 (0)