mirror of
https://github.com/postgres/postgres.git
synced 2025-08-25 20:23:07 +03:00
Modify sinval so that InvalidateSharedInvalid() does not hold
the SInval spinlock while it is calling the passed invalFunction or resetFunction. This is necessary to avoid deadlock with lmgr change; InvalidateSharedInvalid can be called recursively now. It should be a good performance improvement anyway --- holding a spinlock for more than a very short interval is a no-no.
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: sinvaladt.h,v 1.16 1999/07/16 17:07:38 momjian Exp $
|
||||
* $Id: sinvaladt.h,v 1.17 1999/09/04 18:36:44 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -128,9 +128,9 @@ extern int SISegmentInit(bool killExistingSegment, IPCKey key,
|
||||
|
||||
extern bool SISetDataEntry(SISeg *segP, SharedInvalidData *data);
|
||||
extern void SISetProcStateInvalid(SISeg *segP);
|
||||
extern bool SIDelDataEntry(SISeg *segP);
|
||||
extern void SIReadEntryData(SISeg *segP, int backendId,
|
||||
void (*invalFunction) (), void (*resetFunction) ());
|
||||
extern int SIGetDataEntry(SISeg *segP, int backendId,
|
||||
SharedInvalidData *data);
|
||||
extern bool SIDelDataEntries(SISeg *segP, int n);
|
||||
extern void SIDelExpiredDataEntries(SISeg *segP);
|
||||
|
||||
#endif /* SINVALADT_H */
|
||||
|
Reference in New Issue
Block a user