Gregory Stark <stark@enterprisedb.com> writes:
> "Tom Lane" <tgl@sss.pgh.pa.us> writes:
>> I didn't do anything about it at the time, but now I am tempted to
>> modify LookupOpclassInfo() so that CLOBBER_CACHE_ALWAYS disables
>> its internal cache. Any objections?
> That sounds not equivalent to receiving a relcache flush at any particular
> point in time where a relcache flush could be received. Wouldn't it make more
> sense (and test more code) to go ahead and cache all the same data but flush
> it whenever a relcache flush could possibly be received?
CLOBBER_CACHE_ALWAYS already did that.
I'm too lazy to go back and reconstruct the exact sequence of events
that led to the problem last December, but the basic issue is that
LookupOpclassInfo had its own caching in front of the syscache flush,
and that was able to obscure a cache flush race condition that only
happened when LookupOpclassInfo had to actually load data. If you
really want to question this, I suggest loading up a CVS snapshot from
late last December and trying to reproduce the intermittent buildfarm
failures we were seeing then.
regards, tom lane