Dear All,

On Wednesday, April 10, 2024 17:16 MSK, Давыдов Виталий 
<v.davy...@postgrespro.ru> wrote:
 Hi Amit, Ajin, All

Thank you for the patch and the responses. I apologize for my delayed answer 
due to some curcumstances.
On Wednesday, April 10, 2024 14:18 MSK, Amit Kapila <amit.kapil...@gmail.com> 
wrote:

Vitaly, does the minimal solution provided by the proposed patch (Allow to 
alter two_phase option of a subscriber provided no uncommitted prepared 
transactions are pending on that subscription.) address your use case?In 
general, the idea behind the patch seems to be suitable for my case. 
Furthermore, the case of two_phase switch from false to true with uncommitted 
pending prepared transactions probably never happens in my case. The switch 
from false to true means that the replica completes the catchup from the master 
and switches to the normal mode when it participates in the multi-node 
configuration. There should be no uncommitted pending prepared transactions at 
the moment of the switch to the normal mode.

I'm going to try this patch. Give me please some time to investigate the patch. 
I will come with some feedback a little bit later.
I looked at the patch and realized that I can't try it easily in the near 
future because the solution I'm working on is based on PG16 or earlier. This 
patch is not easily applicable to the older releases. I have to port my 
solution to the master, which is not done yet. I apologize for that - so much 
work should be done before applying the patch. BTW, I tested the idea with 
async 2PC commit on my side and it seems to work fine in my case. Anyway, I 
agree, the idea with altering of subscription seems the best one but much 
harder to implement.

To summarise my case of a synchronous multimaster where twophase is used to 
implement global transactions:
 * Replica may have prepared but not committed transactions when I toggle 
subscription twophase from true to false. In this case, all prepared 
transactions may be aborted on the replica before altering the subscription. * 
Replica will not have prepared transactions when subscription is toggled from 
false to true. In this scenario, the replica completes the catchup (with 
twophase=off) and becomes the part of the multi-nodal cluster and is ready to 
accept new 2PC transactions. All the new pending transactions will wait until 
replica responds. But it may work differently for some other solutions. In 
general, it would be great to allow toggling for all scenarious.Just 
interested, does anyone tried to reproduce the problem with slow catchup of 
twophase transactions (pgbench should be used with big number of clients)? I 
haven't seen any messages from anyone other that me that the problem takes 
place.​​​​

Thank you for your help!

With best regards,
Vitaly










 

Reply via email to