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