Re: Well, we seem to be proof against cache-inval problems now

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Well, we seem to be proof against cache-inval problems now
Date: 2001-01-09 13:50:08
Message-ID: 200101091350.IAA29972@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Can this now be marked as done?

* Modification of pg_class can happen while table in use by another
backend. Might lead to MVCC inside of syscache

> I just finished running the parallel regress tests with inval.c rigged
> to flush the relcache and syscache at every available opportunity,
> that is anytime we could recognize a shared-cache-inval message from
> another backend (see diff below). This setup gives a whole new universe
> of meaning to the word "slow" --- it took *three full days* to run the
> standard "make check" procedure, including eighteen hours just to do the
> "vacuum template1" part of initdb. I kid you not. But it worked.
> Looks like the unexpected-cache-entry-drop class of problems are indeed
> gone.
>
> BTW, the reason the diff is rigged not to allow recursive cache flush
> is not that it wouldn't work, it's that I didn't expect to live long
> enough to finish such a test. I didn't originally have that restriction
> in there (and indeed found a bug that way: relcache flush could go into
> an infinite loop if hit with another SI inval before it'd finished the
> initial flush). After fixing that bug, initdb was making steady
> progress, but not at a rate that I wanted to wait out...
>
> regards, tom lane
>
> *** src/backend/utils/cache/inval.c.orig Wed Nov 15 23:57:44 2000
> --- src/backend/utils/cache/inval.c Mon Jan 1 17:27:53 2001
> ***************
> *** 643,649 ****
> --- 643,661 ----
> elog(DEBUG, "DiscardInvalid called");
> #endif /* defined(INVALIDDEBUG) */
>
> + #if 1
> + /* DEBUG CHECK ONLY ... force cache reset at any opportunity */
> + static bool inReset = false;
> +
> + if (! IsBootstrapProcessingMode() && !inReset)
> + {
> + inReset = true;
> + ResetSystemCaches();
> + inReset = false;
> + }
> + #else
> InvalidateSharedInvalid(CacheIdInvalidate, ResetSystemCaches);
> + #endif
> }
>
> /*
>

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2001-01-09 14:23:50 Re: [PATCHES] Re: Recursion and SPI
Previous Message Bruce Momjian 2001-01-09 13:48:05 Re: bit_length()