Erik G. Burrows erik
Sat Jul 10 20:13:34 PDT 2004
Sure, no problem. For my education, what made changing argv a headache?

-Erik

> On 7/10/2004 1:47 PM, Erik G. Burrows wrote:
> 
> > I've only been using Slony-I for a few days, but I already love it! It's
> > going to make database migrations and upgrades much, much easier.
> > However, I didn't like the fact that the PostgreSQL connection string
> > passed to the slon process shows up in 'ps' output.
> > 
> > Attached is my patch to slon.c to erase the argv entry with the
> > connection string after slon finishes processing it's arguments, and
> > restore it in case of a restart. I'm not sure how portable this fix is,
> > but it should work on most *nix platforms, I think. I hope you find it
> > useful.
> 
> We know from the PostgreSQL main project how much of a headache mucking 
> with the commandline arguments is. I would much more prefer changing the 
> slony commandline into taking a filename argument where to find all the 
> configuration parameters that are now passed with switches. Would you be 
> willing to rework it into something like that?
> 
> 
> Jan
> 
> > 
> > Thanks,
> >   Erik G. Burrows
> > 
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > Index: slon.c
> > ===================================================================
> > RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slon/slon.c,v
> > retrieving revision 1.27
> > diff -c -r1.27 slon.c
> > *** slon.c	8 Jun 2004 15:15:49 -0000	1.27
> > --- slon.c	10 Jul 2004 17:35:14 -0000
> > ***************
> > *** 52,57 ****
> > --- 52,58 ----
> >   static char *const	   *main_argv;
> >   static void				sigalrmhandler(int signo);
> >   
> > + int			conn_param_argv_idx;
> >   
> >   /* ----------
> >    * main
> > ***************
> > *** 174,179 ****
> > --- 175,187 ----
> >   	rtcfg_conninfo = (char *)argv[++optind];
> >   
> >   	/*
> > + 	 * Remove the connection params from argv, so as not to show up in 'ps' listings, but save
> > + 	 * it's position within the argv array, as we'll need to put it back in the case of a restart.
> > + 	 */
> > + 	conn_param_argv_idx = optind;
> > + 	bzero((char *)argv[conn_param_argv_idx], strlen((char *)argv[conn_param_argv_idx]));
> > + 
> > + 	/*
> >   	 * Connect to the local database for reading the initial configuration
> >   	 */
> >   	startup_conn = PQconnectdb(rtcfg_conninfo);
> > ***************
> > *** 520,525 ****
> > --- 528,537 ----
> >   	if (slon_restart_request)
> >   	{
> >   		slon_log(SLON_DEBUG1, "main: restart requested\n");
> > + 
> > + 		/* Put the connection param argv element back */
> > + 		strcpy(argv[conn_param_argv_idx], rtcfg_conninfo);
> > + 
> >   		execvp(argv[0], argv);
> >   		slon_log(SLON_FATAL,
> >   				"main: cannot restart via execvp(): %s\n", strerror(errno));
> > ***************
> > *** 551,556 ****
> > --- 563,571 ----
> >   		slon_log(SLON_WARN, "main: shutdown timeout\n");
> >   		if (slon_restart_request)
> >   		{
> > + 			/* Put the connection param argv element back */
> > + 			strcpy(main_argv[conn_param_argv_idx], rtcfg_conninfo);
> > + 
> >   			execvp(main_argv[0], main_argv);
> >   			slon_log(SLON_FATAL,
> >   				"main: cannot restart via execvp(): %s\n", strerror(errno));
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > _______________________________________________
> > Slony1-general mailing list
> > Slony1-general at gborg.postgresql.org
> > http://gborg.postgresql.org/mailman/listinfo/slony1-general
-- 
Erik G. Burrows - KG6HEA                          www.erikburrows.com
PGP Key: http://www.erikburrows.com/files/erik.erikburrows.com.pgpkey



More information about the Slony1-general mailing list