]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
mod_status: note stopping procs in async info table
authorStefan Fritsch <sf@apache.org>
Sat, 20 Aug 2016 20:21:39 +0000 (20:21 +0000)
committerStefan Fritsch <sf@apache.org>
Sat, 20 Aug 2016 20:21:39 +0000 (20:21 +0000)
* add new column "stopping", denoting if a process is shutting down
* add additional "(old gen)", if a process is from before a graceful reload
* add counts of processes and stopping processes to summary line

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1757029 13f79535-47bb-0310-9956-ffa450edef68

modules/generators/mod_status.c

index 00fc3d47ce67ec5874c44ec12f63195375085cad..44996c6ba9eea115622fbed9767596d84ac0e98d 100644 (file)
@@ -531,7 +531,7 @@ static int status_handler(request_rec *r)
 
     if (is_async) {
         int write_completion = 0, lingering_close = 0, keep_alive = 0,
-            connections = 0;
+            connections = 0, stopping = 0, procs = 0;
         /*
          * These differ from 'busy' and 'ready' in how gracefully finishing
          * threads are counted. XXX: How to make this clear in the html?
@@ -541,6 +541,7 @@ static int status_handler(request_rec *r)
             ap_rputs("\n\n<table rules=\"all\" cellpadding=\"1%\">\n"
                      "<tr><th rowspan=\"2\">Slot</th>"
                          "<th rowspan=\"2\">PID</th>"
+                         "<th rowspan=\"2\">Stopping</th>"
                          "<th colspan=\"2\">Connections</th>\n"
                          "<th colspan=\"2\">Threads</th>"
                          "<th colspan=\"3\">Async connections</th></tr>\n"
@@ -556,13 +557,24 @@ static int status_handler(request_rec *r)
                 lingering_close  += ps_record->lingering_close;
                 busy_workers     += thread_busy_buffer[i];
                 idle_workers     += thread_idle_buffer[i];
-                if (!short_report)
+                if (!short_report) {
+                    const char *dying = "no";
+                    const char *old = "";
+                    if (ps_record->quiescing) {
+                        dying = "yes";
+                        stopping++;
+                    }
+                    if (ps_record->generation != mpm_generation)
+                        old = " (old gen)";
+                    procs++;
                     ap_rprintf(r, "<tr><td>%u</td><td>%" APR_PID_T_FMT "</td>"
+                                      "<td>%s%s</td>"
                                       "<td>%u</td><td>%s</td>"
                                       "<td>%u</td><td>%u</td>"
                                       "<td>%u</td><td>%u</td><td>%u</td>"
                                       "</tr>\n",
                                i, ps_record->pid,
+                               dying, old,
                                ps_record->connections,
                                ps_record->not_accepting ? "no" : "yes",
                                thread_busy_buffer[i],
@@ -570,14 +582,17 @@ static int status_handler(request_rec *r)
                                ps_record->write_completion,
                                ps_record->keep_alive,
                                ps_record->lingering_close);
+                }
             }
         }
         if (!short_report) {
-            ap_rprintf(r, "<tr><td>&nbsp;</td><td>Sum</td>"
+            ap_rprintf(r, "<tr><td>Sum</td>"
+                          "<td>%d</td><td>%d</td>"
                           "<td>%d</td><td>&nbsp;</td>"
                           "<td>%d</td><td>%d</td>"
                           "<td>%d</td><td>%d</td><td>%d</td>"
                           "</tr>\n</table>\n",
+                          procs, stopping,
                           connections,
                           busy_workers, idle_workers,
                           write_completion, keep_alive, lingering_close);