Tom Lane wrote:
> Alvaro Herrera <alvherre@2ndquadrant.com> writes:
> > Tom Lane wrote:
> >> I've not proven this rigorously, but it seems obvious in hindsight:
> >> what's happening is that when the object_address test drops everything
> >> with DROP CASCADE, other processes are sometimes just starting to execute
> >> the event trigger when the DROP commits. When they go to look up the
> >> trigger function, they don't find it, leading to "cache lookup failed for
> >> function".
>
> > Hm, maybe we can drop the event trigger explicitely first, then wait a
> > little bit, then drop the remaining objects with DROP CASCADE?
>
> As I said, that's no fix; it just makes the timing harder to hit. Another
> process could be paused at the critical point for longer than whatever "a
> little bit" is.
Yeah, I was thinking we could play some games with the currently running
XIDs from a txid_snapshot or some such, with a reasonable upper limit on
the waiting time (for the rare cases with a server doing other stuff
with long-running transactions.)
--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services