Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
22531fe
naive poison message handler
davidmrdavid Apr 12, 2024
748b279
incorporate feedback
davidmrdavid Apr 13, 2024
40a00dd
add suffix, change to terminated
davidmrdavid Apr 15, 2024
b1b7fba
more changes to get poison message handling working E2E. It's hackier…
davidmrdavid Apr 16, 2024
b1808a1
simplify implementation
davidmrdavid Apr 16, 2024
45d523b
remove commented out code
davidmrdavid Apr 16, 2024
82e3531
remove csproj changes
davidmrdavid Apr 16, 2024
adf4579
undo change in message manager deps
davidmrdavid Apr 16, 2024
d20bb7e
undo csproj changeS
davidmrdavid Apr 16, 2024
40baca0
add activity pmh as well
davidmrdavid Apr 16, 2024
f896364
make configurable
davidmrdavid Apr 16, 2024
cef1410
move poison message handler to superclass
davidmrdavid Apr 16, 2024
eeea159
remove unecessary imports
davidmrdavid Apr 16, 2024
961d64b
remove unecessary import
davidmrdavid Apr 16, 2024
5dfe896
simplify code a bit
davidmrdavid Apr 16, 2024
4a25c5b
remove unused variable
davidmrdavid Apr 16, 2024
8afbfc2
simplify and unify guidance
davidmrdavid Apr 16, 2024
9057bfd
improve guidance
davidmrdavid Apr 16, 2024
6866828
call out backend-specificness
davidmrdavid Apr 16, 2024
b0d739c
clean up PR
davidmrdavid Apr 16, 2024
71e0b36
clean up csproj
davidmrdavid Apr 16, 2024
5934076
indent csproj comment
davidmrdavid Apr 16, 2024
a94cc4e
remove unused import
davidmrdavid Apr 16, 2024
37dbac4
have valid table-naming scheme
davidmrdavid Apr 18, 2024
865aa20
add log
davidmrdavid Apr 18, 2024
57bb966
add comments
davidmrdavid Apr 18, 2024
6c3bb79
create valid serializable activity failure
davidmrdavid Apr 18, 2024
b15dbb5
handle de-serialization errors as well
davidmrdavid Jun 14, 2024
cbb8274
add version suffix
davidmrdavid Jun 25, 2024
2acadbe
resolve conflicts
davidmrdavid Jun 25, 2024
16f38f1
rev patch
davidmrdavid Jun 25, 2024
74dc0f7
add dtfx.core
davidmrdavid Jun 25, 2024
584cf8d
merge mixed deserializtion hotfix
davidmrdavid Jun 27, 2024
51978a0
add imports
davidmrdavid Jun 27, 2024
65c29c4
pass nullable analysis
davidmrdavid Jun 27, 2024
de7e46b
make hotfix always occur
davidmrdavid Jun 27, 2024
a8b24e5
move nullable analysis
davidmrdavid Jun 27, 2024
a746b1e
make hotfix conditional on setting
davidmrdavid Jun 27, 2024
d219ffa
match diffs
davidmrdavid Jun 28, 2024
b2e1f0c
make hotfix always run
davidmrdavid Jun 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions src/DurableTask.AzureStorage/Messaging/ControlQueue.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,12 @@ namespace DurableTask.AzureStorage.Messaging
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Azure;
using Azure.Data.Tables;
using DurableTask.AzureStorage.Monitoring;
using DurableTask.AzureStorage.Partitioning;
using DurableTask.AzureStorage.Storage;
using Microsoft.WindowsAzure.Storage.Table;

class ControlQueue : TaskHubQueue, IDisposable
{
Expand Down Expand Up @@ -102,6 +105,30 @@ public async Task<IReadOnlyList<MessageData>> GetMessagesAsync(CancellationToken
var batchMessages = new ConcurrentBag<MessageData>();
await batch.ParallelForEachAsync(async delegate (QueueMessage queueMessage)
{
// if deuque count is large, just flag it as poison. Don't even deserialize it!
if (queueMessage.DequeueCount > 5) // TODO: make configurable
{
var poisonMessage = new DynamicTableEntity(this.Name, "")
{
Properties =
{
["TheFullMessage"] = new EntityProperty(queueMessage.Message)
}
};

// add to poison table
var poisonMessagesTable = this.azureStorageClient.GetTableReference("PoisonMessagesTable");
await poisonMessagesTable.CreateIfNotExistsAsync();
await poisonMessagesTable.InsertAsync(poisonMessage);

// delete from queue so it doesn't get processed again.
await this.storageQueue.DeleteMessageAsync(queueMessage);

// TODO: here we should do a forceful update in the instance table. The code doesn't seem to make that easy today :(
return; // ignore this message completely
}


MessageData messageData;
try
{
Expand Down