fix(site-runtime,dcl): low-severity cleanups — observed adapter dispose (S9), alarm-filter overwrite warning (S10), bounded-channel comment (C2), invariant-culture condition fallback (C6)
This commit is contained in:
@@ -229,7 +229,12 @@ public class DataConnectionActor : UntypedActor, IWithStash, IWithTimers
|
||||
{
|
||||
_log.Info("DataConnectionActor [{0}] stopping — disposing adapter", _connectionName);
|
||||
_adapter.Disconnected -= OnAdapterDisconnected;
|
||||
_ = _adapter.DisposeAsync().AsTask();
|
||||
// S9: fire-and-forget, but observe a faulted dispose so a failing adapter
|
||||
// teardown is logged rather than swallowed into an unobserved task exception.
|
||||
_adapter.DisposeAsync().AsTask().ContinueWith(
|
||||
t => _log.Warning("[{0}] Adapter dispose faulted on stop: {1}",
|
||||
_connectionName, t.Exception?.GetBaseException().Message),
|
||||
TaskContinuationOptions.OnlyOnFaulted);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -1829,6 +1834,17 @@ public class DataConnectionActor : UntypedActor, IWithStash, IWithTimers
|
||||
_alarmSourceSubscribers[request.SourceReference] = subs;
|
||||
}
|
||||
subs.Add(subscriber);
|
||||
// S10: the adapter feed carries a single shared condition filter per source.
|
||||
// A second subscriber with a different filter silently overwrites the first
|
||||
// (last-writer-wins). Surface it so a co-subscriber mismatch is diagnosable —
|
||||
// co-subscribers to one source are expected to agree on the filter.
|
||||
if (_alarmSourceFilter.TryGetValue(request.SourceReference, out var existingFilter)
|
||||
&& !string.Equals(existingFilter, request.ConditionFilter, StringComparison.Ordinal))
|
||||
{
|
||||
_log.Warning(
|
||||
"[{0}] Alarm condition filter for source {1} overwritten: '{2}' -> '{3}' (last subscriber wins; co-subscribers must agree)",
|
||||
_connectionName, request.SourceReference, existingFilter, request.ConditionFilter);
|
||||
}
|
||||
_alarmSourceFilter[request.SourceReference] = request.ConditionFilter;
|
||||
// Parse the type-name filter once; this is the authoritative client-side
|
||||
// gate consulted on every routed transition.
|
||||
|
||||
Reference in New Issue
Block a user