Troy Wolf troy at troywolf.com
Wed Jun 25 08:40:14 PDT 2008
Alexander Staubo,

DISCLAIMER: I am a relative newbie myself, so my advice is worth what you pay...
If, like the user in the link you provided, you are trying to
SUBSCRIBE, then use WAIT FOR EVENT to know when the SUBSCRIBE has
completed, then your problem is that this does not work. WAIT FOR
EVENT is unable to reliably know when the subscribe has completed, and
you cannot MERGE SET until the SUBSCRIBE completes.

You'll probably notice that if you wait long enough--usually a few
seconds depending on your data size--the MERGE will work.

If the MERGE never works and keeps telling you a SUBSCRIBE is in
progress, then check your logs to see if something is holding up the
subscribe--like older transactions or locks. Look for
removeWorkerThread warnings about "transactions earlier than XID %s
are still in progress". Then you may have to do some postgres dba
magic to find the process that owns that transaction and kill it. We
occasionally have this problem and sometimes it is because a user
started a transaction (BEGIN) and never completed the transaction
(COMMIT / ROLLBACK). The subscribe process needs to acquire locks on
all the tables--even tables that are not part of the replication set.

In our organization, we also have an application that does almost
constant writes to a table. We usually have to stop that application
to allow Slony blocking transactions to complete. This is despite the
fact that the table the application writes to is not in any
replication set.


> Date: Wed, 25 Jun 2008 00:45:58 +0200
> From: "Alexander Staubo" <alex at bengler.no>
> Subject: [Slony1-general] Problem with sync/wait before merge set
> To: slony1-general at lists.slony.info
> Message-ID:
>        <88daf38c0806241545j57c98ba6mde6bf9928f9541b5 at mail.gmail.com>
> Content-Type: text/plain; charset=UTF-8
>
> I am having the same problem as this list member:
>
>  http://www.mail-archive.com/slony1-general@gborg.postgresql.org/msg03382.html
>
> I'm using Slony 1.2.14 on OS X (installed via MacPorts).
>
> Here's a sample script:
>
>  create set (id=10000, origin=1);
>  set add table (set id=10000, origin=1, id=15, fully qualified
> name='public.profiles');
>  subscribe set (id=10000, provider=1, receiver=2, forward=yes);
>  wait for event (origin=2, confirmed=1);
>  sync (id=1);
>  wait for event (origin=1, confirmed=2);
>  merge set (id=1, add id=10000, origin=1);
>
> This fails with:
>
> <stdin>:4: PGRES_FATAL_ERROR select
> "_origo_development_test".mergeSet(1, 10000);  - ERROR:  Slony-I: set
> 10000 has subscriptions in progress - cannot merge
>
> There are no errors in the slon daemon logs.
>
> Alexander.


More information about the Slony1-general mailing list