CVS User Account cvsuser
Thu Feb 17 23:42:15 PST 2005
Log Message:
-----------
1.  Added DocBook documentation for "-a" slon option that writes log shipping 
    files

2.  Added docs for "-a" option to slon runtime

3.  Added SLON_MAX_PATH #define

4.  Macro for TERMINATE_QUERY_AND_ARCHIVE;  (This one may be dubious.)

Modified Files:
--------------
    slony1-engine/doc/adminguide:
        slon.sgml (r1.10 -> r1.11)
    slony1-engine/src/slon:
        remote_worker.c (r1.72 -> r1.73)
        slon.c (r1.43 -> r1.44)
        slon.h (r1.43 -> r1.44)

-------------- next part --------------
Index: slon.sgml
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/doc/adminguide/slon.sgml,v
retrieving revision 1.10
retrieving revision 1.11
diff -Ldoc/adminguide/slon.sgml -Ldoc/adminguide/slon.sgml -u -w -r1.10 -r1.11
--- doc/adminguide/slon.sgml
+++ doc/adminguide/slon.sgml
@@ -226,6 +226,15 @@
      </para>
     </listitem>
    </varlistentry>
+   <varlistentry>
+    <term><option>-a</option><replaceable class="parameter">archive directory</replaceable></term>
+    <listitem>
+     <para>
+      Directory in which to place a sequence of SYNC archive files for
+      use in <quote>log shipping</quote> mode.
+     </para>
+    </listitem>
+   </varlistentry>
   </variablelist>
  </refsect1>
  <refsect1>
Index: remote_worker.c
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slon/remote_worker.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -Lsrc/slon/remote_worker.c -Lsrc/slon/remote_worker.c -u -w -r1.72 -r1.73
--- src/slon/remote_worker.c
+++ src/slon/remote_worker.c
@@ -240,6 +240,7 @@
 		   WorkerGroupData * wd, SlonWorkMsg_event * event);
 static void *sync_helper(void *cdata);
 
+#define TERMINATE_QUERY_AND_ARCHIVE dstring_free(&query); if (archive_fp) { fclose(archive_fp); unlink(archive_tmp); }
 
 /*
  * ---------- slon_remoteWorkerThread
@@ -281,7 +282,7 @@
 	wd->workgroup_status = SLON_WG_IDLE;
 	wd->node = node;
 
-	wd->tab_fqname_size = 1024;
+	wd->tab_fqname_size = SLON_MAX_PATH
 	wd->tab_fqname = (char **)malloc(sizeof(char *) * wd->tab_fqname_size);
 	memset(wd->tab_fqname, 0, sizeof(char *) * wd->tab_fqname_size);
 	wd->tab_forward = malloc(wd->tab_fqname_size);
@@ -2938,9 +2939,8 @@
 	SlonDString query;
 	SlonDString *provider_qual;
 
-	/* FIXME: must determine and use OS specific max path length */
-	char		archive_name[1024];
-	char		archive_tmp[1024];
+	char		archive_name[SLON_MAX_PATH];
+	char		archive_tmp[SLON_MAX_PATH];
 	FILE	   *archive_fp = NULL;
 
 	gettimeofday(&tv_start, NULL);
@@ -2993,12 +2993,7 @@
 				slon_log(SLON_ERROR, "remoteWorkerThread_%d: "
 						 "No pa_conninfo for data provider %d\n",
 						 node->no_id, provider->no_id);
-				dstring_free(&query);
-				if (archive_fp)
-				{
-					fclose(archive_fp);
-					unlink(archive_tmp);
-				}
+				TERMINATE_QUERY_AND_ARCHIVE;
 				return 10;
 			}
 			sprintf(conn_symname, "subscriber_%d_provider_%d",
@@ -3011,12 +3006,7 @@
 						 "cannot connect to data provider %d on '%s'\n",
 						 node->no_id, provider->no_id,
 						 provider->pa_conninfo);
-				dstring_free(&query);
-				if (archive_fp)
-				{
-					fclose(archive_fp);
-					unlink(archive_tmp);
-				}
+				TERMINATE_QUERY_AND_ARCHIVE;
 				return provider->pa_connretry;
 			}
 
@@ -3028,12 +3018,7 @@
 						 rtcfg_cluster_name, rtcfg_nodeid);
 			if (query_execute(node, provider->conn->dbconn, &query) < 0)
 			{
-				dstring_free(&query);
-				if (archive_fp)
-				{
-					fclose(archive_fp);
-					unlink(archive_tmp);
-				}
+				TERMINATE_QUERY_AND_ARCHIVE;
 				slon_disconnectdb(provider->conn);
 				provider->conn = NULL;
 				return provider->pa_connretry;
@@ -3069,12 +3054,7 @@
 						 "for ev_origin %d\n",
 						 node->no_id, provider->no_id,
 						 event->ev_origin);
-				dstring_free(&query);
-				if (archive_fp)
-				{
-					fclose(archive_fp);
-					unlink(archive_tmp);
-				}
+				TERMINATE_QUERY_AND_ARCHIVE;
 				return 10;
 			}
 			if (prov_seqno < event->ev_seqno)
@@ -3084,12 +3064,7 @@
 						 "ev_seqno " INT64_FORMAT " for ev_origin %d\n",
 						 node->no_id, provider->no_id,
 						 prov_seqno, event->ev_origin);
-				dstring_free(&query);
-				if (archive_fp)
-				{
-					fclose(archive_fp);
-					unlink(archive_tmp);
-				}
+				TERMINATE_QUERY_AND_ARCHIVE;
 				return 10;
 			}
 			slon_log(SLON_DEBUG2, "remoteWorkerThread_%d: "
@@ -3155,12 +3130,7 @@
 					 PQresultErrorMessage(res1));
 			PQclear(res1);
 			dstring_free(&new_qual);
