Jason Venner <jason@idiom.com> writes:
> I get these sporadically and I can't trace them to any particular
> thing other than heavy access.
> NOTICE: SIReadEntryData: cache state reset
> TRAP: Failed Assertion("!(RelationNameCache->hctl->nkeys == 10):", File: "relcache.c", Line: 1458)
> !(RelationNameCache->hctl->nkeys == 10) (0)
Yeah. What's happening is that the SI message buffer is overflowing and
you are hitting a bug in the code that is supposed to recover from that
condition. (I posted a long discussion of what SI is all about a few
days ago and don't feel like repeating it --- check the list archives.)
There are several bugs in that area :-(.
I believe I have fixed all the problems with SI overflow recovery for
6.6, but that's part of a rather extensive set of changes to relcache.c
and sinvaladt.c. We are talking about back-patching these changes along
with the not-yet-done relation locking change to make a 6.5.3.
In the meantime, your best bet might be to reduce the probability of SI
overflow by raising MAXNUMMESSAGES in src/include/storage/sinvaladt.h.
It's standardly 4000, but the space per message is only a couple dozen
bytes, so you could probably make it 10 times that without hurting
much...
regards, tom lane