mirror of
https://github.com/postgres/postgres.git
synced 2025-11-22 12:22:45 +03:00
Use conditional variable to wait for next MultiXact offset
In one multixact.c edge case, we need a mechanism to wait for one multixact offset to be written before being allowed to read the next one. We used to handle this case by sleeping for one millisecond and retrying, but such sleeps have been reported as problematic in production cases. We can avoid the problem by using a condition variable: readers sleep on it and then every creator of multixacts broadcasts into the CV when creation is sufficiently far along. Author: Kyotaro Horiguchi <horikyotajntt@gmail.com> Reviewed-by: Andrey Borodin <amborodin@acm.org> Discussion: https://postgr.es/m/47A598F4-B4E7-4029-8FEC-A06A6C3CB4B5@yandex-team.ru Discussion: https://postgr.es/m/20200515.090333.24867479329066911.horikyota.ntt
This commit is contained in:
@@ -139,6 +139,7 @@ MESSAGE_QUEUE_INTERNAL "Waiting for another process to be attached to a shared m
|
||||
MESSAGE_QUEUE_PUT_MESSAGE "Waiting to write a protocol message to a shared message queue."
|
||||
MESSAGE_QUEUE_RECEIVE "Waiting to receive bytes from a shared message queue."
|
||||
MESSAGE_QUEUE_SEND "Waiting to send bytes to a shared message queue."
|
||||
MULTIXACT_CREATION "Waiting for a multixact creation to complete."
|
||||
PARALLEL_BITMAP_SCAN "Waiting for parallel bitmap scan to become initialized."
|
||||
PARALLEL_CREATE_INDEX_SCAN "Waiting for parallel <command>CREATE INDEX</command> workers to finish heap scan."
|
||||
PARALLEL_FINISH "Waiting for parallel workers to finish computing."
|
||||
|
||||
Reference in New Issue
Block a user