mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
Fix logical replication launcher wake up and reset
After the logical replication launcher was told to wake up at commit (for example, by a CREATE SUBSCRIPTION command), the flag to wake up was not reset, so it would be woken up at every following commit as well. So fix that by resetting the flag. Also, we don't need to wake up anything if the transaction was rolled back. Just reset the flag in that case. Author: Masahiko Sawada <sawada.mshk@gmail.com> Reported-by: Fujii Masao <masao.fujii@gmail.com>
This commit is contained in:
parent
e180c8aa8c
commit
9414e41ea7
@ -2138,7 +2138,7 @@ CommitTransaction(void)
|
||||
AtEOXact_HashTables(true);
|
||||
AtEOXact_PgStat(true);
|
||||
AtEOXact_Snapshot(true, false);
|
||||
AtCommit_ApplyLauncher();
|
||||
AtEOXact_ApplyLauncher(true);
|
||||
pgstat_report_xact_timestamp(0);
|
||||
|
||||
CurrentResourceOwner = NULL;
|
||||
@ -2612,6 +2612,7 @@ AbortTransaction(void)
|
||||
AtEOXact_ComboCid();
|
||||
AtEOXact_HashTables(false);
|
||||
AtEOXact_PgStat(false);
|
||||
AtEOXact_ApplyLauncher(false);
|
||||
pgstat_report_xact_timestamp(0);
|
||||
}
|
||||
|
||||
|
@ -748,10 +748,12 @@ ApplyLauncherShmemInit(void)
|
||||
* Wakeup the launcher on commit if requested.
|
||||
*/
|
||||
void
|
||||
AtCommit_ApplyLauncher(void)
|
||||
AtEOXact_ApplyLauncher(bool isCommit)
|
||||
{
|
||||
if (on_commit_launcher_wakeup)
|
||||
if (isCommit && on_commit_launcher_wakeup)
|
||||
ApplyLauncherWakeup();
|
||||
|
||||
on_commit_launcher_wakeup = false;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -22,6 +22,6 @@ extern Size ApplyLauncherShmemSize(void);
|
||||
extern void ApplyLauncherShmemInit(void);
|
||||
|
||||
extern void ApplyLauncherWakeupAtCommit(void);
|
||||
extern void AtCommit_ApplyLauncher(void);
|
||||
extern void AtEOXact_ApplyLauncher(bool isCommit);
|
||||
|
||||
#endif /* LOGICALLAUNCHER_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user