Author: mturk
Date: Fri Sep  1 11:03:51 2006
New Revision: 439401

URL: http://svn.apache.org/viewvc?rev=439401&view=rev
Log:
Add option to log the jvmRoute (real worker used
in load balancer) and remove the GETTIMEOFDAY by
using apr_time functions.

Modified:
    tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c

Modified: tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c?rev=439401&r1=439400&r2=439401&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Fri Sep  1 11:03:51 
2006
@@ -111,6 +111,7 @@
 #define JK_NOTE_WORKER_NAME         ("JK_WORKER_NAME")
 #define JK_NOTE_WORKER_TYPE         ("JK_WORKER_TYPE")
 #define JK_NOTE_REQUEST_DURATION    ("JK_REQUEST_DURATION")
+#define JK_NOTE_WORKER_ROUTE        ("JK_WORKER_ROUTE")
 #define JK_HANDLER          ("jakarta-servlet")
 #define JK_MAGIC_TYPE       ("application/x-jakarta-servlet")
 #define NULL_FOR_EMPTY(x)   ((x && !strlen(x)) ? NULL : x)
@@ -1126,6 +1127,11 @@
     return apr_table_get(r->notes, JK_NOTE_WORKER_NAME);
 }
 
+static const char *log_worker_route(request_rec * r, char *a)
+{
+    return apr_table_get(r->notes, JK_NOTE_WORKER_ROUTE);
+}
+
 
 static const char *log_request_duration(request_rec * r, char *a)
 {
@@ -1236,6 +1242,7 @@
     'm', log_request_method}, {
     'q', log_request_query}, {
     'w', log_worker_name}, {
+    'R', log_worker_route}, {
     '\0'}
 };
 
@@ -1886,9 +1893,7 @@
         }
 
         if (worker) {
-#ifndef NO_GETTIMEOFDAY
-            struct timeval tv_begin, tv_end;
-#endif
+            apr_time_t request_begin;
             int is_error = HTTP_INTERNAL_SERVER_ERROR;
             int rc = JK_FALSE;
             apache_private_data_t private_data;
@@ -1909,11 +1914,10 @@
             s.pool = &private_data.p;
             apr_table_setn(r->notes, JK_NOTE_WORKER_TYPE,
                            wc_get_name_for_type(worker->type, xconf->log));
-#ifndef NO_GETTIMEOFDAY
+                           
             if (xconf->format != NULL) {
-                gettimeofday(&tv_begin, NULL);
+                request_begin = apr_time_now();
             }
-#endif
 
             if (init_ws_service(&private_data, &s, xconf)) {
                 jk_endpoint_t *end = NULL;
@@ -1962,22 +1966,20 @@
                 JK_TRACE_EXIT(xconf->log);
                 return HTTP_INTERNAL_SERVER_ERROR;
             }
-#ifndef NO_GETTIMEOFDAY
             if (xconf->format != NULL) {
-                char *duration = NULL;
                 long micro, seconds;
-                gettimeofday(&tv_end, NULL);
-                if (tv_end.tv_usec < tv_begin.tv_usec) {
-                    tv_end.tv_usec += 1000000;
-                    tv_end.tv_sec--;
-                }
-                micro = tv_end.tv_usec - tv_begin.tv_usec;
-                seconds = tv_end.tv_sec - tv_begin.tv_sec;
+                char *duration = NULL;
+                apr_time_t rd = apr_time_now() - request_begin;
+                seconds = (long)apr_time_sec(rd);
+                micro = (long)(rd - apr_time_from_sec(seconds));
+                
                 duration = apr_psprintf(r->pool, "%.1ld.%.6ld", seconds, 
micro);
                 apr_table_setn(r->notes, JK_NOTE_REQUEST_DURATION, duration);
+                if (s.jvm_route && *s.jvm_route)
+                    apr_table_setn(r->notes, JK_NOTE_WORKER_ROUTE, 
s.jvm_route);
+
                 request_log_transaction(r, xconf);
             }
-#endif
 
             jk_close_pool(&private_data.p);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to