You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by tr...@apache.org on 2003/12/13 23:18:13 UTC

cvs commit: httpd-2.0/server log.c

trawick     2003/12/13 14:18:13

  Modified:    .        CHANGES
               server   log.c
  Log:
  Fix some piped log problems: bogus "piped log program '(null)'
  failed" messages during restart and problem with the logger
  respawning again after Apache is stopped.
  
  PR:                21648, 24805
  
  Revision  Changes    Path
  1.1342    +5 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.1341
  retrieving revision 1.1342
  diff -u -r1.1341 -r1.1342
  --- CHANGES	12 Dec 2003 17:03:58 -0000	1.1341
  +++ CHANGES	13 Dec 2003 22:18:13 -0000	1.1342
  @@ -2,6 +2,11 @@
   
     [Remove entries to the current 2.0 section below, when backported]
   
  +  *) Fix some piped log problems: bogus "piped log program '(null)'
  +     failed" messages during restart and problem with the logger
  +     respawning again after Apache is stopped.  PR 21648, PR 24805.
  +     [Jeff Trawick]
  +
     *) Add a hook (insert_error_filter) to allow filters to re-insert
        themselves during processing of error responses. Enable mod_expires
        to use the new hook to include Expires headers in valid error
  
  
  
  1.137     +24 -15    httpd-2.0/server/log.c
  
  Index: log.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/server/log.c,v
  retrieving revision 1.136
  retrieving revision 1.137
  diff -u -r1.136 -r1.137
  --- log.c	24 Nov 2003 21:34:38 -0000	1.136
  +++ log.c	13 Dec 2003 22:18:13 -0000	1.137
  @@ -91,6 +91,7 @@
   #include "http_log.h"
   #include "http_main.h"
   #include "util_time.h"
  +#include "ap_mpm.h"
   
   typedef struct {
       char    *t_name;
  @@ -796,26 +797,34 @@
   {
       piped_log *pl = data;
       apr_status_t stats;
  +    int mpm_state;
   
       switch (reason) {
       case APR_OC_REASON_DEATH:
       case APR_OC_REASON_LOST:
  -        ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL,
  -                     "piped log program '%s' failed unexpectedly",
  -                     pl->program);
  -        pl->pid = NULL;
  +        pl->pid = NULL; /* in case we don't get it going again, this
  +                         * tells other logic not to try to kill it
  +                         */
           apr_proc_other_child_unregister(pl);
  -        if (pl->program == NULL) {
  -            /* during a restart */
  -            break;
  -        }
  -        if ((stats = piped_log_spawn(pl)) != APR_SUCCESS) {
  -            /* what can we do?  This could be the error log we're having
  -             * problems opening up... */
  -            char buf[120];
  +        stats = ap_mpm_query(AP_MPMQ_MPM_STATE, &mpm_state);
  +        if (stats != APR_SUCCESS) {
               ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL,
  -                         "piped_log_maintenance: unable to respawn '%s': %s",
  -                         pl->program, apr_strerror(stats, buf, sizeof(buf)));
  +                         "can't query MPM state; not restarting "
  +                         "piped log program '%s'",
  +                         pl->program);
  +        }
  +        else if (mpm_state != AP_MPMQ_STOPPING) {
  +            ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL,
  +                         "piped log program '%s' failed unexpectedly",
  +                         pl->program);
  +            if ((stats = piped_log_spawn(pl)) != APR_SUCCESS) {
  +                /* what can we do?  This could be the error log we're having
  +                 * problems opening up... */
  +                char buf[120];
  +                ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL,
  +                             "piped_log_maintenance: unable to respawn '%s': %s",
  +                             pl->program, apr_strerror(stats, buf, sizeof(buf)));
  +            }
           }
           break;
   
  @@ -825,9 +834,9 @@
       break;
   
       case APR_OC_REASON_RESTART:
  -        pl->program = NULL;
           if (pl->pid != NULL) {
               apr_proc_kill(pl->pid, SIGTERM);
  +            pl->pid = NULL;
           }
           break;