Repository navigation
[master378] Fix queued data delivery after durable subscription transfer - #4622
Merged
romanett merged 2 commits intoOct 2, 2026
Conversation
Force a fresh queue check after transfer so the first Publish returns saved data instead of an empty keep-alive. Reset the subscription’s expiration counter after transfer. Add tests for queued data delivery, the timing bug, and an empty keep-alive after all queued values have been delivered.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master378 #4622 +/- ##
=============================================
+ Coverage 62.06% 62.08% +0.01%
=============================================
Files 382 382
Lines 79514 79518 +4
Branches 13927 13927
=============================================
+ Hits 49349 49366 +17
+ Misses 25729 25726 -3
+ Partials 4436 4426 -10
🚀 New features to boost your workflow:
|
mrsuciu
marked this pull request as ready for review
October 1, 2026 14:07
romanett
approved these changes
Oct 1, 2026
This was referenced Oct 5, 2026
GoetzGoerisch
pushed a commit
to umati/connect
that referenced
this pull request
Oct 5, 2026
…5.378.182 (#52) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [OPCFoundation.NetStandard.Opc.Ua](https://github.com/OPCFoundation/UA-.NETStandard) | `1.5.378.176` → `1.5.378.182` |  |  | --- ### Release Notes <details> <summary>OPCFoundation/UA-.NETStandard (OPCFoundation.NetStandard.Opc.Ua)</summary> ### [`v1.5.378.182`](https://github.com/OPCFoundation/UA-.NETStandard/releases/tag/1.5.378.182): OPC UA 1.05 Maintenance Update [Compare Source](OPCFoundation/UA-.NETStandard@1.5.378.176...1.5.378.182) Maintenance Release for fixing bugs found on the main378 development branch. #### Released packages [OPCFoundation.NetStandard.Opc.Ua](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Core](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Core/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Security.Certificates](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Security.Certificates/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Configuration](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Configuration/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Server](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Server/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Client](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Client/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Bindings.Https](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Bindings.Https/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.PubSub](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.PubSub/1.5.378.182) #### What's Changed - Remove unused fields from ReferenceNodeManager by [@​mrsuciu](https://github.com/mrsuciu) in [#​4472](OPCFoundation/UA-.NETStandard#4472) - Master378 fix incomplete message buffering by [@​mrsuciu](https://github.com/mrsuciu) in [#​4550](OPCFoundation/UA-.NETStandard#4550) - Fix ServerConfiguration URI values for CTT push-management checks by [@​mrsuciu](https://github.com/mrsuciu) in [#​4592](OPCFoundation/UA-.NETStandard#4592) - Bound nested array preallocation, XML depth and inbound PubSub metadata by [@​romanett](https://github.com/romanett) in [#​4603](OPCFoundation/UA-.NETStandard#4603) - Fix queued data delivery after durable subscription transfer by [@​mrsuciu](https://github.com/mrsuciu) in [#​4622](OPCFoundation/UA-.NETStandard#4622) - Fix GDS client deadlock after a failed keep-alive by [@​romanett](https://github.com/romanett) in [#​4623](OPCFoundation/UA-.NETStandard#4623) - merge Master378 to release by [@​romanett](https://github.com/romanett) in [#​4628](OPCFoundation/UA-.NETStandard#4628) **Full Changelog**: <OPCFoundation/UA-.NETStandard@1.5.378.176...1.5.378.182> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM (`* 0-3 * * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzIuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzMi4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Reviewed-on: https://codeberg.org/umati/connect/pulls/52 Signed-off-by: umati-bot <git-bot@umati.org>
GoetzGoerisch
pushed a commit
to umati/connect
that referenced
this pull request
Oct 5, 2026
…r to 1.5.378.182 (#53) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [OPCFoundation.NetStandard.Opc.Ua.Server](https://github.com/OPCFoundation/UA-.NETStandard) | `1.5.378.176` → `1.5.378.182` |  |  | --- ### Release Notes <details> <summary>OPCFoundation/UA-.NETStandard (OPCFoundation.NetStandard.Opc.Ua.Server)</summary> ### [`v1.5.378.182`](https://github.com/OPCFoundation/UA-.NETStandard/releases/tag/1.5.378.182): OPC UA 1.05 Maintenance Update [Compare Source](OPCFoundation/UA-.NETStandard@1.5.378.176...1.5.378.182) Maintenance Release for fixing bugs found on the main378 development branch. #### Released packages [OPCFoundation.NetStandard.Opc.Ua](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Core](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Core/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Security.Certificates](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Security.Certificates/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Configuration](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Configuration/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Server](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Server/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Client](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Client/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Client.ComplexTypes/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.Bindings.Https](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.Bindings.Https/1.5.378.182) [OPCFoundation.NetStandard.Opc.Ua.PubSub](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua.PubSub/1.5.378.182) #### What's Changed - Remove unused fields from ReferenceNodeManager by [@​mrsuciu](https://github.com/mrsuciu) in [#​4472](OPCFoundation/UA-.NETStandard#4472) - Master378 fix incomplete message buffering by [@​mrsuciu](https://github.com/mrsuciu) in [#​4550](OPCFoundation/UA-.NETStandard#4550) - Fix ServerConfiguration URI values for CTT push-management checks by [@​mrsuciu](https://github.com/mrsuciu) in [#​4592](OPCFoundation/UA-.NETStandard#4592) - Bound nested array preallocation, XML depth and inbound PubSub metadata by [@​romanett](https://github.com/romanett) in [#​4603](OPCFoundation/UA-.NETStandard#4603) - Fix queued data delivery after durable subscription transfer by [@​mrsuciu](https://github.com/mrsuciu) in [#​4622](OPCFoundation/UA-.NETStandard#4622) - Fix GDS client deadlock after a failed keep-alive by [@​romanett](https://github.com/romanett) in [#​4623](OPCFoundation/UA-.NETStandard#4623) - merge Master378 to release by [@​romanett](https://github.com/romanett) in [#​4628](OPCFoundation/UA-.NETStandard#4628) **Full Changelog**: <OPCFoundation/UA-.NETStandard@1.5.378.176...1.5.378.182> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM (`* 0-3 * * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzIuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzMy4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Reviewed-on: https://codeberg.org/umati/connect/pulls/53 Signed-off-by: umati-bot <git-bot@umati.org>
This was referenced Oct 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Force a fresh queue check after transfer so the first Publish returns saved data instead of an empty keep-alive. Reset the subscription’s expiration counter after transfer.
Add tests for queued data delivery, the timing bug, and an empty keep-alive after all queued values have been delivered.
Description
A durable subscription could return an empty keep-alive on the first Publish after transfer, even when values had accumulated while the client was disconnected. The server could reuse its previous keep-alive state before checking the queues.
This change forces a fresh queue check after transfer and resets the subscription's expiration counter.
Queued values are delivered first; normal keep-alives resume once the queues are drained.
Tests cover the timing bug, data delivery after reconnecting with SendInitialValues=false, and a keep-alive after draining all queued writes, including across multiple Publish responses.
Checklist
Put an
xin the boxes that apply. You can complete these step by step after opening the PR.