docs(src): fix CommentChecker findings across src/ — 1,032 → 5 (all false positives)
Comment/XML-doc changes only, no code logic: - strip project-tracking references (WP*, P*-*, row-NN, #NN, Task N) from comments, keeping the explanatory rationale - add missing summaries, <param>, <returns>, <typeparam> and <inheritdoc/> - replace misused <inheritdoc/> with real docs; where <inheritdoc/> was combined with useful remarks, move the rationale into // comments - drop stale replicationActor <param> on DeploymentManagerActor ctor Remaining 5 are false positives (CWE-1236 x2, failures-1, year-0001, M365). Build 0 errors / 0 warnings.
This commit is contained in:
@@ -22,7 +22,7 @@ namespace ZB.MOM.WW.ScadaBridge.SiteRuntime.Secrets;
|
||||
/// <param name="FailedNames">
|
||||
/// The secret name behind each <paramref name="Failed"/> entry, in the SAME order (index-for-
|
||||
/// index — each pass reports at most one failure per row, so the two lists always stay in
|
||||
/// lockstep). Added for <c>DeploymentManagerActor.HandleDeployArtifacts</c> (Task 10): this
|
||||
/// lockstep). Added for <c>DeploymentManagerActor.HandleDeployArtifacts</c>: this
|
||||
/// mirror reconciles the WHOLE site-wide <c>deployed_secrets</c> table every pass, not only the
|
||||
/// names a particular deploy just shipped, so a caller that needs to know whether a failure
|
||||
/// belongs to ITS OWN shipped names — as opposed to some other, previously-deployed secret, or a
|
||||
@@ -54,7 +54,7 @@ public sealed record MirrorResult(
|
||||
/// master key.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <b>Apply semantics and the confirm-then-ledger fix (fix round 1, review Important #1).</b>
|
||||
/// <b>Apply semantics and the confirm-then-ledger fix.</b>
|
||||
/// <see cref="ISecretStore.ApplyReplicatedAsync"/> applies last-writer-wins strictly on
|
||||
/// (<c>UpdatedUtc</c>, <c>Revision</c>) — see
|
||||
/// <see cref="ZB.MOM.WW.Secrets.Abstractions.SecretLastWriterWins"/> — and a row that is not
|
||||
@@ -106,7 +106,7 @@ public sealed record MirrorResult(
|
||||
/// a later pass's "is this ledgered at the shipped revision" check stays correct.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <b>Per-row isolation (review Important #2).</b> Each row's apply/verify body runs in its own
|
||||
/// <b>Per-row isolation.</b> Each row's apply/verify body runs in its own
|
||||
/// try/catch; an exception — an unrecognised <c>ContentType</c> from a newer central, a
|
||||
/// per-row store fault, a malformed name — is caught, reported as a <see cref="MirrorResult.Failed"/>
|
||||
/// entry naming the secret and the exception type/message (never a value), logged with the same
|
||||
@@ -114,7 +114,7 @@ public sealed record MirrorResult(
|
||||
/// caller's own cancellation (<c>ct.IsCancellationRequested</c>) propagates.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <b>Cache invalidation (review Important #3).</b> The concrete resolver
|
||||
/// <b>Cache invalidation.</b> The concrete resolver
|
||||
/// (<c>DefaultSecretResolver</c>) caches decrypted plaintext for a TTL and also implements
|
||||
/// <see cref="ISecretCacheInvalidator"/>; every ZB.MOM.WW.Secrets write path invalidates after a
|
||||
/// write for exactly this reason. This mirror does the same: after every successful apply
|
||||
@@ -124,10 +124,10 @@ public sealed record MirrorResult(
|
||||
/// can observe a stale pre-rotation plaintext for up to the cache TTL.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <b>Node-local store assumption (review Minor #5; Task 11 removed every replication mode).</b>
|
||||
/// <b>Node-local store assumption (every replication mode has been removed).</b>
|
||||
/// This mirror assumes the site's <see cref="ISecretStore"/> is always plain, node-local, local
|
||||
/// SQLite — the ONLY shape a Site node's store can be after Task 11 retired both the pull-only
|
||||
/// gRPC secrets hub and the SQL-Server <c>ReplicatingSecretStore</c> mode that preceded it (see
|
||||
/// SQLite — the ONLY shape a Site node's store can be now that both the pull-only
|
||||
/// gRPC secrets hub and the SQL-Server <c>ReplicatingSecretStore</c> mode that preceded it are retired (see
|
||||
/// <c>SecretsRegistration</c>). It would NOT have been safe to run this mirror against a store
|
||||
/// decorated by either retired replication mode: <c>DeleteAsync</c> would have published the
|
||||
/// tombstone to every other node sharing the decorator, so a site merely un-referencing a secret
|
||||
@@ -156,7 +156,7 @@ public sealed record MirrorResult(
|
||||
/// is in-memory only (per node process), which matches the ledger's own node-local scope.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <b>Status row for central (review finding M1).</b> A failure on the STANDBY node used to be
|
||||
/// <b>Status row for central.</b> A failure on the STANDBY node used to be
|
||||
/// visible only in that node's own log — site health reports are sent by the active node only.
|
||||
/// After each pass this mirror records its node's current failure set (secret name + message,
|
||||
/// never a value) in the LocalDb-replicated <c>secret_mirror_status</c> table, keyed by node
|
||||
@@ -190,7 +190,7 @@ public sealed class DeployedSecretsMirror : BackgroundService
|
||||
/// <summary>
|
||||
/// The failure set (sorted name+message pairs) this process last wrote successfully to
|
||||
/// <c>secret_mirror_status</c>, or <see langword="null"/> before the first successful write
|
||||
/// — which is what forces the once-per-start-up write (review finding M1).
|
||||
/// — which is what forces the once-per-start-up write.
|
||||
/// </summary>
|
||||
private IReadOnlyList<SecretMirrorFailure>? _lastWrittenStatus;
|
||||
|
||||
@@ -273,7 +273,7 @@ public sealed class DeployedSecretsMirror : BackgroundService
|
||||
await _gate.WaitAsync(ct).ConfigureAwait(false);
|
||||
try
|
||||
{
|
||||
// Tolerant read (final review M4): a row whose row_json cannot be parsed is handed
|
||||
// Tolerant read: a row whose row_json cannot be parsed is handed
|
||||
// back separately instead of throwing out of the whole pass, so it is reported
|
||||
// against its own name like any other per-row failure.
|
||||
var (rows, unreadable) = await _storage.GetDeployedSecretsTolerantAsync().ConfigureAwait(false);
|
||||
@@ -372,7 +372,7 @@ public sealed class DeployedSecretsMirror : BackgroundService
|
||||
/// or the stored row no longer holds what this process wrote (deleted or overwritten by a
|
||||
/// replicated change).
|
||||
/// Best-effort: never throws, so the pass result is unaffected by a status-write fault.
|
||||
/// See the class remarks (review finding M1).
|
||||
/// See the class remarks.
|
||||
/// </summary>
|
||||
private async Task RecordStatusIfChangedAsync(IReadOnlyList<string> failedNames, IReadOnlyList<string> failed)
|
||||
{
|
||||
@@ -672,7 +672,7 @@ public sealed class DeployedSecretsMirror : BackgroundService
|
||||
{
|
||||
// Covers every other failure, including an OperationCanceledException NOT
|
||||
// attributable to this service's own shutdown token (e.g. a store/command
|
||||
// timeout) — that must not silently end the loop (review Minor #4).
|
||||
// timeout) — that must not silently end the loop.
|
||||
_logger.LogWarning(ex, "Deployed secrets mirror pass failed; retrying next interval.");
|
||||
}
|
||||
} while (await timer.WaitForNextTickAsync(stoppingToken).ConfigureAwait(false));
|
||||
|
||||
@@ -7,7 +7,7 @@ using ZB.MOM.WW.ScadaBridge.SiteRuntime.Persistence;
|
||||
namespace ZB.MOM.WW.ScadaBridge.SiteRuntime.Secrets;
|
||||
|
||||
/// <summary>
|
||||
/// Review finding M1: site-side hosted service that periodically reads EVERY node's row from
|
||||
/// Site-side hosted service that periodically reads EVERY node's row from
|
||||
/// the LocalDb-replicated <c>secret_mirror_status</c> table and pushes the list into
|
||||
/// <see cref="ISiteHealthCollector.SetSecretMirrorStatuses"/>, so the next health report
|
||||
/// carries each site node's deployed-secrets mirror failures — the standby's included.
|
||||
|
||||
Reference in New Issue
Block a user