From e64d5705546c392c48add6b55fbd7ca023f53c61 Mon Sep 17 00:00:00 2001 From: mika kuns Date: Thu, 3 Sep 2026 07:43:31 +0200 Subject: [PATCH] fix(worker): raise SignalR MaximumParallelInvocationsPerClient Default of 1 serializes every hub call on a connection - a slow one (GetTicketProjects hitting an unreachable ticket system, 10s timeout) blocked unrelated calls like UpdateList/UpdateListConfig behind it for the same duration, making list-settings save appear to hang. --- src/ClaudeDo.Worker/Program.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ClaudeDo.Worker/Program.cs b/src/ClaudeDo.Worker/Program.cs index d8e6173b..a1ba39a7 100644 --- a/src/ClaudeDo.Worker/Program.cs +++ b/src/ClaudeDo.Worker/Program.cs @@ -78,10 +78,14 @@ builder.Services.AddHostedService(); builder.Services.AddHostedService(); builder.Services.AddHostedService(); builder.Services.AddHostedService(); -builder.Services.AddSignalR().AddJsonProtocol(options => -{ - options.PayloadSerializerOptions.Converters.Add(new System.Text.Json.Serialization.JsonStringEnumConverter()); -}); +// Default MaximumParallelInvocationsPerClient=1 serializes every hub call on one connection — +// a slow one (e.g. GetTicketProjects hitting an unreachable ticket system) blocks unrelated +// calls like UpdateList/UpdateListConfig behind it for the same 10s. +builder.Services.AddSignalR(options => options.MaximumParallelInvocationsPerClient = 10) + .AddJsonProtocol(options => + { + options.PayloadSerializerOptions.Converters.Add(new System.Text.Json.Serialization.JsonStringEnumConverter()); + }); // Runner stack. builder.Services.AddSingleton();