Mon Apr 13 10:41:35 PDT 2009
- Previous message: [Slony1-commit] slony1-engine configure
- Next message: [Slony1-commit] slony1-www/content news.txt
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Update of /home/cvsd/slony1/slony1-engine/src/slonik
In directory main.slony.info:/tmp/cvs-serv30306
Modified Files:
Tag: REL_1_2_STABLE
slonik.c
Log Message:
Changed failover logic to not only look at direct subscribers.
Failover is still not flawless, but a lot better this way.
Jan
Index: slonik.c
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/src/slonik/slonik.c,v
retrieving revision 1.67.2.18
retrieving revision 1.67.2.19
diff -C2 -d -r1.67.2.18 -r1.67.2.19
*** slonik.c 5 Mar 2009 22:37:23 -0000 1.67.2.18
--- slonik.c 13 Apr 2009 17:41:33 -0000 1.67.2.19
***************
*** 2692,2696 ****
/*
! * For every set we're interested in lookup the direct subscriber nodes.
*/
for (i = 0; i < num_sets; i++)
--- 2692,2696 ----
/*
! * For every set we're interested in lookup the subscriber nodes.
*/
for (i = 0; i < num_sets; i++)
***************
*** 2706,2714 ****
" from \"_%s\".sl_subscribe "
" where sub_set = %d "
- " and sub_provider = %d "
" and sub_active and sub_forward; ",
stmt->hdr.script->clustername,
! setinfo[i].set_id,
! stmt->no_id);
res3 = db_exec_select((SlonikStmt *) stmt, adminfo1, &query);
--- 2706,2712 ----
" from \"_%s\".sl_subscribe "
" where sub_set = %d "
" and sub_active and sub_forward; ",
stmt->hdr.script->clustername,
! setinfo[i].set_id);
res3 = db_exec_select((SlonikStmt *) stmt, adminfo1, &query);
***************
*** 2754,2757 ****
--- 2752,2757 ----
* all other nodes.
*/
+ printf("INFO: calling failedNode(%d,%d) on node %d\n",
+ stmt->no_id, stmt->backup_node, stmt->no_id);
slon_mkquery(&query,
"select \"_%s\".failedNode(%d, %d); ",
***************
*** 2772,2775 ****
--- 2772,2777 ----
continue;
+ printf("INFO: calling failedNode(%d,%d) on node %d\n",
+ stmt->no_id, stmt->backup_node, nodeinfo[i].no_id);
if (db_exec_command((SlonikStmt *) stmt, nodeinfo[i].adminfo, &query) < 0)
{
***************
*** 2800,2803 ****
--- 2802,2806 ----
* restarted.
*/
+ printf("INFO: Waiting for slon engines to restart\n");
n = 0;
while (n < num_nodes)
***************
*** 2878,2882 ****
/*
! * For every set determine the direct subscriber with the highest applied
* sync, preferring the backup node.
*/
--- 2881,2885 ----
/*
! * For every set determine the subscriber with the highest applied
* sync, preferring the backup node.
*/
***************
*** 3005,3010 ****
--- 3008,3018 ----
}
+ printf("INFO: Node with highest sync for set %d is %d\n",
+ setinfo[i].set_id, use_node);
+
if (use_node != stmt->backup_node)
{
+ printf("INFO: switching node %d to temporarily receive set %d from node %d\n",
+ stmt->backup_node, setinfo[i].set_id, use_node);
slon_mkquery(&query,
"select \"_%s\".storeListen(%d,%d,%d); "
***************
*** 3026,3030 ****
/*
! * Now execute all FAILED_NODE events on the node that had the highest of
* all events alltogether.
*/
--- 3034,3038 ----
/*
! * Now execute all FAILED_NODE2 events on the node that had the highest of
* all events alltogether.
*/
- Previous message: [Slony1-commit] slony1-engine configure
- Next message: [Slony1-commit] slony1-www/content news.txt
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list