fix(site-runtime): normalize routed GetAttributes List values for cross-process transport (#162)
This commit is contained in:
@@ -1206,7 +1206,18 @@ public class DeploymentManagerActor : ReceiveActor, IWithTimers
|
||||
{
|
||||
var values = new Dictionary<string, object?>();
|
||||
for (var i = 0; i < names.Count; i++)
|
||||
values[names[i]] = t.Result[i].Found ? t.Result[i].Value : null;
|
||||
// Each attribute value crosses the Central↔Site PROCESS boundary inside
|
||||
// this response. For a List-typed (static or coerced) attribute the value
|
||||
// is a concrete generic List<T> — a non-primitive shape Akka's cross-process
|
||||
// serializer cannot reliably round-trip, which would silently drop the reply
|
||||
// and hang the caller's Route.To().GetAttributes() Ask (same risk class as
|
||||
// RouteInboundApiCall / RouteInboundApiWaitForAttribute). Project each value
|
||||
// through the same normalizer so the wire carries a plain CLR graph
|
||||
// (Dictionary/List/primitive). Keys are preserved; scalars/strings/null pass
|
||||
// through unchanged.
|
||||
values[names[i]] = t.Result[i].Found
|
||||
? NormalizeRoutedReturnValue(t.Result[i].Value)
|
||||
: null;
|
||||
return new RouteToGetAttributesResponse(
|
||||
request.CorrelationId, values, true, null, DateTimeOffset.UtcNow);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user