slony1-bugs at lists.slony.info slony1-bugs at lists.slony.info
Fri Mar 13 05:28:20 PDT 2009
http://www.slony.info/bugzilla/show_bug.cgi?id=77

           Summary: Missing confirm records for events in sl_confirm table
           Product: Slony-I
           Version: devel
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: low
         Component: stored procedures
        AssignedTo: slony1-bugs at lists.slony.info
        ReportedBy: orlin at tetracom.com
                CC: slony1-bugs at lists.slony.info
   Estimated Hours: 0.0


I have Postgres 8.3 and Slony 2.0.1 installed on two virtual machines with CENT
OS and cluster with two nodes(master and slave). The cluster name is
'kms_cluster', the ID of the master is 1, the ID of the slave is 2, the set ID
is 3. My goal is to create tables and add them to replication dynamical(i know
that Slony is not developed for such case, but i don't have a choice at the
moment) during the application execution. I use the stored functions provided
by Slony and my simple 'add table' algorithm is:

CREATE TABLE kms_gen.t_two
(
  dname character varying(55) NOT NULL,
  CONSTRAINT pk_t_two PRIMARY KEY (dname)
);--to all nodes

SELECT _kms_cluster.storeset(999, 'tmp');--master[newSetId,setName]

SELECT _kms_cluster.setaddtable(999, 700, 'kms_gen.t_two', 'pk_t_two',
'testmerge');--master[setId,tableid,tableName,tablePk,comments]

SELECT _kms_cluster.subscribeset(999, 1, 2,
FALSE);--master[set_id,provider_node_id,reciver_node_id]

-- optional SYNC event
-- SELECT _kms_cluster.createevent('_kms_cluster', 'SYNC', 'test sync event')
AS event_seqno;--master[cluster_name,ev_type,optional_descr]

SELECT _kms_cluster.mergeset(3, 999); --master[setid,tmpSetId] possible error
if the subscription is not complete

Of course the problem is that the merge must wait for the subscription process
end.I decide to check the sl_confirm table for the subscription event
confirmation, i know that the SUBSCRIBE_SET event confirm is not the end and i
decide to wait until the ENABLE_SUBSCRIPTION event is confirmed.Moreover, i
have another variant(i read how the WAIT FOR EVENT command is used by
subscription), i create optional SYNC event after the subscribe and wait for
it. 
The problem is that the confirm record for the ENABLE_SUBSCRIPTION or my SYNC
event sometimes does not appear in the master node sl_confirm table, i check
the sl_event table and get the events seqnumbers, then check the sl_confirm and
see that some events don't have confirm record.
In addition, i make all of this trough the postgresql-8.2-506.jdbc3.jar
driver(if this is relevant), when i execute "SELECT
_kms_cluster.createevent('_kms_cluster', 'SYNC', 'test sync event') AS
event_seqno;--master[cluster_name,ev_type,optional_descr]" trough pgAdmin
editor
then the generated SYNC event always has a confirm record in the sl_confirm
table.
Finally, my only question is: Is it by design so that not all events originate
on the master node have a confirm record in the master sl_confirm table or this
is just a strange behavior.


-- 
Configure bugmail: http://www.slony.info/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
You are the assignee for the bug.


More information about the Slony1-bugs mailing list