Hi, list,

I have a single master / single slave set up with Slony-I 1.2.11 and PG 8.2.
It has been running well for quite a long time until yesterday, when after
executing a DDL script on the master server, the replication broke. The DDL
script just added a column to a table in the replication set.

The slave log shows the following entries:

...
2009-01-15 13:03:48 GMT-8 DEBUG2 remoteListenThread_1: queue event 1,2517085
SYNC
2009-01-15 13:03:48 GMT-8 ERROR  remoteWorkerThread_1: "select
"_homemaster".ddlScript_prepare_int(1, -1); " PGRES_FATAL_ERROR ERROR:
Slony-I: alterTableRestore(): Table "
public"."department" is not in altered state
CONTEXT:  SQL statement "SELECT  "_homemaster".alterTableRestore( $1 )"
PL/pgSQL function "ddlscript_prepare_int" line 46 at perform
2009-01-15 13:03:48 GMT-8 ERROR  remoteWorkerThread_1: DDL preparation
failed - set 1 - only on node %
2009-01-15 13:03:48 GMT-8 DEBUG2 slon_retry() from pid=5981
2009-01-15 13:03:48 GMT-8 DEBUG1 slon: retry requested
2009-01-15 13:03:48 GMT-8 DEBUG2 slon: notify worker process to shutdown

"public"."department" is the first table in the replication set, but not the
table whose schema is modified. I browsed throught the code and found that
in dllscript_prepare_int, alterTableRestore is called on all tables in the
replication set, and in this function, the field "tab_altered" is checked to
see if the table is altered.

I found that in sl_table on the master node, the "tab_altered" field is set
to True for all tables, while on the slave node, it is set to False.

If the function alterTableRestore is run on the slave node, the False value
of the 'tab_altered' would cause the above error. But I don't know what
caused the error and how to fix it. Any information would be highly
appreciated. Thanks!

-- 
Hong Yuan

大管家网上建材超市
装修装潢建材一站式购物
http://www.homemaster.cn
_______________________________________________
Slony1-general mailing list
[email protected]
http://lists.slony.info/mailman/listinfo/slony1-general

Reply via email to