cannot read pg_class without having selected a database / is this a bug?
Tomas Vondra <tv@fuzzy.cz>
From: Tomas Vondra <tv@fuzzy.cz>
To: pgsql-hackers@postgresql.org
Date: 2011-12-03T22:33:20Z
Lists: pgsql-hackers
Attachments
- issue.c (text/x-c)
- issue.control (text/plain)
- Makefile (text/plain)
Hi, I've written a simple extension that limits number of connection by IP/db/user, and I do receive this exception: psql: FATAL: cannot read pg_class without having selected a database I've found this happens because the extension defines a client auth hook that reads pg_stat_activity. The really interesting thing is that this happens only when I start several backends 'at the same time' right after the cluster is started. From that time, everything works just fine. So it seems like a race condition or something like that. I've prepared a simple testcase to demonstrate this issue - see the files attached. I've put there several 'sleep' to demonstrate the timing error. All you need to do is this: 1) compile the extension (make install) 2) add the extension to shared_preload_libraries 3) restart the cluster 4) start two backends at the same time (within a second or so) Tomas