Thu Feb 17 23:42:15 PST 2005
- Previous message: [Slony1-commit] By wieck: First cut on the log shipping mechanism.
- Next message: [Slony1-commit] By cbbrowne: Fix some misspellings
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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 */
- Previous message: [Slony1-commit] By wieck: First cut on the log shipping mechanism.
- Next message: [Slony1-commit] By cbbrowne: Fix some misspellings
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list