httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ic...@apache.org
Subject svn commit: r1726013 - in /httpd/httpd/trunk/modules/http2: h2_session.c h2_session.h
Date Thu, 21 Jan 2016 16:43:42 GMT
Author: icing
Date: Thu Jan 21 16:43:42 2016
New Revision: 1726013

URL: http://svn.apache.org/viewvc?rev=1726013&view=rev
Log:
scoreboard http2 status gives stream summary

Modified:
    httpd/httpd/trunk/modules/http2/h2_session.c
    httpd/httpd/trunk/modules/http2/h2_session.h

Modified: httpd/httpd/trunk/modules/http2/h2_session.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_session.c?rev=1726013&r1=1726012&r2=1726013&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/h2_session.c (original)
+++ httpd/httpd/trunk/modules/http2/h2_session.c Thu Jan 21 16:43:42 2016
@@ -1983,6 +1983,19 @@ static void dispatch_event(h2_session *s
 
 static const int MAX_WAIT_MICROS = 200 * 1000;
 
+static void update_child_status(h2_session *session, int status, const char *msg)
+{
+    apr_snprintf(session->status, sizeof(session->status),
+                 "%s, streams: %d/%d/%d/%d/%d (open/recv/resp/push/rst)", 
+                 msg? msg : "-",
+                 (int)h2_stream_set_size(session->streams), 
+                 (int)session->requests_received,
+                 (int)session->responses_submitted,
+                 (int)session->pushes_submitted,
+                 (int)session->pushes_reset + session->streams_reset);
+    ap_update_child_status_descr(session->c->sbh, status, session->status);
+}
+
 apr_status_t h2_session_process(h2_session *session, int async)
 {
     apr_status_t status = APR_SUCCESS;
@@ -2002,16 +2015,19 @@ apr_status_t h2_session_process(h2_sessi
             }
         }
         
+        session->status[0] = '\0';
+        
         switch (session->state) {
             case H2_SESSION_ST_INIT:
+                ap_update_child_status_from_conn(c->sbh, SERVER_BUSY_READ, c);
                 if (!h2_is_acceptable_connection(c, 1)) {
+                    update_child_status(session, SERVER_BUSY_READ, "inadequate security");
                     h2_session_shutdown(session, NGHTTP2_INADEQUATE_SECURITY, NULL);
                 } 
                 else {
-                    ap_update_child_status(c->sbh, SERVER_BUSY_READ, NULL);
+                    update_child_status(session, SERVER_BUSY_READ, "init");
                     status = h2_session_start(session, &rv);
-                    ap_log_cerror(APLOG_MARK, APLOG_DEBUG, status, c,
-                                  APLOGNO(03079)
+                    ap_log_cerror(APLOG_MARK, APLOG_DEBUG, status, c, APLOGNO(03079)
                                   "h2_session(%ld): started on %s:%d", session->id,
                                   session->s->server_hostname,
                                   c->local_addr->port);
@@ -2026,7 +2042,7 @@ apr_status_t h2_session_process(h2_sessi
                 /* We wait in smaller increments, using a 1 second timeout.
                  * That gives us the chance to check for MPMQ_STOPPING often. */
                 h2_filter_cin_timeout_set(session->cin, 1);
-                ap_update_child_status_from_conn(c->sbh, SERVER_BUSY_KEEPALIVE, c);
+                update_child_status(session, SERVER_BUSY_KEEPALIVE, "idle");
                 status = h2_session_read(session, 1, 10);
                 if (status == APR_SUCCESS) {
                     have_read = 1;
@@ -2050,7 +2066,7 @@ apr_status_t h2_session_process(h2_sessi
             case H2_SESSION_ST_LOCAL_SHUTDOWN:
             case H2_SESSION_ST_REMOTE_SHUTDOWN:
                 if (nghttp2_session_want_read(session->ngh2)) {
-                    ap_update_child_status_from_conn(c->sbh, SERVER_BUSY_READ, c);
+                    update_child_status(session, SERVER_BUSY_READ, "busy");
                     h2_filter_cin_timeout_set(session->cin, session->timeout_secs);
                     status = h2_session_read(session, 0, 10);
                     if (status == APR_SUCCESS) {
@@ -2092,6 +2108,7 @@ apr_status_t h2_session_process(h2_sessi
                 }
                 
                 if (nghttp2_session_want_write(session->ngh2)) {
+                    ap_update_child_status(session->c->sbh, SERVER_BUSY_WRITE, NULL);
                     status = h2_session_send(session);
                     if (status == APR_SUCCESS) {
                         have_written = 1;
@@ -2121,6 +2138,7 @@ apr_status_t h2_session_process(h2_sessi
                 
                 ap_log_cerror( APLOG_MARK, APLOG_TRACE2, status, c,
                               "h2_session(%ld): process -> trywait", session->id);
+                    update_child_status(session, SERVER_BUSY_READ, "wait");
                 status = h2_mplx_out_trywait(session->mplx, session->wait_us, 
                                              session->iowait);
                 if (status == APR_SUCCESS) {
@@ -2137,6 +2155,7 @@ apr_status_t h2_session_process(h2_sessi
                 break;
                 
             case H2_SESSION_ST_DONE:
+                update_child_status(session, SERVER_CLOSING, "done");
                 status = APR_EOF;
                 goto out;
                 

Modified: httpd/httpd/trunk/modules/http2/h2_session.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_session.h?rev=1726013&r1=1726012&r2=1726013&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/h2_session.h (original)
+++ httpd/httpd/trunk/modules/http2/h2_session.h Thu Jan 21 16:43:42 2016
@@ -134,6 +134,8 @@ typedef struct h2_session {
     struct h2_workers *workers;     /* for executing stream tasks */
     
     struct h2_push_diary *push_diary; /* remember pushes, avoid duplicates */
+    
+    char status[64];                /* status message for scoreboard */
 } h2_session;
 
 



Mime
View raw message