Re: Well, we seem to be proof against cache-inval problems now - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: Well, we seem to be proof against cache-inval problems now
Date
Msg-id 200101091350.IAA29972@candle.pha.pa.us
Whole thread Raw
In response to Well, we seem to be proof against cache-inval problems now  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Well, we seem to be proof against cache-inval problems now
List 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@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: bit_length()
Next
From: Bruce Momjian
Date:
Subject: Re: [PATCHES] Re: Recursion and SPI