-			dstring_free(&query);
-			if (archive_fp)
-			{
-				fclose(archive_fp);
-				unlink(archive_tmp);
-			}
+			TERMINATE_QUERY_AND_ARCHIVE;
 			return 60;
 		}
 
@@ -3206,12 +3176,7 @@
 				PQclear(res2);
 				PQclear(res1);
 				dstring_free(&new_qual);
-				dstring_free(&query);
-				if (archive_fp)
-				{
-					fclose(archive_fp);
-					unlink(archive_tmp);
-				}
+				TERMINATE_QUERY_AND_ARCHIVE;
 				return 60;
 			}
 			ntuples2 = PQntuples(res2);
@@ -3560,12 +3525,7 @@
 	 */
 	if (num_errors != 0)
 	{
-		dstring_free(&query);
-		if (archive_fp)
-		{
-			fclose(archive_fp);
-			unlink(archive_tmp);
-		}
+		TERMINATE_QUERY_AND_ARCHIVE;
 		slon_log(SLON_ERROR, "remoteWorkerThread_%d: SYNC aborted\n",
 				 node->no_id);
 		return 10;
@@ -3602,12 +3562,7 @@
 					 node->no_id, dstring_data(&query),
 					 PQresultErrorMessage(res1));
 			PQclear(res1);
-			dstring_free(&query);
-			if (archive_fp)
-			{
-				fclose(archive_fp);
-				unlink(archive_tmp);
-			}
+			TERMINATE_QUERY_AND_ARCHIVE;
 			slon_disconnectdb(provider->conn);
 			provider->conn = NULL;
 			return 20;
@@ -3625,12 +3580,7 @@
 			if (query_execute(node, local_dbconn, &query) < 0)
 			{
 				PQclear(res1);
-				dstring_free(&query);
-				if (archive_fp)
-				{
-					fclose(archive_fp);
-					unlink(archive_tmp);
-				}
+				TERMINATE_QUERY_AND_ARCHIVE;
 				return 60;
 			}
 
@@ -3698,12 +3648,7 @@
 					 node->no_id, dstring_data(&query),
 					 PQresultErrorMessage(res1));
 			PQclear(res1);
-			dstring_free(&query);
-			if (archive_fp)
-			{
-				fclose(archive_fp);
-				unlink(archive_tmp);
-			}
+			TERMINATE_QUERY_AND_ARCHIVE;
 			slon_log(SLON_ERROR, "remoteWorkerThread_%d: SYNC aborted\n",
 					 node->no_id);
 			return 10;
@@ -3721,12 +3666,7 @@
 					 rtcfg_cluster_name, provider->no_id);
 		if (query_execute(node, local_dbconn, &query) < 0)
 		{
-			dstring_free(&query);
-			if (archive_fp)
-			{
-				fclose(archive_fp);
-				unlink(archive_tmp);
-			}
+			TERMINATE_QUERY_AND_ARCHIVE;
 			return 60;
 		}
 	}
@@ -3749,12 +3689,7 @@
 				 node->no_id, dstring_data(&query),
 				 PQresultErrorMessage(res1));
 		PQclear(res1);
-		dstring_free(&query);
-		if (archive_fp)
-		{
-			fclose(archive_fp);
-			unlink(archive_tmp);
-		}
+		TERMINATE_QUERY_AND_ARCHIVE;
 		return 60;
 	}
 	if (PQntuples(res1) > 0)
@@ -3768,12 +3703,7 @@
 		if (query_execute(node, local_dbconn, &query) < 0)
 		{
 			PQclear(res1);
-			dstring_free(&query);
-			if (archive_fp)
-			{
-				fclose(archive_fp);
-				unlink(archive_tmp);
-			}
+			TERMINATE_QUERY_AND_ARCHIVE;
 			return 60;
 		}
 		slon_log(SLON_DEBUG2, "remoteWorkerThread_%d: "
Index: slon.c
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slon/slon.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -Lsrc/slon/slon.c -Lsrc/slon/slon.c -u -w -r1.43 -r1.44
--- src/slon/slon.c
+++ src/slon/slon.c
@@ -193,6 +193,7 @@
 		fprintf(stderr, "    -c <num>              how often to vaccum in cleanup cycles\n");
 		fprintf(stderr, "    -p <filename>         slon pid file\n");
 		fprintf(stderr, "    -f <filename>         slon configuration file\n");
+		fprintf(stderr, "    -a <directory>        directory to store SYNC archive files\n");
 		return 1;
 	}
 
Index: slon.h
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slon/slon.h,v
retrieving revision 1.43
retrieving revision 1.44
diff -Lsrc/slon/slon.h -Lsrc/slon/slon.h -u -w -r1.43 -r1.44
--- src/slon/slon.h
+++ src/slon/slon.h
@@ -40,6 +40,13 @@
 #define SLON_WORKLINES_PER_HELPER	(SLON_DATA_FETCH_SIZE * 50)
 #endif
 
+#define SLON_MAX_PATH 1024
+/* Maximum path length - set to 1024, consistent with PostgreSQL */
+/* See: http://archives.postgresql.org/pgsql-hackers/1999-10/msg00754.php */
+/* Also  view src/include/pg_config.h.win32 src/include/pg_config_manual.h */
+
+	/* FIXME: must determine and use OS specific max path length */
+	/* cbb: Not forcibly necessary; note that MAXPGPATH is 1024 */
 
 #define SLON_CLEANUP_SLEEP			600 /* sleep 10 minutes between */
  /* cleanup calls */


More information about the Slony1-commit mailing list