mirror of
https://github.com/postgres/postgres.git
synced 2025-11-25 12:03:53 +03:00
Move isolationtester's is-blocked query into C code for speed.
Commit 4deb41381 modified isolationtester's query to see whether a
session is blocked to also check for waits occurring in GetSafeSnapshot.
However, it did that in a way that enormously increased the query's
runtime under CLOBBER_CACHE_ALWAYS, causing the buildfarm members
that use that to run about four times slower than before, and in some
cases fail entirely. To fix, push the entire logic into a dedicated
backend function. This should actually reduce the CLOBBER_CACHE_ALWAYS
runtime from what it was previously, though I've not checked that.
In passing, expose a SQL function to check for safe-snapshot blockage,
comparable to pg_blocking_pids. This is more or less free given the
infrastructure built to solve the other problem, so we might as well.
Thomas Munro
Discussion: https://postgr.es/m/20170407165749.pstcakbc637opkax@alap3.anarazel.de
This commit is contained in:
@@ -474,5 +474,7 @@ typedef struct TwoPhasePredicateRecord
|
||||
* locking internals.
|
||||
*/
|
||||
extern PredicateLockData *GetPredicateLockStatusData(void);
|
||||
extern int GetSafeSnapshotBlockingPids(int blocked_pid,
|
||||
int *output, int output_size);
|
||||
|
||||
#endif /* PREDICATE_INTERNALS_H */
|
||||
|
||||
Reference in New Issue
Block a user