httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Jagielski <...@jaguNET.com>
Subject Re: [PATCH] LockFile Directive
Date Sun, 29 Jun 1997 01:17:07 GMT
Randy Terbush wrote:
> 
> You know, the though occurs to me that with multiple parent server 
> processes on the same machine, there is going to be unnecessary 
> lock contention. No?  I think that we should be generating a unique 
> lockfile name.

You're right... It should add the pid or something

> 
> 
> > What the hell...
> > 
> > 
> > Index: apache/src/http_conf_globals.h
> > ===================================================================
> > RCS file: /export/home/cvs/apache/src/http_conf_globals.h,v
> > retrieving revision 1.9
> > diff -c -r1.9 http_conf_globals.h
> > *** http_conf_globals.h	1997/01/01 18:10:16	1.9
> > --- http_conf_globals.h	1997/06/28 21:29:26
> > ***************
> > *** 72,77 ****
> > --- 72,78 ----
> >   
> >   extern char *pid_fname;
> >   extern char *scoreboard_fname;
> > + extern char *lock_fname;
> >   extern char *server_argv0;
> >   
> >   /* Trying to allocate these in the config pool gets us into some *nasty*
> > Index: apache/src/http_config.c
> > ===================================================================
> > RCS file: /export/home/cvs/apache/src/http_config.c,v
> > retrieving revision 1.49.2.1
> > diff -c -r1.49.2.1 http_config.c
> > *** http_config.c	1997/06/27 01:47:45	1.49.2.1
> > --- http_config.c	1997/06/28 21:29:27
> > ***************
> > *** 1040,1045 ****
> > --- 1040,1046 ----
> >       daemons_limit = HARD_SERVER_LIMIT;
> >       pid_fname = DEFAULT_PIDLOG;
> >       scoreboard_fname = DEFAULT_SCOREBOARD;
> > +     lock_fname = DEFAULT_LOCKFILE;
> >       max_requests_per_child = DEFAULT_MAX_REQUESTS_PER_CHILD;
> >       bind_address.s_addr = htonl(INADDR_ANY);
> >       listeners = NULL;
> > Index: apache/src/http_core.c
> > ===================================================================
> > RCS file: /export/home/cvs/apache/src/http_core.c,v
> > retrieving revision 1.81
> > diff -c -r1.81 http_core.c
> > *** http_core.c	1997/05/08 13:09:24	1.81
> > --- http_core.c	1997/06/28 21:29:28
> > ***************
> > *** 953,958 ****
> > --- 953,963 ----
> >       return NULL;
> >   }
> >   
> > + const char *set_lockfile (cmd_parms *cmd, void *dummy, char *arg) {
> > +     lock_fname = pstrdup (cmd->pool, arg);
> > +     return NULL;
> > + }
> > + 
> >   const char *set_idcheck (cmd_parms *cmd, core_dir_config *d, int arg) {
> >       d->do_rfc1413 = arg;
> >       return NULL;
> > ***************
> > *** 1202,1207 ****
> > --- 1207,1214 ----
> >       "A file for logging the server process ID"},
> >   { "ScoreBoardFile", set_scoreboard, NULL, RSRC_CONF, TAKE1,
> >       "A file for Apache to maintain runtime process management information"},
> > + { "LockFile", set_lockfile, NULL, RSRC_CONF, TAKE1,
> > +     "The lockfile used when Apache needs to lock the accept() call"},
> >   { "AccessConfig", set_server_string_slot,
> >     (void *)XtOffsetOf (server_rec, access_confname), RSRC_CONF, TAKE1,
> >     "The filename of the access config file" },
> > Index: apache/src/http_main.c
> > ===================================================================
> > RCS file: /export/home/cvs/apache/src/http_main.c,v
> > retrieving revision 1.149.2.3
> > diff -c -r1.149.2.3 http_main.c
> > *** http_main.c	1997/06/27 02:31:14	1.149.2.3
> > --- http_main.c	1997/06/28 21:29:30
> > ***************
> > *** 138,143 ****
> > --- 138,144 ----
> >   int max_requests_per_child;
> >   char *pid_fname;
> >   char *scoreboard_fname;
> > + char *lock_fname;
> >   char *server_argv0;
> >   struct in_addr bind_address;
> >   listen_rec *listeners;
> > ***************
> > *** 194,200 ****
> >   void
> >   accept_mutex_init(pool *p)
> >       {
> > -     char lock_fname[256];
> >   
> >       lock_it.l_whence = SEEK_SET;   /* from current point */
> >       lock_it.l_start  = 0;          /* -"- */
> > --- 195,200 ----
> > ***************
> > *** 207,225 ****
> >       unlock_it.l_type   = F_UNLCK;  /* set exclusive/write lock */
> >       unlock_it.l_pid    = 0;        /* pid not actually interesting */
> >   
> > ! #ifdef __MACHTEN__
> > !     strncpy(lock_fname, "/var/tmp/htlock.XXXXXX", sizeof(lock_fname)-1);
> > ! #else
> > !     strncpy(lock_fname, "/usr/tmp/htlock.XXXXXX", sizeof(lock_fname)-1);
> > ! #endif
> > !     lock_fname[sizeof(lock_fname)-1] = '\0';
> > ! 
> > !     if (mktemp(lock_fname) == NULL || lock_fname[0] == '\0')
> > !     {
> > ! 	fprintf (stderr, "Cannot assign name to lock file!\n");
> > ! 	exit (1);
> > !     }
> > ! 
> >       lock_fd = popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0644);
> >       if (lock_fd == -1)
> >       {
> > --- 207,213 ----
> >       unlock_it.l_type   = F_UNLCK;  /* set exclusive/write lock */
> >       unlock_it.l_pid    = 0;        /* pid not actually interesting */
> >   
> > !     lock_fname = server_root_relative (p, lock_fname);
> >       lock_fd = popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0644);
> >       if (lock_fd == -1)
> >       {
> > ***************
> > *** 264,280 ****
> >   void
> >   accept_mutex_init(pool *p)
> >   {
> > -     char lock_fname[256];
> > - 
> > -     strncpy(lock_fname, "/usr/tmp/htlock.XXXXXX", sizeof(lock_fname)-1);
> > -     lock_fname[sizeof(lock_fname)-1] = '\0';
> > -     
> > -     if (mktemp(lock_fname) == NULL || lock_fname[0] == '\0')
> > -     {
> > - 	fprintf (stderr, "Cannot assign name to lock file!\n");
> > - 	exit (1);
> > -     }
> >   
> >       lock_fd = popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0644);
> >       if (lock_fd == -1)
> >       {
> > --- 252,259 ----
> >   void
> >   accept_mutex_init(pool *p)
> >   {
> >   
> > +     lock_fname = server_root_relative (p, lock_fname);
> >       lock_fd = popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0644);
> >       if (lock_fd == -1)
> >       {
> > Index: apache/src/httpd.h
> > ===================================================================
> > RCS file: /export/home/cvs/apache/src/httpd.h,v
> > retrieving revision 1.111.2.1
> > diff -c -r1.111.2.1 httpd.h
> > *** httpd.h	1997/06/27 01:47:47	1.111.2.1
> > --- httpd.h	1997/06/28 21:29:31
> > ***************
> > *** 126,131 ****
> > --- 126,132 ----
> >   #endif
> >   #define DEFAULT_PIDLOG "logs/httpd.pid"
> >   #define DEFAULT_SCOREBOARD "logs/apache_runtime_status"
> > + #define DEFAULT_LOCKFILE "logs/accept.lock"
> >   
> >   /* Define this to be what your HTML directory content files are called */
> >   #define DEFAULT_INDEX "index.html"
> > -- 
> > ====================================================================
> >       Jim Jagielski            |       jaguNET Access Services
> >      jim@jaguNET.com           |       http://www.jaguNET.com/
> >             "Look at me! I'm wearing a cardboard belt!"
> 
> 
> 
> 


-- 
====================================================================
      Jim Jagielski            |       jaguNET Access Services
     jim@jaguNET.com           |       http://www.jaguNET.com/
            "Look at me! I'm wearing a cardboard belt!"

Mime
View raw message