Content-Length: 260417 | pFad | http://github.com/postgrespro/postgres_cluster/commit/59d1e2b95a826869e2789ffe01e9e552148eefde

63 Cancel CV sleep during subtransaction abort. · postgrespro/postgres_cluster@59d1e2b · GitHub
Skip to content

Commit 59d1e2b

Browse files
committed
Cancel CV sleep during subtransaction abort.
Generally, error recovery paths that need to do things like LWLockReleaseAll and pgstat_report_wait_end also need to call ConditionVariableCancelSleep, but AbortSubTransaction was missed. Since subtransaction abort might destroy up the DSM segment that contains the ConditionVariable stored in cv_sleep_target, this can result in a crash for anything using condition variables. Reported and diagnosed by Andres Freund. Discussion: http://postgr.es/m/20171221110048.rxk6464azzl5t2fi@alap3.anarazel.de
1 parent 1804284 commit 59d1e2b

File tree

1 file changed

+3
-0
lines changed
  • src/backend/access/transam

1 file changed

+3
-0
lines changed

src/backend/access/transam/xact.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4717,6 +4717,9 @@ AbortSubTransaction(void)
47174717
/* Reset WAL record construction state */
47184718
XLogResetInsertion();
47194719

4720+
/* Cancel condition variable sleep */
4721+
ConditionVariableCancelSleep();
4722+
47204723
/*
47214724
* Also clean up any open wait for lock, since the lock manager will choke
47224725
* if we try to wait for another lock before doing this.

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/postgrespro/postgres_cluster/commit/59d1e2b95a826869e2789ffe01e9e552148eefde

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy