On Fri, Dec 24, 2021 at 3:13 AM Dilip Kumar <dilipbal...@gmail.com> wrote:

> On Fri, Dec 24, 2021 at 3:27 AM SATYANARAYANA NARLAPURAM <
> satyanarlapu...@gmail.com> wrote:
>
>>
>>>
>> XLogInsert in my opinion is the best place to call it and the hook can be
>> something like this "void xlog_insert_hook(NULL)" as all the throttling
>> logic required is the current flush position which can be obtained
>> from GetFlushRecPtr and the ReplicationSlotCtl. Attached a draft patch.
>>
>
> IMHO, it is not a good idea to call an external hook function inside a
> critical section.  Generally, we ensure that we do not call any code path
> within a critical section which can throw an error and if we start calling
> the external hook then we lose that control.
>

Thank you for the comment. XLogInsertRecord is inside a critical section
but not XLogInsert. Am I missing something?


> It should be blocked at the operation level itself e.g. ALTER TABLE READ
> ONLY, or by some other hook at a little higher level.
>

There is a lot of maintenance overhead with a custom implementation at
individual databases and tables level. This doesn't provide the necessary
control that I am looking for.




>
> --
> Regards,
> Dilip Kumar
> EnterpriseDB: http://www.enterprisedb.com
>

Reply via email to