Andrew Sullivan ajs at crankycanuck.ca
Fri Oct 26 06:54:51 PDT 2007
On Fri, Oct 26, 2007 at 02:46:47AM +0200, hubert depesz lubaczewski wrote:
> 
> i run it wehn the load on machine is minimal (it's next to impossible to
> get lower load, as i'm doing it at 3 a.m.!), but all i get is:
> 
> #v+
> <stdin>:6: PGRES_FATAL_ERROR select "_QQQ".ddlScript_prepare(1, -1);  - ERROR:  deadlock detected
> DETAIL:  Process 7628 waits for AccessExclusiveLock on relation 56719 of database 55909; blocked by process 6705.
> Process 6705 waits for AccessShareLock on relation 56624 of database 55909; blocked by process 7628.

Without knowing what those other transactions are trying to do, it's
sort of impossible to tell you.  But it sounds like something else
has a lock on that table.  You really need to take an application
outage to do DDL changes.  This is actually true on single-node
systems, too (you're taking one implicitly, because you have an
exclusive lock on that table while you're making the change).  Across
a replicated set like this, the outage period is just more obvious.

> i really think there should be better way of handling schema
> modifications - execute script is very unfriendly. and, as it seems
> - in some cases it simply doesn't work :(

It would work if you weren't trying to use the table.  

If you have a "better way of handling schema modifications" that will
actually work, please propose it.

A

-- 
Andrew Sullivan  | ajs at crankycanuck.ca
The whole tendency of modern prose is away from concreteness.
		--George Orwell


More information about the Slony1-general mailing list