Commit ac786f6
committed
fix(plugin): send one end notification per invocation
The success dispatch of on_invocation_end sat inside the try that reports a
handler failure, so an end hook that raised was caught as though the handler
had failed and the hook ran a second time with a RETRY outcome. Later
plugins were told the wrong thing about an invocation that succeeded, and an
exporter exported twice. A hook can raise: _dispatch_plugin re-raises the
three exceptions that instruct the calling thread to stop, and from_dict can
reject an output the handler built.
The output is parsed inside the try and the success hook is dispatched after
it, so each invocation produces exactly one end notification.
Registration also rejects more factory-class shapes. A signature bind
accepts create_plugin(self, info=None) and create_plugin(self, *args),
because the probe binds to self and what remains is satisfied, so
plugins=[MyFactory] still passed and then failed on every invocation where
the error is swallowed. For a class the kind of the member now decides:
a classmethod carries __self__, a staticmethod is identified through its
descriptor, and an attribute holding a callable object takes no implicit
first argument. Anything else read off a class takes self and is rejected.
inspect.getattr_static walks the MRO without running a descriptor, so this
still runs no factory code.1 parent fa6190d commit ac786f6
4 files changed
Lines changed: 167 additions & 21 deletions
File tree
- packages/aws-durable-execution-sdk-python
- src/aws_durable_execution_sdk_python
- tests
Lines changed: 12 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1094 | 1094 | | |
1095 | 1095 | | |
1096 | 1096 | | |
| 1097 | + | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
1097 | 1106 | | |
1098 | 1107 | | |
1099 | | - | |
1100 | | - | |
1101 | | - | |
1102 | | - | |
1103 | | - | |
| 1108 | + | |
1104 | 1109 | | |
1105 | 1110 | | |
1106 | 1111 | | |
| |||
1126 | 1131 | | |
1127 | 1132 | | |
1128 | 1133 | | |
| 1134 | + | |
| 1135 | + | |
1129 | 1136 | | |
1130 | 1137 | | |
1131 | 1138 | | |
| |||
packages/aws-durable-execution-sdk-python/src/aws_durable_execution_sdk_python/plugin_discovery.py
Lines changed: 42 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
76 | | - | |
77 | | - | |
78 | | - | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
79 | 82 | | |
80 | 83 | | |
81 | 84 | | |
| |||
94 | 97 | | |
95 | 98 | | |
96 | 99 | | |
| 100 | + | |
| 101 | + | |
97 | 102 | | |
98 | 103 | | |
99 | 104 | | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
100 | 139 | | |
101 | 140 | | |
102 | 141 | | |
| |||
Lines changed: 72 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
48 | 62 | | |
49 | 63 | | |
50 | 64 | | |
| |||
579 | 593 | | |
580 | 594 | | |
581 | 595 | | |
582 | | - | |
583 | | - | |
584 | | - | |
585 | | - | |
586 | | - | |
587 | | - | |
588 | | - | |
589 | | - | |
590 | | - | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
591 | 617 | | |
592 | 618 | | |
593 | | - | |
| 619 | + | |
594 | 620 | | |
595 | 621 | | |
596 | 622 | | |
597 | 623 | | |
598 | 624 | | |
599 | | - | |
600 | | - | |
601 | | - | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
602 | 639 | | |
603 | 640 | | |
604 | 641 | | |
| |||
616 | 653 | | |
617 | 654 | | |
618 | 655 | | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
619 | 678 | | |
620 | 679 | | |
621 | 680 | | |
| |||
Lines changed: 41 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
647 | 647 | | |
648 | 648 | | |
649 | 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 | + | |
650 | 680 | | |
651 | 681 | | |
652 | 682 | | |
| |||
2294 | 2324 | | |
2295 | 2325 | | |
2296 | 2326 | | |
| 2327 | + | |
| 2328 | + | |
| 2329 | + | |
| 2330 | + | |
| 2331 | + | |
| 2332 | + | |
| 2333 | + | |
| 2334 | + | |
| 2335 | + | |
| 2336 | + | |
| 2337 | + | |
2297 | 2338 | | |
2298 | 2339 | | |
2299 | 2340 | | |
| |||
0 commit comments