mirror of
https://github.com/OPCFoundation/UA-.NETStandard.git
synced 2026-10-20 08:41:51 +08:00
2e91ba36cd
# Description `JobOrderList` and `JobOrderResponseList` serve their value from a snapshot that the job-control change streams refresh. The refresh replaced the snapshot but never marked the variable as changed, so a client subscribed to a list received the first value and then nothing and had to poll. The refresh now stamps a new source timestamp on the list variable while it holds the refresh lock (the timestamp setter sets the Value change mask) and calls `ClearChangeMasks` after releasing it — the monitored items' change handlers read the list back through the read callback, which takes the same lock. A refresh that loses the generation check reports nothing, so an older snapshot never overwrites a newer notification. - `Isa95NodeManager.RefreshJobOrderListsAsync`: V1 and V2 `JobOrderList`. - `JobManagementBuilder` (`Opc.Ua.Machinery.Server`): `JobOrderList` and `JobOrderResponseList`. Both tests listen on the notification path monitored items use (`NodeState.StateChanged` with the Value mask) and fail without the change: - `MachineryPartsBuilderTests.TheJobListsReportChangesToMonitoredItemsAsync`: storing an order and receiving a response are both reported. - `Isa95EndToEndTests.ServerFixtureAndTypedClientExerciseIsa95Async`: the existing external-update step now also asserts that the change reaches `JobOrderList`; it used to verify only with repeated reads, which is why this went unnoticed. Local results on the branch: `UA.slnx` Release builds on all target frameworks with no new warnings; `Opc.Ua.ISA95.Tests` 144/144 and `Opc.Ua.Machinery.Tests` 163/163 on net10.0 and net8.0; changed-line coverage 100 % (`check-coverage.ps1`). Fork CI (full matrix incl. macOS) and CodeQL: green — [CI run 36752366310](https://github.com/biancode/UA-.NETStandard/actions/runs/36752366310) (189 jobs incl. macOS), [CodeQL run 36752372259](https://github.com/biancode/UA-.NETStandard/actions/runs/36752372259). ## Related Issues - Fixes #4606 ## Checklist - [x] I have signed the [CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf) and read the [CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md) doc. - [x] I have added tests that prove my fix is effective or that my feature works and increased code coverage. - [x] I have added all necessary documentation. - [x] I have verified that my changes do not introduce (new) build or analyzer warnings. - [ ] I ran **all** tests locally using the **UA.slnx** solution against at least .net **framework** and .net **10**, and all passed. (Affected suites on net10.0 and net8.0 locally on macOS; .NET Framework is covered by the fork CI's Windows net48 legs.) - [ ] I fixed **all** failing and flaky tests in the CI pipelines and **all** CodeQL warnings. - [ ] I have addressed **all** PR feedback received.