Commit b8856c9
fix(SubscriptionManager): replace List with ConcurrentDictionary for abandoned subscriptions (OPCFoundation#3617) (OPCFoundation#3618)
* fix(SubscriptionManager): replace List with ConcurrentDictionary for abandoned subscriptions (OPCFoundation#3612)
* replace the semaphore-protected `List<ISubscription>` used for abandoned subscriptions with a `readonly ConcurrentDictionary<uint, ISubscription>`, eliminating three separate lock acquisitions in `SessionClosed`, `DeleteSubscription`, and the publish loop
* add `DeleteAbandonedSubscriptionsConcurrentlyAsync` integration test to cover the concurrent-delete scenario.
* Fix build
---------
Co-authored-by: Marc Schier <[email protected]>1 parent 03777ec commit b8856c9
2 files changed
Lines changed: 78 additions & 59 deletions
File tree
- Libraries/Opc.Ua.Server/Subscription
- Tests/Opc.Ua.Server.Tests
Lines changed: 14 additions & 59 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| 78 | + | |
78 | 79 | | |
79 | 80 | | |
80 | 81 | | |
| |||
528 | 529 | | |
529 | 530 | | |
530 | 531 | | |
531 | | - | |
532 | | - | |
| 532 | + | |
533 | 533 | | |
534 | | - | |
535 | 534 | | |
536 | 535 | | |
537 | 536 | | |
538 | 537 | | |
539 | | - | |
540 | | - | |
541 | | - | |
542 | | - | |
543 | 538 | | |
544 | 539 | | |
545 | 540 | | |
| |||
699 | 694 | | |
700 | 695 | | |
701 | 696 | | |
702 | | - | |
| 697 | + | |
703 | 698 | | |
704 | | - | |
705 | | - | |
706 | | - | |
707 | | - | |
708 | | - | |
709 | | - | |
710 | | - | |
711 | | - | |
712 | | - | |
713 | | - | |
714 | | - | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
715 | 702 | | |
716 | 703 | | |
717 | 704 | | |
| |||
2063 | 2050 | | |
2064 | 2051 | | |
2065 | 2052 | | |
2066 | | - | |
2067 | | - | |
2068 | | - | |
2069 | | - | |
2070 | | - | |
2071 | | - | |
2072 | | - | |
2073 | | - | |
2074 | | - | |
2075 | | - | |
2076 | | - | |
2077 | | - | |
2078 | | - | |
2079 | | - | |
2080 | | - | |
2081 | | - | |
2082 | | - | |
2083 | | - | |
2084 | | - | |
2085 | | - | |
2086 | | - | |
2087 | | - | |
2088 | | - | |
2089 | | - | |
2090 | | - | |
2091 | | - | |
2092 | | - | |
2093 | | - | |
| 2053 | + | |
| 2054 | + | |
| 2055 | + | |
| 2056 | + | |
2094 | 2057 | | |
2095 | 2058 | | |
2096 | 2059 | | |
| |||
2099 | 2062 | | |
2100 | 2063 | | |
2101 | 2064 | | |
2102 | | - | |
| 2065 | + | |
2103 | 2066 | | |
2104 | 2067 | | |
2105 | 2068 | | |
| |||
2122 | 2085 | | |
2123 | 2086 | | |
2124 | 2087 | | |
2125 | | - | |
2126 | | - | |
2127 | | - | |
2128 | | - | |
2129 | | - | |
2130 | | - | |
2131 | | - | |
2132 | | - | |
2133 | | - | |
| 2088 | + | |
2134 | 2089 | | |
2135 | | - | |
| 2090 | + | |
2136 | 2091 | | |
2137 | 2092 | | |
2138 | 2093 | | |
| |||
2329 | 2284 | | |
2330 | 2285 | | |
2331 | 2286 | | |
2332 | | - | |
| 2287 | + | |
2333 | 2288 | | |
2334 | 2289 | | |
2335 | 2290 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
626 | 626 | | |
627 | 627 | | |
628 | 628 | | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
629 | 693 | | |
630 | 694 | | |
631 | 695 | | |
| |||
0 commit comments