Hi Micheal,
The latest patch looks good. By now doing a single scan of shmem two phase data, we have removed the double loops in all the affected functions which is good.
My only question is if the added call to restoreTwoPhaseData() is good enough to handle all the 3 functions PrescanPreparedTransactions(), StandbyRecoverPreparedTransactions() and RecoverPreparedTransactions() appropriately? It looks as if it does, but we need to be doubly sure..
PFA, revised patch with a very minor typo fix and rebase against latest master. The test cases pass as needed.
Oh, btw, while running TAP tests, I got a few errors in unrelated tests.
"# testing connection parameter "target_session_attrs"
not ok 5 - connect to node master if mode "read-write" and master,standby_1 listed
# Failed test 'connect to node master if mode "read-write" and master,standby_1 listed'
# at t/
001_stream_rep.pl line 93.
# got: ''
# expected: '1'
not ok 6 - connect to node master if mode "read-write" and standby_1,master listed
# Failed test 'connect to node master if mode "read-write" and standby_1,master listed'
# at t/
001_stream_rep.pl line 93.
# got: ''
# expected: '1'
not ok 7 - connect to node master if mode "any" and master,standby_1 listed
# Failed test 'connect to node master if mode "any" and master,standby_1 listed'
# at t/
001_stream_rep.pl line 93.
# got: ''
# expected: '1'
not ok 8 - connect to node standby_1 if mode "any" and standby_1,master listed"
Again, not related to this recovery code path, but not sure if others see this as well.