]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Merge /httpd/httpd/trunk:r1923754
authorStefan Eissing <icing@apache.org>
Tue, 3 Jun 2025 08:02:35 +0000 (08:02 +0000)
committerStefan Eissing <icing@apache.org>
Tue, 3 Jun 2025 08:02:35 +0000 (08:02 +0000)
  *) scoreboard/mod_http2: record durations of HTTP/2 requests.
     PR 69579 [Pierre Brochard <pierre.brochard.1982@m4x.org>]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1926080 13f79535-47bb-0310-9956-ffa450edef68

changes-entries/pr69579.txt [new file with mode: 0644]
include/ap_mmn.h
include/scoreboard.h
modules/http2/h2_mplx.c
server/scoreboard.c

diff --git a/changes-entries/pr69579.txt b/changes-entries/pr69579.txt
new file mode 100644 (file)
index 0000000..0b91a0d
--- /dev/null
@@ -0,0 +1,2 @@
+  *) scoreboard/mod_http2: record durations of HTTP/2 requests.
+     PR 69579 [Pierre Brochard <pierre.brochard.1982@m4x.org>]
index 9bc1d6b1169351c1a7c1a54484b4560386ab9fdf..8313cb29d3635123b40390678cb5046957176368 100644 (file)
  * 20120211.137 (2.4.63-dev) Add AP_MPMQ_CAN_WAITIO
  * 20120211.138 (2.4.63-dev) Add is_host_matchable to proxy_worker_shared
  * 20120211.139 (2.4.63-dev) Add dav_get_base_path() to mod_dav
+ * 20211221.140 (2.4.64-dev) Add ap_set_time_process_request() to scoreboard.h
  */
 
 #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
 #ifndef MODULE_MAGIC_NUMBER_MAJOR
 #define MODULE_MAGIC_NUMBER_MAJOR 20120211
 #endif
-#define MODULE_MAGIC_NUMBER_MINOR 139                 /* 0...n */
+#define MODULE_MAGIC_NUMBER_MINOR 140                 /* 0...n */
 
 /**
  * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
index 4af9132031a6460133e95aaa1dfe01abd0a84863..736b44384d6e25d455e4eba9bca6f0f2925f3506 100644 (file)
@@ -198,7 +198,9 @@ AP_DECLARE(int) ap_update_child_status_from_server(ap_sb_handle_t *sbh, int stat
 AP_DECLARE(int) ap_update_child_status_descr(ap_sb_handle_t *sbh, int status, const char *descr);
 
 AP_DECLARE(void) ap_time_process_request(ap_sb_handle_t *sbh, int status);
-
+AP_DECLARE(void) ap_set_time_process_request(ap_sb_handle_t* const sbh,
+               const apr_time_t timebeg,const apr_time_t timeend);
+    
 AP_DECLARE(int) ap_update_global_status(void);
 
 AP_DECLARE(worker_score *) ap_get_scoreboard_worker(ap_sb_handle_t *sbh);
index b5153082b56e59ac1a59dacbb5903e8265108988..62239a9889f546556454bd53724109a953b652e6 100644 (file)
@@ -29,6 +29,7 @@
 #include <http_connection.h>
 #include <http_log.h>
 #include <http_protocol.h>
+#include <scoreboard.h>
 
 #include <mpm_common.h>
 
@@ -974,7 +975,9 @@ static void s_c2_done(h2_mplx *m, conn_rec *c2, h2_conn_ctx_t *conn_ctx)
     /* From here on, the final handling of c2 is done by c1 processing.
      * Which means we can give it c1's scoreboard handle for updates. */
     c2->sbh = m->c1->sbh;
-
+#if AP_MODULE_MAGIC_AT_LEAST(20211221, 29)
+    ap_set_time_process_request(c2->sbh,conn_ctx->started_at,conn_ctx->done_at);
+#endif
     ap_log_cerror(APLOG_MARK, APLOG_TRACE2, 0, c2,
                   "h2_mplx(%s-%d): request done, %f ms elapsed",
                   conn_ctx->id, conn_ctx->stream_id,
index 49d1600ca7213577097780b99f074bec9d0256c2..ec18281b21478b0f600553e1027c09f71fa937b3 100644 (file)
@@ -653,6 +653,22 @@ AP_DECLARE(void) ap_time_process_request(ap_sb_handle_t *sbh, int status)
     }
 }
 
+AP_DECLARE(void) ap_set_time_process_request(ap_sb_handle_t* const sbh,
+               const apr_time_t timebeg,const apr_time_t timeend)
+{
+    if (!sbh || sbh->child_num < 0)
+        return;
+
+    worker_score* const ws =
+       &ap_scoreboard_image->servers[sbh->child_num][sbh->thread_num];
+    
+    ws->start_time = timebeg;
+    ws->stop_time = ws->last_used = timeend;
+    
+    if (ap_extended_status)
+       ws->duration += timeend - timebeg;
+}
+
 AP_DECLARE(int) ap_update_global_status(void)
 {
 #ifdef HAVE_TIMES