You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rb...@locus.apache.org on 2000/07/31 03:39:55 UTC

cvs commit: apache-2.0/src/modules/mpm/perchild mpm.h perchild.c scoreboard.c scoreboard.h

rbb         00/07/30 18:39:55

  Modified:    src      CHANGES
               src/modules/mpm/dexter dexter.c scoreboard.c scoreboard.h
               src/modules/mpm/mpmt_pthread mpmt_pthread.c scoreboard.c
                        scoreboard.h
               src/modules/mpm/perchild mpm.h perchild.c scoreboard.c
                        scoreboard.h
  Log:
  Make the Unix MPMs not clean the scoreboard on a graceful restart.  This
  compiles, but it hasn't actually been tested yet.
  
  Revision  Changes    Path
  1.186     +4 -0      apache-2.0/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/CHANGES,v
  retrieving revision 1.185
  retrieving revision 1.186
  diff -u -r1.185 -r1.186
  --- CHANGES	2000/07/29 03:08:12	1.185
  +++ CHANGES	2000/07/31 01:39:51	1.186
  @@ -1,4 +1,8 @@
   Changes with Apache 2.0a5
  +  *) Make dexter, mpmt_pthread, and perchild MPMs not destroy the
  +     scoreboard on graceful restarts.
  +     [Ryan Bloom]
  +
     *) Fix segfault/SIGSEGV when running gzip from mod_mime_magic.c.
        An invalid ap_proc_t was passed to ap_create_process().
        [Jeff Trawick]
  
  
  
  1.118     +4 -1      apache-2.0/src/modules/mpm/dexter/dexter.c
  
  Index: dexter.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/dexter/dexter.c,v
  retrieving revision 1.117
  retrieving revision 1.118
  diff -u -r1.117 -r1.118
  --- dexter.c	2000/07/30 11:49:28	1.117
  +++ dexter.c	2000/07/31 01:39:51	1.118
  @@ -249,7 +249,7 @@
   }
   
   /* do a graceful restart if graceful == 1 */
  -void ap_start_restart(int graceful)
  +static void ap_start_restart(int graceful)
   {
   
       if (restart_pending == 1) {
  @@ -258,6 +258,9 @@
       }
       restart_pending = 1;
       is_graceful = graceful;
  +    if (is_graceful) {
  +        ap_kill_cleanup(pconf, NULL, ap_cleanup_shared_mem);
  +    }
   }
   
   static void sig_term(int sig)
  
  
  
  1.20      +2 -2      apache-2.0/src/modules/mpm/dexter/scoreboard.c
  
  Index: scoreboard.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/dexter/scoreboard.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- scoreboard.c	2000/07/26 18:07:34	1.19
  +++ scoreboard.c	2000/07/31 01:39:51	1.20
  @@ -88,7 +88,7 @@
   
   static ap_shmem_t *scoreboard_shm = NULL;
   
  -static ap_status_t cleanup_shared_mem(void *d)
  +ap_status_t ap_cleanup_shared_mem(void *d)
   {
       ap_shm_free(scoreboard_shm, ap_scoreboard_image);
       ap_scoreboard_image = NULL;
  @@ -116,7 +116,7 @@
           ap_shm_destroy(scoreboard_shm);
           exit(APEXIT_INIT);
       }
  -    ap_register_cleanup(p, NULL, cleanup_shared_mem, ap_null_cleanup);
  +    ap_register_cleanup(p, NULL, ap_cleanup_shared_mem, ap_null_cleanup);
   }
   
   void reinit_scoreboard(ap_pool_t *p)
  
  
  
  1.10      +2 -0      apache-2.0/src/modules/mpm/dexter/scoreboard.h
  
  Index: scoreboard.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/dexter/scoreboard.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- scoreboard.h	2000/06/21 23:00:03	1.9
  +++ scoreboard.h	2000/07/31 01:39:51	1.10
  @@ -100,6 +100,8 @@
   
   API_VAR_EXPORT extern const char *ap_scoreboard_fname;
   
  +ap_status_t ap_cleanup_shared_mem(void *d);
  +
   #ifdef __cplusplus
   }
   #endif
  
  
  
  1.114     +4 -1      apache-2.0/src/modules/mpm/mpmt_pthread/mpmt_pthread.c
  
  Index: mpmt_pthread.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/mpmt_pthread/mpmt_pthread.c,v
  retrieving revision 1.113
  retrieving revision 1.114
  diff -u -r1.113 -r1.114
  --- mpmt_pthread.c	2000/07/29 16:24:12	1.113
  +++ mpmt_pthread.c	2000/07/31 01:39:54	1.114
  @@ -246,7 +246,7 @@
   }
   
   /* do a graceful restart if graceful == 1 */
  -void ap_start_restart(int graceful)
  +static void ap_start_restart(int graceful)
   {
   
       if (restart_pending == 1) {
  @@ -255,6 +255,9 @@
       }
       restart_pending = 1;
       is_graceful = graceful;
  +    if (is_graceful) {
  +        ap_kill_cleanup(pconf, NULL, ap_cleanup_shared_mem);
  +    }
   }
   
   static void sig_term(int sig)
  
  
  
  1.37      +2 -2      apache-2.0/src/modules/mpm/mpmt_pthread/scoreboard.c
  
  Index: scoreboard.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/mpmt_pthread/scoreboard.c,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- scoreboard.c	2000/07/22 03:36:21	1.36
  +++ scoreboard.c	2000/07/31 01:39:54	1.37
  @@ -90,7 +90,7 @@
   
   static ap_shmem_t *scoreboard_shm = NULL;
   
  -static ap_status_t cleanup_shared_mem(void *d)
  +ap_status_t ap_cleanup_shared_mem(void *d)
   {
       ap_shm_free(scoreboard_shm, ap_scoreboard_image);
       ap_scoreboard_image = NULL;
  @@ -120,7 +120,7 @@
           ap_shm_destroy(scoreboard_shm);
           exit(APEXIT_INIT);
       }
  -    ap_register_cleanup(p, NULL, cleanup_shared_mem, ap_null_cleanup);
  +    ap_register_cleanup(p, NULL, ap_cleanup_shared_mem, ap_null_cleanup);
       ap_scoreboard_image->global.running_generation = 0;
   }
   
  
  
  
  1.20      +1 -1      apache-2.0/src/modules/mpm/mpmt_pthread/scoreboard.h
  
  Index: scoreboard.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/mpmt_pthread/scoreboard.h,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- scoreboard.h	2000/06/21 23:04:02	1.19
  +++ scoreboard.h	2000/07/31 01:39:54	1.20
  @@ -211,7 +211,7 @@
   
   API_EXPORT(int) ap_exists_scoreboard_image(void);
   void reinit_scoreboard(ap_pool_t *p);
  -void cleanup_scoreboard(void);
  +ap_status_t ap_cleanup_shared_mem(void *d);
   API_EXPORT(void) ap_sync_scoreboard_image(void);
   void ap_mpmt_pthread_force_reset_connection_status(long conn_id);
   
  
  
  
  1.3       +1 -1      apache-2.0/src/modules/mpm/perchild/mpm.h
  
  Index: mpm.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/perchild/mpm.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- mpm.h	2000/07/30 12:03:47	1.2
  +++ mpm.h	2000/07/31 01:39:54	1.3
  @@ -66,7 +66,7 @@
   #define PERCHILD_MPM
   
   #define MPM_NEEDS_RECLAIM_CHILD_PROCESSES 1
  -#define MPM_SYNC_CHILD_TABLE() (ap_sync_scoreboard_image())
  +#define MPM_SYNC_CHILD_TABLE()
   #define MPM_CHILD_PID(i) (ap_child_table[i].pid)
   #define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0)
   
  
  
  
  1.8       +4 -1      apache-2.0/src/modules/mpm/perchild/perchild.c
  
  Index: perchild.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/perchild/perchild.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- perchild.c	2000/07/30 11:49:29	1.7
  +++ perchild.c	2000/07/31 01:39:54	1.8
  @@ -282,7 +282,7 @@
   }
   
   /* do a graceful restart if graceful == 1 */
  -void ap_start_restart(int graceful)
  +static void ap_start_restart(int graceful)
   {
   
       if (restart_pending == 1) {
  @@ -291,6 +291,9 @@
       }
       restart_pending = 1;
       is_graceful = graceful;
  +    if (is_graceful) {
  +        ap_kill_cleanup(pconf, NULL, ap_cleanup_shared_mem);
  +    }
   }
   
   static void sig_term(int sig)
  
  
  
  1.2       +2 -2      apache-2.0/src/modules/mpm/perchild/scoreboard.c
  
  Index: scoreboard.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/perchild/scoreboard.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- scoreboard.c	2000/07/27 00:16:32	1.1
  +++ scoreboard.c	2000/07/31 01:39:54	1.2
  @@ -88,7 +88,7 @@
   
   static ap_shmem_t *scoreboard_shm = NULL;
   
  -static ap_status_t cleanup_shared_mem(void *d)
  +ap_status_t ap_cleanup_shared_mem(void *d)
   {
       ap_shm_free(scoreboard_shm, ap_scoreboard_image);
       ap_scoreboard_image = NULL;
  @@ -116,7 +116,7 @@
           ap_shm_destroy(scoreboard_shm);
           exit(APEXIT_INIT);
       }
  -    ap_register_cleanup(p, NULL, cleanup_shared_mem, ap_null_cleanup);
  +    ap_register_cleanup(p, NULL, ap_cleanup_shared_mem, ap_null_cleanup);
   }
   
   void reinit_scoreboard(ap_pool_t *p)
  
  
  
  1.2       +1 -0      apache-2.0/src/modules/mpm/perchild/scoreboard.h
  
  Index: scoreboard.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/mpm/perchild/scoreboard.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- scoreboard.h	2000/07/27 00:16:32	1.1
  +++ scoreboard.h	2000/07/31 01:39:54	1.2
  @@ -99,6 +99,7 @@
   #define SCOREBOARD_SIZE		sizeof(scoreboard)
   
   API_VAR_EXPORT extern const char *ap_scoreboard_fname;
  +ap_status_t ap_cleanup_shared_mem(void *d);
   
   #ifdef __cplusplus
   }