Sending the patch to the list since GBorg munged it.

Due to some hardcoded values in remote_worker.c which override the
configuration file (max group size of 100) and a very slow group size
climb Slony can easily fall behind and never catch up again.

-- 
*** ./src/slon/remote_worker.c.orig	Fri Jan  6 12:07:47 2006
--- ./src/slon/remote_worker.c	Thu May  4 08:58:08 2006
***************
*** 435,441 ****
  		 */
  		if (strcmp(event->ev_type, "SYNC") == 0)
  		{
! 			SlonWorkMsg_event *sync_group[100];
  			int			sync_group_size;
  
  			int			seconds;
--- 435,441 ----
  		 */
  		if (strcmp(event->ev_type, "SYNC") == 0)
  		{
! 			SlonWorkMsg_event *sync_group[10000];
  			int			sync_group_size;
  
  			int			seconds;
***************
*** 454,461 ****
  			  /* Force last_sync_group_size to a reasonable range */
  				if (last_sync_group_size < 1)
  					last_sync_group_size = 1;
! 				if (last_sync_group_size > 100)
! 					last_sync_group_size = 1;
  
  				gettimeofday(&sync_end, NULL);
  				last_sync_length =
--- 454,461 ----
  			  /* Force last_sync_group_size to a reasonable range */
  				if (last_sync_group_size < 1)
  					last_sync_group_size = 1;
! 				if (last_sync_group_size > 10000)
! 					last_sync_group_size = 10000;
  
  				gettimeofday(&sync_end, NULL);
  				last_sync_length =
***************
*** 479,485 ****
  					} else {
  						ideal_sync = sync_group_maxsize;
  					}
! 					max_sync = ((last_sync_group_size * 110) / 100) + 1;
  					next_sync_group_size = ideal_sync;
  					if (next_sync_group_size > max_sync)
  						next_sync_group_size = max_sync;
--- 479,485 ----
  					} else {
  						ideal_sync = sync_group_maxsize;
  					}
! 					max_sync = ((last_sync_group_size * 200) / 100) + 1;
  					next_sync_group_size = ideal_sync;
  					if (next_sync_group_size > max_sync)
  						next_sync_group_size = max_sync;
_______________________________________________
Slony1-general mailing list
[email protected]
http://gborg.postgresql.org/mailman/listinfo/slony1-general

Reply via email to