CVS User Account cvsuser
Tue May 3 17:16:26 PDT 2005
Log Message:
-----------
ACCEPT_SET could not find the corresponding MOVE_SET's event number,
preventing it from functioning. Alas, there is no way to find MOVE_SET
event number from the node that is issuing the ACCEPT_SET.

Modified Files:
--------------
    slony1-engine/src/backend:
        slony1_funcs.sql (r1.61 -> r1.62)
    slony1-engine/src/slon:
        local_listen.c (r1.30 -> r1.31)
        remote_worker.c (r1.79 -> r1.80)

-------------- next part --------------
Index: slony1_funcs.sql
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/backend/slony1_funcs.sql,v
retrieving revision 1.61
retrieving revision 1.62
diff -Lsrc/backend/slony1_funcs.sql -Lsrc/backend/slony1_funcs.sql -u -w -r1.61 -r1.62
--- src/backend/slony1_funcs.sql
+++ src/backend/slony1_funcs.sql
@@ -1962,17 +1962,9 @@
 
 	-- On the new origin, raise an event - ACCEPT_SET
 	if v_local_node_id = p_new_origin then
-		-- Find the event number from the origin
-		select max(ev_seqno) as seqno into v_sub_row 
-			from @NAMESPACE at .sl_event
-			where ev_type = ''MOVE_SET'' and
-			  ev_data1 = p_set_id and
-			  ev_data2 = p_old_origin and
-			  ev_data3 = p_new_origin and
-			  ev_origin = p_old_origin;
 		
 		perform @NAMESPACE at .createEvent(''_ at CLUSTERNAME@'', ''ACCEPT_SET'', 
-			p_set_id, p_old_origin, p_new_origin, v_sub_row.seqno);
+			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.79
retrieving revision 1.80
diff -Lsrc/slon/remote_worker.c -Lsrc/slon/remote_worker.c -u -w -r1.79 -r1.80
--- src/slon/remote_worker.c
+++ src/slon/remote_worker.c
@@ -888,11 +888,15 @@
 			}
 			else if (strcmp(event->ev_type, "ACCEPT_SET") == 0)
 			{
+			    slon_log(SLON_DEBUG2, "start processing ACCEPT_SET\n");
 			    int set_id = (int) strtol(event->ev_data1, NULL, 10);
+			    slon_log(SLON_DEBUG2, "ACCEPT: set=%d\n", set_id);
 			    int old_origin = (int) strtol(event->ev_data2, NULL, 10);
+			    slon_log(SLON_DEBUG2, "ACCEPT: old origin=%d\n", old_origin);
 			    int new_origin = (int) strtol(event->ev_data3, NULL, 10);
-			    int seq_no = (int) strtol(event->ev_data4, NULL, 10);
+			    slon_log(SLON_DEBUG2, "ACCEPT: new origin=%d\n", new_origin);
 			    PGresult   *res;
+			    slon_log(SLON_DEBUG2, "got parms ACCEPT_SET\n");
 			    
 			    /* If we're a remote node, and haven't yet
 			     * received the MOVE_SET event from the
@@ -905,6 +909,7 @@
 			     * received and processed  */
 
 			    if ((rtcfg_nodeid != old_origin) && (rtcfg_nodeid != new_origin)) {
+				    slon_log(SLON_DEBUG2, "ACCEPT_SET - node not origin - wait...\n");
 				slon_mkquery(&query1, 
 					     "select 1 from %s.sl_event accept "
 					     "where "
@@ -913,7 +918,6 @@
 					     "   accept.ev_data1 = %d and "
 					     "   accept.ev_data2 = %d and "
 					     "   accept.ev_data3 = %d and "
-					     "   accept.ev_data4 = %d and "
 					     "   not exists  "
 					     "   (select 1 from %s.sl_event move "
 					     "    where "
@@ -921,12 +925,11 @@
 					     "      move.ev_type = 'MOVE_SET' and "
 					     "      move.ev_data1 = accept.ev_data1 and "
 					     "      move.ev_data2 = accept.ev_data2 and "
-					     "      move.ev_data3 = accept.ev_data3 and "
-					     "      move.ev_seqno = %d); ",
+						 "      move.ev_data3 = accept.ev_data3); ",
 					     
 					     rtcfg_namespace, 
-					     old_origin, set_id, old_origin, new_origin, seq_no,
-					     rtcfg_namespace, seq_no);
+						 old_origin, set_id, old_origin, new_origin,
+						 rtcfg_namespace);
 				res = PQexec(local_dbconn, dstring_data(&query1));
 				while (PQntuples(res) > 0) {
 				    int sleeptime = 15;
@@ -945,7 +948,10 @@
 				    }
 				    res = PQexec(local_dbconn, dstring_data(&query1));
 				}
+			    } else {
+				    slon_log(SLON_DEBUG2, "ACCEPT_SET - on origin node...\n");
 			    }
+			    slon_log(SLON_DEBUG2, "ACCEPT_SET - done...\n");
 			    
 			}
 			else if (strcmp(event->ev_type, "MOVE_SET") == 0)
Index: local_listen.c
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slon/local_listen.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -Lsrc/slon/local_listen.c -Lsrc/slon/local_listen.c -u -w -r1.30 -r1.31
--- src/slon/local_listen.c
+++ src/slon/local_listen.c
@@ -611,10 +611,22 @@
 				 * Nothing to do ATM
 				 */
 			}
+			else if (strcmp(ev_type, "ACCEPT_SET") == 0)
+			{
+				/*
+				 * ACCEPT_SET
+				 */
+				
+				/*
+				 * Nothing to do locally
+				 */
+				slon_log(SLON_DEBUG2, "localListenThread: ACCEPT_SET");
+				rtcfg_reloadListen(dbconn);
+			}
 			else
 			{
 				slon_log(SLON_FATAL,
-					  "localListenThread: event %s: Unknown event type %s\n",
+					 "localListenThread: event %s: Unknown event type: %s\n",
 						 rtcfg_lastevent, ev_type);
 				slon_abort();
 			}


More information about the Slony1-commit mailing list