* Callback to release references on transaction abort. */
| 903 | * Callback to release references on transaction abort. |
| 904 | */ |
| 905 | static void |
| 906 | shareinput_release_callback(ResourceReleasePhase phase, |
| 907 | bool isCommit, |
| 908 | bool isTopLevel, |
| 909 | void *arg) |
| 910 | { |
| 911 | dlist_mutable_iter miter; |
| 912 | |
| 913 | if (phase != RESOURCE_RELEASE_BEFORE_LOCKS) |
| 914 | return; |
| 915 | |
| 916 | dlist_foreach_modify(miter, &shareinput_Xslice_refs) |
| 917 | { |
| 918 | shareinput_Xslice_reference *ref = |
| 919 | dlist_container(shareinput_Xslice_reference, |
| 920 | node, |
| 921 | miter.cur); |
| 922 | |
| 923 | if (ref->owner == CurrentResourceOwner) |
| 924 | { |
| 925 | if (isCommit) |
| 926 | elog(WARNING, "shareinput lease reference leak: lease %p still referenced", ref); |
| 927 | release_shareinput_reference(ref, false); |
| 928 | } |
| 929 | } |
| 930 | } |
| 931 | |
| 932 | /* |
| 933 | * shareinput_reader_waitready |
nothing calls this directly
no test coverage detected