docs: fill missing XML docs and strip tracking IDs from src comments
Clears CommentChecker findings in src/ (3,280 -> 209, the remainder being false positives like PLC-5/IEEE-754/M0.0) by adding missing summaries/params/returns, normalising inheritdoc usage, and removing Gitea/review tracking IDs while keeping the rationale they annotated. Comment-only: comment-stripped sources are identical to the parent commit.
This commit is contained in:
@@ -71,11 +71,11 @@ public static class ServiceCollectionExtensions
|
||||
services.TryAddSingleton<IServiceLevelPublisher>(NullServiceLevelPublisher.Instance);
|
||||
services.TryAddSingleton<IDriverHealthPublisher, AkkaDriverHealthPublisher>();
|
||||
// Per-cluster mesh Phase 5: the node-local live-telemetry fan-out hub. Feeds this node's OWN
|
||||
// telemetry (never DPS) to the Phase-5 gRPC streaming service central dials in on. AddOtOpcUaRuntime
|
||||
// telemetry (never DPS) to the gRPC streaming service central dials in on. AddOtOpcUaRuntime
|
||||
// runs only inside Program.cs's hasDriver block, so this lands on driver-role nodes only.
|
||||
services.TryAddSingleton<ITelemetryLocalHub, TelemetryLocalHub>();
|
||||
|
||||
// Gitea #511: the Primary data-plane verdict, published for drivers that assert a standing
|
||||
// the Primary data-plane verdict, published for drivers that assert a standing
|
||||
// exclusive identity on a shared external system (today the MQTT driver's Sparkplug host id).
|
||||
//
|
||||
// Registered HERE, unconditionally on every driver-role node, and NOT alongside the alarm
|
||||
@@ -83,7 +83,7 @@ public static class ServiceCollectionExtensions
|
||||
// enabled. Piggybacking on it would leave a redundant pair with no alarm historian configured
|
||||
// with no primary-role source at all, and the driver's documented no-source fallback is
|
||||
// "claim" — so both nodes of that pair would claim the same host id and their Wills would
|
||||
// fight over the retained STATE. Exactly the failure #511 exists to prevent, reached by a
|
||||
// fight over the retained STATE. Exactly the failure that claim gate exists to prevent, reached by a
|
||||
// registration accident in an unrelated section.
|
||||
//
|
||||
// Both interfaces are forwarded to ONE RedundancyRoleView instance, so a node that has both
|
||||
@@ -91,20 +91,20 @@ public static class ServiceCollectionExtensions
|
||||
services.TryAddSingleton<RedundancyRoleView>();
|
||||
services.TryAddSingleton<IDriverPrimaryRoleSource>(sp => sp.GetRequiredService<RedundancyRoleView>());
|
||||
|
||||
// Gitea #537: the continuous-historization capture verdict, registered here — unconditionally on
|
||||
// the continuous-historization capture verdict, registered here — unconditionally on
|
||||
// every driver-role node — for the same reason as the line above, and NOT alongside the alarm
|
||||
// drain's IRedundancyRoleView. AddAlarmHistorian registers that one only when its own section is
|
||||
// enabled, so piggybacking would leave a redundant pair that historizes values but not alarms
|
||||
// with no gate at all, and both nodes would write every sample twice with nothing to say so.
|
||||
services.TryAddSingleton<IHistorizationRoleView>(sp => sp.GetRequiredService<RedundancyRoleView>());
|
||||
|
||||
// Gitea #674 review: the OPC UA HistoryUpdate verdict — the data-plane verdict, but closed until this node's first
|
||||
// The OPC UA HistoryUpdate verdict — the data-plane verdict, but closed until this node's first
|
||||
// redundancy snapshot. Same instance; registered here (driver-role nodes only) so an admin-only node, which has no
|
||||
// redundancy manager, wires no HistoryUpdate gate at all.
|
||||
services.TryAddSingleton<IHistoryUpdateRoleView>(sp => sp.GetRequiredService<RedundancyRoleView>());
|
||||
|
||||
// The node→central ack transport under MeshTransport:Mode = Grpc (mesh gRPC command plane,
|
||||
// Task 1B.2). Registered unconditionally but resolved only by the Grpc arm of
|
||||
// The node→central ack transport under MeshTransport:Mode = Grpc (mesh gRPC command plane).
|
||||
// Registered unconditionally but resolved only by the Grpc arm of
|
||||
// WithOtOpcUaRuntimeActors — the mode is not knowable here (this runs before configuration is
|
||||
// read into options), and a singleton nobody resolves is never constructed, so a Dps node
|
||||
// opens no channel.
|
||||
@@ -285,7 +285,7 @@ public static class ServiceCollectionExtensions
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Review R6 MINOR-4 — "does this snapshot node hold my replicated alarm queue?" for a node that does not
|
||||
/// "Does this snapshot node hold my replicated alarm queue?" for a node that does not
|
||||
/// dial its peer. Both halves of a LocalDb pair hold the same rows, but only the dialling half knows its
|
||||
/// partner (<c>LocalDb:Replication:PeerAddress</c>); the passive half (<c>ApiKey</c> + <c>SyncListenPort</c>)
|
||||
/// knew nobody, so as Secondary it never stood its drain down and both nodes delivered every alarm event.
|
||||
@@ -374,7 +374,7 @@ public static class ServiceCollectionExtensions
|
||||
// Per-cluster mesh Phase 4: scripted-alarm condition-state store. Registered by the Host's
|
||||
// AddOtOpcUaLocalDb on driver-role nodes (the replicated LocalDb store), so condition state
|
||||
// persists with no ConfigDb; null elsewhere (admin-only graphs, test harnesses) → the actor
|
||||
// skips spawning the alarm host (the ConfigDb-backed EF fallback was retired in Phase 4 Task 9).
|
||||
// skips spawning the alarm host (the ConfigDb-backed EF fallback was retired).
|
||||
var alarmStateStore = resolver.GetService<IAlarmStateStore>();
|
||||
// Per-cluster mesh Phase 3: ConfigSource:Mode selects where this driver reads config.
|
||||
// FetchAndCache pulls the artifact from central over gRPC and reads only the LocalDb cache;
|
||||
@@ -394,7 +394,7 @@ public static class ServiceCollectionExtensions
|
||||
// Host of this node's LocalDb replication partner: the ONLY node that holds a copy of this
|
||||
// node's alarm queue, and so the only node it may stand down in favour of. Null when this
|
||||
// node dials nobody — unpaired (never stand down), or the PASSIVE half of a pair, which is
|
||||
// told its partner through BuildAlarmQueuePeerPredicate instead (review R6 MINOR-4).
|
||||
// told its partner through BuildAlarmQueuePeerPredicate instead.
|
||||
var replicationPeerHost =
|
||||
Uri.TryCreate(
|
||||
resolver.GetService<IConfiguration>()?["LocalDb:Replication:PeerAddress"],
|
||||
@@ -504,7 +504,7 @@ public static class ServiceCollectionExtensions
|
||||
drainInterval: TimeSpan.FromSeconds(continuousOptions.DrainIntervalSeconds),
|
||||
minBackoff: TimeSpan.FromSeconds(continuousOptions.MinBackoffSeconds),
|
||||
maxBackoff: TimeSpan.FromSeconds(continuousOptions.MaxBackoffSeconds),
|
||||
// Gitea #537: read the verdict PER VALUE off the shared role view rather
|
||||
// read the verdict PER VALUE off the shared role view rather
|
||||
// than capturing a bool, so a promotion resumes capture on the next sample.
|
||||
// The view is registered unconditionally on driver nodes; a null one (test
|
||||
// graphs) captures unconditionally, which is the right posture there.
|
||||
@@ -550,7 +550,7 @@ public static class ServiceCollectionExtensions
|
||||
loggerFactory.CreateLogger<AddressSpaceApplier>(),
|
||||
provisioning: provisioning,
|
||||
historizedSubscriptions: historizedSubscriptions);
|
||||
// #520 stage 4 — the sink that receives each applied artifact's API keys + ACL grants, so OPC
|
||||
// the sink that receives each applied artifact's API keys + ACL grants, so OPC
|
||||
// UA session activation can authenticate. Optional: GetService (not GetRequiredService), because
|
||||
// a node with no driver role never registers it and test harnesses build this graph without it;
|
||||
// the actor treats null as "nothing consumes authorization inputs" and skips the decode.
|
||||
@@ -576,10 +576,10 @@ public static class ServiceCollectionExtensions
|
||||
PeerProbeSupervisorName);
|
||||
registry.Register<PeerProbeSupervisorKey>(peerProbes);
|
||||
|
||||
// Gitea #537: "does this snapshot node record the same historized refs as me?" — true only
|
||||
// "does this snapshot node record the same historized refs as me?" — true only
|
||||
// for a partner in this node's own per-cluster mesh, which is exactly the set that serves
|
||||
// this node's address space. A node carrying NO cluster-scoped role (the legacy,
|
||||
// pre-Phase-6 shape) cannot establish that, so the predicate stays null and this node never
|
||||
// older shape) cannot establish that, so the predicate stays null and this node never
|
||||
// stands down: on a fleet-wide election the elected Primary is usually running a DIFFERENT
|
||||
// cluster's configuration, and deferring to it would silently end this cluster's
|
||||
// historization altogether — the same scope mismatch that once suspended the alarm drain on
|
||||
@@ -622,22 +622,22 @@ public static class ServiceCollectionExtensions
|
||||
// emits its Primary-gated native-alarm transitions into it and threads it into the
|
||||
// VirtualTag + ScriptedAlarm hosts it spawns.
|
||||
telemetryHub: resolver.GetService<ITelemetryLocalHub>(),
|
||||
// Gitea #511: where this actor publishes its Primary DATA-PLANE verdict for drivers
|
||||
// where this actor publishes its Primary DATA-PLANE verdict for drivers
|
||||
// that claim an exclusive external identity. Registered unconditionally by
|
||||
// AddOtOpcUaRuntime, unlike redundancyRoleView above — see the comment there.
|
||||
primaryRoleSource: resolver.GetService<IDriverPrimaryRoleSource>(),
|
||||
// Gitea #537: where this actor publishes the continuous-historization CAPTURE
|
||||
// where this actor publishes the continuous-historization CAPTURE
|
||||
// verdict, and how it decides which peer is worth standing down for.
|
||||
historizationRoleView: resolver.GetService<IHistorizationRoleView>(),
|
||||
sharesHistorizationScopeWithLocal: historizationScopePeer,
|
||||
// Gitea #672: stop deferring the capture to a recording Primary the failure detector
|
||||
// stop deferring the capture to a recording Primary the failure detector
|
||||
// already reports unreachable. Unbound section ⇒ the option's default (true).
|
||||
captureWhilePrimaryUnreachable: continuousOptions?.CaptureWhilePrimaryUnreachable ?? true,
|
||||
// Review R6 MINOR-4: the passive half of a LocalDb pair has no PeerAddress, so it is told
|
||||
// The passive half of a LocalDb pair has no PeerAddress, so it is told
|
||||
// its queue-sharing peer as its mesh partner instead — otherwise it never stands down.
|
||||
sharesAlarmQueueWithLocal: BuildAlarmQueuePeerPredicate(
|
||||
resolver.GetService<IConfiguration>(), roleInfo, replicationPeerHost),
|
||||
// Gitea #674 review: the HistoryUpdate verdict (closed until the first redundancy snapshot).
|
||||
// The HistoryUpdate verdict (closed until the first redundancy snapshot).
|
||||
historyUpdateRoleView: resolver.GetService<IHistoryUpdateRoleView>()),
|
||||
DriverHostActorName);
|
||||
registry.Register<DriverHostActorKey>(driverHost);
|
||||
|
||||
Reference in New Issue
Block a user