Author: rjung
Date: Tue Mar 10 01:43:37 2009
New Revision: 751945
URL: http://svn.apache.org/viewvc?rev=751945&view=rev
Log:
Include error time in status worker display.
Modified:
tomcat/connectors/trunk/jk/native/common/jk_status.c
tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
Modified: tomcat/connectors/trunk/jk/native/common/jk_status.c
URL:
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_status.c?rev=751945&r1=751944&r2=751945&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Tue Mar 10 01:43:37
2009
@@ -263,7 +263,7 @@
"<th>State</th>" \
"<th>Acc</th>" \
"<th>Err</th><th>CE</th><th>RE</th>" \
-
"<th>Wr</th><th>Rd</th><th>Busy</th><th>Max</th><th>LR</th>" \
+
"<th>Wr</th><th>Rd</th><th>Busy</th><th>Max</th><th>LR</th><th>LE</th>" \
"</tr>\n"
#define JK_STATUS_SHOW_AJP_ROW "<tr>" \
"<td>%s</td>" \
@@ -276,6 +276,7 @@
"<td>%d</td>" \
"<td>%d</td>" \
"<td>%d</td>" \
+ "<td>%s</td>" \
"</tr>\n"
#define JK_STATUS_SHOW_LB_HEAD "<tr>" \
"<th>Type</th>" \
@@ -308,7 +309,7 @@
"<th>Err</th><th>CE</th><th>RE</th>" \
"<th>Wr</th><th>Rd</th><th>Busy</th><th>Max</th>" \
"<th>" JK_STATUS_ARG_LBM_TEXT_ROUTE
"</th>" \
-
"<th>RR</th><th>Cd</th><th>Rs</th><th>LR</th>" \
+
"<th>RR</th><th>Cd</th><th>Rs</th><th>LR</th><th>LE</th>" \
"</tr>\n"
#define JK_STATUS_SHOW_MEMBER_ROW "<td>%s</td>" \
"<td>%s</td>" \
@@ -330,6 +331,7 @@
"<td>%s</td>" \
"<td>%d/%d</td>" \
"<td>%d</td>" \
+ "<td>%s</td>" \
"</tr>\n"
#define JK_STATUS_SHOW_MEMBER_CONF_HEAD "<tr>" \
"<th>Name</th><th>Type</th>" \
@@ -709,6 +711,31 @@
} while (1);
}
+static int status_strftime(time_t clock, int mime, char *buf_time, char
*buf_tz,
+ jk_logger_t *l)
+{
+ int rc_time;
+#ifdef _MT_CODE_PTHREAD
+ struct tm res;
+ struct tm *tms = localtime_r(&clock, &res);
+#else
+ struct tm *tms = localtime(&clock);
+#endif
+
+ JK_TRACE_ENTER(l);
+
+ if (mime == JK_STATUS_MIME_HTML)
+ rc_time = strftime(buf_time, JK_STATUS_TIME_BUF_SZ,
JK_STATUS_TIME_FMT_HTML, tms);
+ else {
+ rc_time = strftime(buf_time, JK_STATUS_TIME_BUF_SZ,
JK_STATUS_TIME_FMT_TEXT, tms);
+ }
+ strftime(buf_tz, JK_STATUS_TIME_BUF_SZ, JK_STATUS_TIME_FMT_TZ, tms);
+
+ JK_TRACE_EXIT(l);
+ return rc_time;
+
+}
+
static int status_rate(lb_sub_worker_t *wr, status_worker_t *w,
jk_logger_t *l)
{
@@ -1723,6 +1750,12 @@
status_worker_t *w = p->worker;
int rs_min = 0;
int rs_max = 0;
+ int delta_reset = (int)difftime(now, aw->s->last_reset);
+ int delta_error = -1;
+ char buf_time[JK_STATUS_TIME_BUF_SZ];
+ char buf_tz[JK_STATUS_TIME_BUF_SZ];
+ time_t error_time = 0;
+ int rc_time = -1;
JK_TRACE_ENTER(l);
@@ -1733,6 +1766,7 @@
name = lb->name;
sub_name = wr->name;
ajp_name = wr->name;
+ error_time = wr->s->error_time;
if (wr->s->state == JK_LB_STATE_ERROR) {
rs_min = lb->recover_wait_time - (int)difftime(now,
wr->s->error_time);
if (rs_min < 0) {
@@ -1748,11 +1782,16 @@
name = aw->name;
sub_name = NULL;
ajp_name = aw->name;
+ error_time = aw->s->error_time;
+ }
+
+ if (error_time > 0) {
+ delta_error = (int)difftime(now, error_time);
+ rc_time = status_strftime(error_time, mime, buf_time, buf_tz, l);
}
if (mime == JK_STATUS_MIME_HTML) {
- int delta = (int)difftime(now, aw->s->last_reset);
if (lb)
jk_printf(s, JK_STATUS_SHOW_MEMBER_ROW,
sub_name,
@@ -1763,14 +1802,14 @@
wr->lb_mult,
wr->s->lb_value,
aw->s->used,
- delta > 0 ? (int)(aw->s->used / delta) : -1,
+ delta_reset > 0 ? (int)(aw->s->used / delta_reset) : -1,
wr->s->errors,
aw->s->client_errors,
aw->s->reply_timeouts,
status_strfsize(aw->s->transferred, buf_wr),
- delta > 0 ? status_strfsize(aw->s->transferred / delta,
buf_wr_sec) : "-",
+ delta_reset > 0 ? status_strfsize(aw->s->transferred /
delta_reset, buf_wr_sec) : "-",
status_strfsize(aw->s->readed, buf_rd),
- delta > 0 ? status_strfsize(aw->s->readed / delta ,
buf_rd_sec) : "-",
+ delta_reset > 0 ? status_strfsize(aw->s->readed /
delta_reset , buf_rd_sec) : "-",
aw->s->busy,
aw->s->max_busy,
wr->route,
@@ -1778,22 +1817,24 @@
wr->domain ? (*wr->domain ? wr->domain : " ") :
" ",
rs_min,
rs_max,
- delta);
+ delta_reset,
+ rc_time > 0 ? buf_time : "-");
else {
jk_printf(s, JK_STATUS_SHOW_AJP_ROW,
jk_ajp_get_state(aw, l),
aw->s->used,
- delta > 0 ? (int)(aw->s->used / delta) : -1,
+ delta_reset > 0 ? (int)(aw->s->used / delta_reset) : -1,
aw->s->errors,
aw->s->client_errors,
aw->s->reply_timeouts,
status_strfsize(aw->s->transferred, buf_wr),
- delta > 0 ? status_strfsize(aw->s->transferred / delta,
buf_wr_sec) : "-",
+ delta_reset > 0 ? status_strfsize(aw->s->transferred /
delta_reset, buf_wr_sec) : "-",
status_strfsize(aw->s->readed, buf_rd),
- delta > 0 ? status_strfsize(aw->s->readed / delta ,
buf_rd_sec) : "-",
+ delta_reset > 0 ? status_strfsize(aw->s->readed /
delta_reset , buf_rd_sec) : "-",
aw->s->busy,
aw->s->max_busy,
- delta);
+ delta_reset,
+ rc_time > 0 ? buf_time : "-");
}
}
@@ -1854,7 +1895,13 @@
else
jk_print_xml_att_int(s, off+2, "map_count", map_count);
jk_print_xml_att_long(s, off+2, "last_reset_at",
(long)aw->s->last_reset);
- jk_print_xml_att_int(s, off+2, "last_reset_ago", (int)difftime(now,
aw->s->last_reset));
+ jk_print_xml_att_int(s, off+2, "last_reset_ago", delta_reset);
+ if (rc_time > 0 ) {
+ jk_print_xml_att_string(s, off+2, "error_time_datetime", buf_time);
+ jk_print_xml_att_string(s, off+2, "error_time_tz", buf_tz);
+ jk_print_xml_att_int(s, off+2, "error_time_unix_seconds",
error_time);
+ jk_print_xml_att_int(s, off+2, "error_time_ago", delta_error);
+ }
/* Terminate the tag */
jk_print_xml_stop_elt(s, off, 1);
@@ -1913,7 +1960,13 @@
else
jk_printf(s, " map_count=%d", map_count);
jk_printf(s, " last_reset_at=%ld", (long)aw->s->last_reset);
- jk_printf(s, " last_reset_ago=%d", (int)difftime(now,
aw->s->last_reset));
+ jk_printf(s, " last_reset_ago=%d", delta_reset);
+ if (rc_time > 0) {
+ jk_printf(s, " error_time_datetime=%s", buf_time);
+ jk_printf(s, " error_time_tz=%s", buf_tz);
+ jk_printf(s, " error_time_unix_seconds=%d", error_time);
+ jk_printf(s, " error_time_ago=%d", delta_error);
+ }
jk_puts(s, "\n");
}
@@ -1968,7 +2021,13 @@
else
jk_print_prop_att_int(s, w, name, "map_count", map_count);
jk_print_prop_att_long(s, w, name, "last_reset_at",
(long)aw->s->last_reset);
- jk_print_prop_att_int(s, w, name, "last_reset_ago", (int)difftime(now,
aw->s->last_reset));
+ jk_print_prop_att_int(s, w, name, "last_reset_ago", delta_reset);
+ if (rc_time > 0) {
+ jk_print_prop_att_string(s, w, name, "error_time_datetime",
buf_time);
+ jk_print_prop_att_string(s, w, name, "error_time_tz", buf_tz);
+ jk_print_prop_att_int(s, w, name, "error_time_unix seconds",
error_time);
+ jk_print_prop_att_int(s, w, name, "error_time_ago seconds",
delta_error);
+ }
}
JK_TRACE_EXIT(l);
@@ -3611,6 +3670,7 @@
"<tr><th>Cd</th><td>Cluster domain</td></tr>\n"
"<tr><th>Rs</th><td>Recovery scheduled in app. min/max
seconds</td></tr>\n"
"<tr><th>LR</th><td>Seconds since last reset of statistics
counters</td></tr>\n"
+ "<tr><th>LE</th><td>Timestamp of the last error</td></tr>\n"
"</tbody>\n"
"</table>\n");
}
@@ -4527,21 +4587,9 @@
if (!err) {
char buf_time[JK_STATUS_TIME_BUF_SZ];
char buf_tz[JK_STATUS_TIME_BUF_SZ];
- int rc_time;
time_t clock = time(NULL);
long unix_seconds = (long)clock;
-#ifdef _MT_CODE_PTHREAD
- struct tm res;
- struct tm *tms = localtime_r(&clock, &res);
-#else
- struct tm *tms = localtime(&clock);
-#endif
- if (mime == JK_STATUS_MIME_HTML)
- rc_time = strftime(buf_time, JK_STATUS_TIME_BUF_SZ,
JK_STATUS_TIME_FMT_HTML, tms);
- else {
- rc_time = strftime(buf_time, JK_STATUS_TIME_BUF_SZ,
JK_STATUS_TIME_FMT_TEXT, tms);
- }
- strftime(buf_tz, JK_STATUS_TIME_BUF_SZ, JK_STATUS_TIME_FMT_TZ, tms);
+ int rc_time = status_strftime(clock, mime, buf_time, buf_tz, l);
if (cmd == JK_STATUS_CMD_UPDATE) {
/* lock shared memory */
jk_shm_lock();
Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=751945&r1=751944&r2=751945&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Tue Mar 10
01:43:37 2009
@@ -43,8 +43,11 @@
<br />
<subsection name="Native">
<changelog>
+ <update>
+ Status: Include error time in display. (rjung)
+ </update>
<fix>
- Status: Fix crash in text display of status worker. (rjung)
+ Status: Fix crash in text display. (rjung)
</fix>
<update>
LB: Add new property error_escalation_time to fine tune
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]