Wed Sep 13 15:42:12 PDT 2006
- Previous message: [Slony1-commit] By xfade: Correct example.
- Next message: [Slony1-commit] By wieck: Let failoverSet_int() and moveSet_int() communicate the exact
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Log Message: ----------- Adjust the sl_setsync row of moved sets to the correct values for ssy_seqno, ssy_minxid, ssy_maxxid and ssy_xip when processing ACCEPT_SET. Setsync must represent the transaction status before the first change could happen on the new origin. Jan Modified Files: -------------- slony1-engine/src/backend: slony1_funcs.sql (r1.95 -> r1.96) slony1-engine/src/slon: remote_worker.c (r1.121 -> r1.122) -------------- next part -------------- Index: slony1_funcs.sql =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/backend/slony1_funcs.sql,v retrieving revision 1.95 retrieving revision 1.96 diff -Lsrc/backend/slony1_funcs.sql -Lsrc/backend/slony1_funcs.sql -u -w -r1.95 -r1.96 --- src/backend/slony1_funcs.sql +++ src/backend/slony1_funcs.sql @@ -2217,7 +2217,11 @@ -- On the new origin, raise an event - ACCEPT_SET if v_local_node_id = p_new_origin then - + -- Create a SYNC event as well so that the ACCEPT_SET has + -- the same snapshot as the last SYNC generated by the new + -- origin. This snapshot will be used bu other nodes to + -- finalize the setsync status. + perform @NAMESPACE at .createEvent(''_ at CLUSTERNAME@'', ''SYNC'', NULL); perform @NAMESPACE at .createEvent(''_ at CLUSTERNAME@'', ''ACCEPT_SET'', p_set_id, p_old_origin, p_new_origin); end if; Index: remote_worker.c =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slon/remote_worker.c,v retrieving revision 1.121 retrieving revision 1.122 diff -Lsrc/slon/remote_worker.c -Lsrc/slon/remote_worker.c -u -w -r1.121 -r1.122 --- src/slon/remote_worker.c +++ src/slon/remote_worker.c @@ -1176,14 +1176,37 @@ res = PQexec(local_dbconn, dstring_data(&query2)); } PQclear(res); - slon_log(SLON_DEBUG2, "ACCEPT_SET - MOVE_SET or FAILOVER_SET exists - done\n"); + slon_log(SLON_DEBUG2, "ACCEPT_SET - MOVE_SET or FAILOVER_SET exists - adjusting setsync status\n"); + /* + * Finalize the setsync status to mave the ACCEPT_SET's + * seqno and snapshot info. + */ + slon_appendquery(&query1, + "update %s.sl_setsync " + " set ssy_seqno = '%s', " + " ssy_minxid = '%s', " + " ssy_maxxid = '%s', " + " ssy_xip = '%q', " + " ssy_action_list = '' " + " where ssy_setid = %d; ", + rtcfg_namespace, + seqbuf, + event->ev_minxid_c, + event->ev_maxxid_c, + event->ev_xip, + set_id); + + /* + * Execute all queries and restart slon. + */ slon_appendquery(&query1, "notify \"_%s_Restart\"; ", rtcfg_cluster_name); query_append_event(&query1, event); slon_appendquery(&query1, "commit transaction;"); query_execute(node, local_dbconn, &query1); + slon_log(SLON_DEBUG2, "ACCEPT_SET - done\n"); slon_retry(); need_reloadListen = true;
- Previous message: [Slony1-commit] By xfade: Correct example.
- Next message: [Slony1-commit] By wieck: Let failoverSet_int() and moveSet_int() communicate the exact
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list