aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2018-09-07 18:13:29 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2018-09-07 18:13:29 -0400
commitf510412df3510e244fb3f9570ba5d2b4d27e773a (patch)
treef237bf607f49f9224f63112712c1b01151ae69a4
parentf868a8143a98c4172e3faaf415d9352179d5760b (diff)
downloadpostgresql-f510412df3510e244fb3f9570ba5d2b4d27e773a.tar.gz
postgresql-f510412df3510e244fb3f9570ba5d2b4d27e773a.zip
Limit depth of forced recursion for CLOBBER_CACHE_RECURSIVELY.
It's somewhat surprising that we got away with this before. (Actually, since nobody tests this routinely AFAIK, it might've been broken for awhile. But it's definitely broken in the wake of commit f868a8143.) It seems sufficient to limit the forced recursion to a small number of levels. Back-patch to all supported branches, like the preceding patch. Discussion: https://postgr.es/m/12259.1532117714@sss.pgh.pa.us
-rw-r--r--src/backend/utils/cache/inval.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c
index 16d86a29390..f3ded4def90 100644
--- a/src/backend/utils/cache/inval.c
+++ b/src/backend/utils/cache/inval.c
@@ -708,7 +708,17 @@ AcceptInvalidationMessages(void)
}
}
#elif defined(CLOBBER_CACHE_RECURSIVELY)
- InvalidateSystemCaches();
+ {
+ static int recursion_depth = 0;
+
+ /* Maximum depth is arbitrary depending on your threshold of pain */
+ if (recursion_depth < 3)
+ {
+ recursion_depth++;
+ InvalidateSystemCaches();
+ recursion_depth--;
+ }
+ }
#endif
}