> 25 июля 2022 г., в 14:29, Bharath Rupireddy 
> <bharath.rupireddyforpostg...@gmail.com> написал(а):
> 
> Hm, after thinking for a while, I tend to agree with the above
> approach - meaning, query cancel interrupt processing can completely
> be disabled in SyncRepWaitForLSN() and process proc die interrupt
> immediately, this approach requires no GUC as opposed to the proposed
> v1 patch upthread.
GUC was proposed here[0] to maintain compatibility with previous behaviour. But 
I think that having no GUC here is fine too. If we do not allow cancelation of 
unreplicated backends, of course.


>> 
>> And yes, we need additional complexity - but in some other place. 
>> Transaction can also be locally committed in presence of a server crash. But 
>> this another difficult problem. Crashed server must not allow data queries 
>> until LSN of timeline end is successfully replicated to 
>> synchronous_standby_names.
> 
> Hm, that needs to be done anyways. How about doing as proposed
> initially upthread [1]? Also, quoting the idea here [2].
> 
> Thoughts?
> 
> [1] 
> https://www.postgresql.org/message-id/CALj2ACUrOB59QaE6=jf2cfayv1mr7fzd8tr4ym5+oweyg1s...@mail.gmail.com
> [2] 2) Wait for sync standbys to catch up upon restart after the crash or
> in the next txn after the old locally committed txn was canceled. One
> way to achieve this is to let the backend, that's making the first
> connection, wait for sync standbys to catch up in ClientAuthentication
> right after successful authentication. However, I'm not sure this is
> the best way to do it at this point.


I think ideally startup process should not allow read only connections in 
CheckRecoveryConsistency() until WAL is not replicated to quorum al least up 
until new timeline LSN.

Thanks!

[0] https://commitfest.postgresql.org/34/2402/



Reply via email to