View Single Post

   
  #3 (permalink)  
Old 04-12-2008, 09:12 AM
Stuart Bishop
 
Posts: n/a
Default Re: elog(FATAL) vs shared memory

Mark Shuttleworth wrote:
> Tom Lane wrote:
>> (1) something (still not sure what --- Martin and Mark, I'd really like
>> to know) was issuing random SIGTERMs to various postgres processes
>> including autovacuum.
>>

>
> This may be a misfeature in our test harness - I'll ask Stuart Bishop to
> comment.


After a test is run, the test harness kills any outstanding connections so
we can drop the test database. Without this, a failing test could leave open
connections dangling causing the drop database to block.

CREATE OR REPLACE FUNCTION _killall_backends(text)
RETURNS Boolean AS $$
import os
from signal import SIGTERM

plan = plpy.prepare(
"SELECT procpid FROM pg_stat_activity WHERE datname=$1", ['text']
)
success = True
for row in plpy.execute(plan, args):
try:
plpy.info("Killing %d" % row['procpid'])
os.kill(row['procpid'], SIGTERM)
except OSError:
success = False

return success
$$ LANGUAGE plpythonu;

--
Stuart Bishop <stuart.bishop@canonical.com> http://www.canonical.com/
Canonical Ltd. http://www.ubuntu.com/


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGFM4NAfqZj7rGN0oRAklGAKCBk4o8gyprHzWNPTLREO Zs48LZqQCgnSPw
IvZRsEONoAGW8ZzIiQo6nXo=
=qFbS
-----END PGP SIGNATURE-----

Reply With Quote