BUG #15791: WalSndCtl->sync_standbys_defined modified too late
От | PG Bug reporting form |
---|---|
Тема | BUG #15791: WalSndCtl->sync_standbys_defined modified too late |
Дата | |
Msg-id | 15791-eac704d9ebfbdfea@postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #15791: WalSndCtl->sync_standbys_defined modified too late
|
Список | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 15791 Logged by: DamionZ Zhao Email address: zhq651@126.com PostgreSQL version: 11.2 Operating system: linux Description: 1.when commit transaction, we need to kwow it is sync or async . There is a step : call function SyncRepWaitForLSN in function RecordTransactionCommit. void SyncRepWaitForLSN(XLogRecPtr lsn, bool commit) { .... if (!WalSndCtl->sync_standbys_defined || lsn <= WalSndCtl->lsn[mode] ) { ... return; } } 2.when modify WalSndCtl->sync_standbys_defined? 2.1 in function SyncRepUpdateSyncStandbysDefined, WalSndCtl->sync_standbys_defined will be modified. ---------------------------------------------------- void SyncRepUpdateSyncStandbysDefined(void) { bool sync_standbys_defined = SyncStandbysDefined(); if (sync_standbys_defined != WalSndCtl->sync_standbys_defined) { WalSndCtl->sync_standbys_defined = sync_standbys_defined; LWLockRelease(SyncRepLock); } } 2.2 SyncRepUpdateSyncStandbysDefined call stack is: ------------------------------------------ (1)CheckpointerMain(start checkpoint)- UpdateSharedMemoryConfig SyncRepUpdateSyncStandbysDefined (2)CheckPointGuts -- Flush all data in shared memory to disk, and fsync CheckPointBuffers --Flush all dirty blocks in buffer pool to disk at checkpoint time. BufferSync -- Write out all dirty buffers in the pool. CheckpointWriteDelay UpdateSharedMemoryConfig SyncRepUpdateSyncStandbysDefined 2.3 when any checkpoint situation happened, WalSndCtl->sync_standbys_defined will be modified. 3.my question: ---------------- when modify synchronous_standby_names in postgres.conf, and no checkpoint happenes, will synchronous_standby_names take effect?
В списке pgsql-bugs по дате отправления: