fix(versioning,docs): stamp .NET assembly version + worker doc drift (TST-11, WRK-15)
TST-11: single-source the .NET-side version in src/Directory.Build.props so Server/Worker/Contracts/tests stamp 0.1.2 (was the SDK default 1.0.0) and InformationalVersion carries the git short SHA (0.1.2+<sha>) for support correlation; the git query is guarded (ContinueOnError) so a build outside a git checkout still succeeds. Verified: Server assembly stamps 0.1.2+579282f, build clean. Kept at 0.1.2 (matches Contracts + aligned Python/Rust/Go clients); Java leads at 0.2.0 post JDK-17 retarget. Convergence to a single 0.2.0 cadence left as a release decision, not forced here. WRK-15 (docs-only, no x86 worker build needed): correct the STA thread name in docs/WorkerSta.md + docs/MxAccessWorkerInstanceDesign.md to the actual MxGateway.Worker.STA (was the FQ ZB.MOM.WW.MxGateway.Worker.STA), and fix the stale heartbeat-counter note - CaptureHeartbeat now populates event queue depth (eventQueue.Count) and sequence (LastEventSequence) from the live queue. Claude-Session: https://claude.ai/code/session_01DMXXvNuPekkkrTEyPNxEkW
This commit is contained in:
@@ -251,7 +251,7 @@ The loop should update a heartbeat timestamp after:
|
|||||||
- processing an MXAccess event.
|
- processing an MXAccess event.
|
||||||
|
|
||||||
`StaRuntime` implements this runtime boundary in the worker. It starts one
|
`StaRuntime` implements this runtime boundary in the worker. It starts one
|
||||||
background thread named `ZB.MOM.WW.MxGateway.Worker.STA`, sets it to `ApartmentState.STA`,
|
background thread named `MxGateway.Worker.STA`, sets it to `ApartmentState.STA`,
|
||||||
initializes COM through `StaComApartmentInitializer`, and runs
|
initializes COM through `StaComApartmentInitializer`, and runs
|
||||||
`StaMessagePump`. Commands are scheduled through `InvokeAsync`; the command
|
`StaMessagePump`. Commands are scheduled through `InvokeAsync`; the command
|
||||||
queue signals an `AutoResetEvent` so `MsgWaitForMultipleObjectsEx` can wake the
|
queue signals an `AutoResetEvent` so `MsgWaitForMultipleObjectsEx` can wake the
|
||||||
@@ -650,8 +650,8 @@ Heartbeat payload includes:
|
|||||||
|
|
||||||
`MxAccessStaSession.CaptureHeartbeat()` reads `StaRuntime.LastActivityUtc` and
|
`MxAccessStaSession.CaptureHeartbeat()` reads `StaRuntime.LastActivityUtc` and
|
||||||
`StaCommandDispatcher` queue state without touching the raw MXAccess COM object
|
`StaCommandDispatcher` queue state without touching the raw MXAccess COM object
|
||||||
outside the STA. Event queue depth and event sequence are reported as zero until
|
outside the STA. Event queue depth (`eventQueue.Count`) and event sequence
|
||||||
the event queue implementation owns those counters.
|
(`eventQueue.LastEventSequence`) are populated from the live event queue.
|
||||||
|
|
||||||
The STA watchdog currently emits a `WorkerFault` with
|
The STA watchdog currently emits a `WorkerFault` with
|
||||||
`WorkerFaultCategory.StaHung` when `LastStaActivityUtc` is older than
|
`WorkerFaultCategory.StaHung` when `LastStaActivityUtc` is older than
|
||||||
|
|||||||
+2
-2
@@ -20,13 +20,13 @@ The installed MXAccess interop assembly declares an `Apartment` threading model
|
|||||||
|
|
||||||
## STA Thread Initialization
|
## STA Thread Initialization
|
||||||
|
|
||||||
`StaRuntime`'s constructor configures a background `Thread` named `ZB.MOM.WW.MxGateway.Worker.STA` and forces it into `ApartmentState.STA` before the thread starts. `Start()` releases the thread and then blocks on `startedEvent` so callers observe a fully-initialized apartment (or a captured `startupException`) before the first `InvokeAsync` call:
|
`StaRuntime`'s constructor configures a background `Thread` named `MxGateway.Worker.STA` and forces it into `ApartmentState.STA` before the thread starts. `Start()` releases the thread and then blocks on `startedEvent` so callers observe a fully-initialized apartment (or a captured `startupException`) before the first `InvokeAsync` call:
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
staThread = new Thread(ThreadMain)
|
staThread = new Thread(ThreadMain)
|
||||||
{
|
{
|
||||||
IsBackground = true,
|
IsBackground = true,
|
||||||
Name = "ZB.MOM.WW.MxGateway.Worker.STA"
|
Name = "MxGateway.Worker.STA"
|
||||||
};
|
};
|
||||||
staThread.SetApartmentState(ApartmentState.STA);
|
staThread.SetApartmentState(ApartmentState.STA);
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -9,6 +9,31 @@
|
|||||||
<Deterministic>true</Deterministic>
|
<Deterministic>true</Deterministic>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!-- TST-11: single-source the .NET-side version for Server, Worker, Contracts, and tests
|
||||||
|
(they otherwise stamp the SDK default 1.0.0, so a deployed gateway cannot be correlated
|
||||||
|
to a release). Kept at 0.1.2 to match the Contracts package and the aligned Python/Rust/
|
||||||
|
Go clients; the Java client leads at 0.2.0 after its JDK-17 retarget. The git short SHA is
|
||||||
|
appended to InformationalVersion (0.1.2+<sha>) so support can map a running binary to a
|
||||||
|
commit; the query is guarded so a build outside a git checkout still succeeds. -->
|
||||||
|
<PropertyGroup>
|
||||||
|
<Version>0.1.2</Version>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<Target Name="StampSourceRevision"
|
||||||
|
BeforeTargets="GetAssemblyVersion;GenerateAssemblyInfo"
|
||||||
|
Condition="'$(SourceRevisionId)' == ''">
|
||||||
|
<Exec Command="git -C "$(MSBuildThisFileDirectory)" rev-parse --short HEAD"
|
||||||
|
ConsoleToMSBuild="true"
|
||||||
|
StandardOutputImportance="Low"
|
||||||
|
ContinueOnError="true"
|
||||||
|
IgnoreExitCode="true">
|
||||||
|
<Output TaskParameter="ConsoleOutput" PropertyName="_StampedGitSha" />
|
||||||
|
</Exec>
|
||||||
|
<PropertyGroup>
|
||||||
|
<SourceRevisionId Condition="'$(_StampedGitSha)' != ''">$(_StampedGitSha.Trim())</SourceRevisionId>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Target>
|
||||||
|
|
||||||
<!-- SQLitePCLRaw.lib.e_sqlite3 2.1.11 (transitive via Microsoft.Data.Sqlite) carries GHSA-2m69-gcr7-jv3q,
|
<!-- SQLitePCLRaw.lib.e_sqlite3 2.1.11 (transitive via Microsoft.Data.Sqlite) carries GHSA-2m69-gcr7-jv3q,
|
||||||
which surfaces as NU1903 (warning-as-error). No patched e_sqlite3 release exists yet (2.1.11 is latest),
|
which surfaces as NU1903 (warning-as-error). No patched e_sqlite3 release exists yet (2.1.11 is latest),
|
||||||
so this targeted suppression keeps every OTHER transitive package audited. Remove once an upstream fix ships. -->
|
so this targeted suppression keeps every OTHER transitive package audited. Remove once an upstream fix ships. -->
|
||||||
|
|||||||
Reference in New Issue
Block a user