fix(runtime): narrow ActorNodeWriteGateway catch + drop vacuous no-actor assertion
This commit is contained in:
@@ -60,10 +60,20 @@ public sealed class ActorNodeWriteGateway : IOpcUaNodeWriteGateway
|
|||||||
_logger.LogWarning("Operator write to {NodeId} rejected: {Reason}", nodeId, result.Reason);
|
_logger.LogWarning("Operator write to {NodeId} rejected: {Reason}", nodeId, result.Reason);
|
||||||
return new NodeWriteOutcome(result.Success, result.Reason);
|
return new NodeWriteOutcome(result.Success, result.Reason);
|
||||||
}
|
}
|
||||||
catch (Exception ex) // AskTimeoutException, actor faults, cancellation
|
catch (OperationCanceledException ex)
|
||||||
{
|
{
|
||||||
_logger.LogWarning(ex, "Operator write to {NodeId} failed or timed out", nodeId);
|
_logger.LogWarning(ex, "Operator write to {NodeId} cancelled", nodeId);
|
||||||
|
return new NodeWriteOutcome(false, "write cancelled");
|
||||||
|
}
|
||||||
|
catch (AskTimeoutException ex)
|
||||||
|
{
|
||||||
|
_logger.LogWarning(ex, "Operator write to {NodeId} timed out", nodeId);
|
||||||
return new NodeWriteOutcome(false, "write timeout");
|
return new NodeWriteOutcome(false, "write timeout");
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Operator write to {NodeId} failed unexpectedly", nodeId);
|
||||||
|
return new NodeWriteOutcome(false, "write error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,15 +75,11 @@ public sealed class ActorNodeWriteGatewayTests : RuntimeActorTestBase
|
|||||||
[Fact]
|
[Fact]
|
||||||
public async Task No_actor_registered_maps_to_writes_unavailable()
|
public async Task No_actor_registered_maps_to_writes_unavailable()
|
||||||
{
|
{
|
||||||
var probe = CreateTestProbe();
|
|
||||||
var gateway = new ActorNodeWriteGateway(resolveDriverHost: () => null, NullLogger.Instance);
|
var gateway = new ActorNodeWriteGateway(resolveDriverHost: () => null, NullLogger.Instance);
|
||||||
|
|
||||||
var outcome = await gateway.WriteAsync("eq-1/speed", 123.0, CancellationToken.None);
|
var outcome = await gateway.WriteAsync("eq-1/speed", 123.0, CancellationToken.None);
|
||||||
|
|
||||||
outcome.Success.ShouldBeFalse();
|
outcome.Success.ShouldBeFalse();
|
||||||
outcome.Reason.ShouldBe("writes unavailable");
|
outcome.Reason.ShouldBe("writes unavailable");
|
||||||
|
|
||||||
// The resolver returned null, so nothing should have been messaged anywhere.
|
|
||||||
probe.ExpectNoMsg(TimeSpan.FromMilliseconds(200));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user