mirror of
https://github.com/postgres/postgres.git
synced 2026-05-27 20:27:28 -04:00
Flush statistics during idle periods in parallel apply worker.
Parallel apply workers previously failed to report statistics while waiting for new work in the main loop. This resulted in the stats from the most recent transaction remaining unbuffered, leading to arbitrary reporting delays—particularly when streamed transactions were infrequent. This commit ensures that statistics are explicitly flushed when the worker is idle, providing timely visibility into accumulated worker activity. Author: Zhijie Hou <houzj.fnst@fujitsu.com> Reviewed-by: Chao Li <li.evan.chao@gmail.com> Reviewed-by: Amit Kapila <amit.kapila16@gmail.com> Backpatch-through: 16, where it was introduced Discussion: https://postgr.es/m/TYRPR01MB1419579F217CC4332B615589594202@TYRPR01MB14195.jpnprd01.prod.outlook.com
This commit is contained in:
parent
63a116a96e
commit
090c4297e4
1 changed files with 9 additions and 0 deletions
|
|
@ -815,6 +815,15 @@ LogicalParallelApplyLoop(shm_mq_handle *mqh)
|
|||
|
||||
if (rc & WL_LATCH_SET)
|
||||
ResetLatch(MyLatch);
|
||||
|
||||
/*
|
||||
* Force stats reporting to avoid long delays. There can be
|
||||
* long idle gaps before the leader assigns the next
|
||||
* transaction, and the only opportunity to report stats
|
||||
* during such gaps is here.
|
||||
*/
|
||||
if ((rc & WL_TIMEOUT) && !IsTransactionState())
|
||||
pgstat_report_stat(true);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in a new issue