fix(historian): T9 review round 1 - dup-key retry counter, alarm Classify retries unknown, test hardening
Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
+8
-1
@@ -57,6 +57,7 @@ public sealed class WriteTests(SqlHistorianFixture fx)
|
||||
for (var i = 0; i < 6; i++) rows[i].T.Ticks.ShouldBe(vals[i].TimestampUtc!.Value.Ticks);
|
||||
var back = rows.Select(r => SampleRowMapper.FromColumns(r.Kind, r.N, r.I, r.S)).ToList();
|
||||
back.ShouldBe(vals.Select(v => v.Value).ToList());
|
||||
(rows[5].N, rows[5].I, rows[5].S).ShouldBe((null, null, null));
|
||||
rows[1].Status.ShouldBe(unchecked((int)0x40000000u));
|
||||
SampleRowMapper.FromDbStatus(rows[5].Status).ShouldBe(0x80310000u);
|
||||
}
|
||||
@@ -148,7 +149,13 @@ public sealed class WriteTests(SqlHistorianFixture fx)
|
||||
fx.SkipIfUnavailable();
|
||||
var (w, s) = Make();
|
||||
var vals = Enumerable.Range(0, 200).Select(i => new HistorizationValue(T0.AddMilliseconds(i), HistorianValue.FromDouble(i), 0)).ToArray();
|
||||
var results = await Task.WhenAll(Enumerable.Range(0, 8).Select(_ => Task.Run(() => w.WriteLiveValuesAsync("tag.race", vals, CancellationToken.None))));
|
||||
// A deadlock victim (1205) legitimately returns false and the recorder retries; model that, and require convergence.
|
||||
var results = await Task.WhenAll(Enumerable.Range(0, 8).Select(_ => Task.Run(async () =>
|
||||
{
|
||||
for (var i = 0; i < 5; i++)
|
||||
if (await w.WriteLiveValuesAsync("tag.race", vals, CancellationToken.None)) return true;
|
||||
return false;
|
||||
})));
|
||||
results.ShouldAllBe(r => r);
|
||||
(await RowsAsync(s, "tag.race")).Count.ShouldBe(200);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user