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]