You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2007/01/27 16:15:49 UTC
svn commit: r500543 - in /tomcat/connectors/trunk/jk:
native/common/jk_status.c xdocs/miscellaneous/changelog.xml
xdocs/reference/status.xml xdocs/reference/workers.xml
Author: rjung
Date: Sat Jan 27 07:15:48 2007
New Revision: 500543
URL: http://svn.apache.org/viewvc?view=rev&rev=500543
Log:
- Allow a user of a read/write status worker to switch it to and
from read_only mode temporarily.
- Do not show read/write commands in a read_only status worker.
Modified:
tomcat/connectors/trunk/jk/native/common/jk_status.c
tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
tomcat/connectors/trunk/jk/xdocs/reference/status.xml
tomcat/connectors/trunk/jk/xdocs/reference/workers.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?view=diff&rev=500543&r1=500542&r2=500543
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Sat Jan 27 07:15:48 2007
@@ -69,6 +69,7 @@
#define JK_STATUS_ARG_OPTION_NO_LEGEND 0x0004
#define JK_STATUS_ARG_OPTION_NO_LB 0x0008
#define JK_STATUS_ARG_OPTION_NO_AJP 0x0010
+#define JK_STATUS_ARG_OPTION_READ_ONLY 0x0020
#define JK_STATUS_ARG_LB_RETRIES ("lr")
#define JK_STATUS_ARG_LB_RECOVER_TIME ("lt")
@@ -1150,6 +1151,7 @@
char buf_wr[32];
int cmd;
int mime;
+ int read_only = 0;
int single = 0;
unsigned int hide_members;
const char *arg;
@@ -1169,6 +1171,13 @@
mime = status_mime_int(arg);
hide_members = status_get_int(p, JK_STATUS_ARG_OPTIONS, 0, l) &
JK_STATUS_ARG_OPTION_NO_MEMBERS;
+ if (w->read_only) {
+ read_only = 1;
+ }
+ else {
+ read_only = status_get_int(p, JK_STATUS_ARG_OPTIONS, 0, l) &
+ JK_STATUS_ARG_OPTION_READ_ONLY;
+ }
if (cmd == JK_STATUS_CMD_SHOW) {
single = 1;
}
@@ -1202,12 +1211,14 @@
status_write_uri(s, p, "S", JK_STATUS_CMD_SHOW, JK_STATUS_MIME_UNKNOWN,
name, "", 0, 0, "", l);
}
- jk_puts(s, "|");
- status_write_uri(s, p, "E", JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
- name, "", 0, 0, "", l);
- jk_puts(s, "|");
- status_write_uri(s, p, "R", JK_STATUS_CMD_RESET, JK_STATUS_MIME_UNKNOWN,
- name, "", 0, 0, "", l);
+ if (!read_only) {
+ jk_puts(s, "|");
+ status_write_uri(s, p, "E", JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
+ name, "", 0, 0, "", l);
+ jk_puts(s, "|");
+ status_write_uri(s, p, "R", JK_STATUS_CMD_RESET, JK_STATUS_MIME_UNKNOWN,
+ name, "", 0, 0, "", l);
+ }
jk_puts(s, "] ");
jk_putv(s, "Worker Status for ", name, "</h3>\n", NULL);
jk_puts(s, "<table>" JK_STATUS_SHOW_LB_HEAD);
@@ -1324,18 +1335,22 @@
if (mime == JK_STATUS_MIME_HTML) {
- jk_puts(s, "<tr>\n<td>[");
- status_write_uri(s, p, "E", JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
- name, wr->s->name, 0, 0, "", l);
- jk_puts(s, "|");
- status_write_uri(s, p, "R", JK_STATUS_CMD_RESET, JK_STATUS_MIME_UNKNOWN,
- name, wr->s->name, 0, 0, "", l);
- if (wr->s->state == JK_LB_STATE_ERROR) {
+ jk_puts(s, "<tr>\n<td>");
+ if (!read_only) {
+ jk_puts(s, "[");
+ status_write_uri(s, p, "E", JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
+ name, wr->s->name, 0, 0, "", l);
jk_puts(s, "|");
- status_write_uri(s, p, "T", JK_STATUS_CMD_RECOVER, JK_STATUS_MIME_UNKNOWN,
+ status_write_uri(s, p, "R", JK_STATUS_CMD_RESET, JK_STATUS_MIME_UNKNOWN,
name, wr->s->name, 0, 0, "", l);
+ if (wr->s->state == JK_LB_STATE_ERROR) {
+ jk_puts(s, "|");
+ status_write_uri(s, p, "T", JK_STATUS_CMD_RECOVER, JK_STATUS_MIME_UNKNOWN,
+ name, wr->s->name, 0, 0, "", l);
+ }
+ jk_puts(s, "]");
}
- jk_puts(s, "] </td>");
+ jk_puts(s, " </td>");
jk_printf(s, JK_STATUS_SHOW_MEMBER_ROW,
wr->s->name,
status_worker_type(wr->w->type),
@@ -1448,25 +1463,27 @@
if (mime == JK_STATUS_MIME_HTML) {
jk_puts(s, "</table><br/>\n");
- jk_puts(s, "<b>E</b>dit one attribute for all members: [");
- status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_ACTIVATION, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
- name, "", 0, 0, JK_STATUS_ARG_LBM_ACTIVATION, l);
- jk_puts(s, "\n|");
- status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_FACTOR, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
- name, "", 0, 0, JK_STATUS_ARG_LBM_FACTOR, l);
- jk_puts(s, "\n|");
- status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_ROUTE, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
- name, "", 0, 0, JK_STATUS_ARG_LBM_ROUTE, l);
- jk_puts(s, "\n|");
- status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_REDIRECT, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
- name, "", 0, 0, JK_STATUS_ARG_LBM_REDIRECT, l);
- jk_puts(s, "\n|");
- status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_DOMAIN, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
- name, "", 0, 0, JK_STATUS_ARG_LBM_DOMAIN, l);
- jk_puts(s, "\n|");
- status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_DISTANCE, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
- name, "", 0, 0, JK_STATUS_ARG_LBM_DISTANCE, l);
- jk_puts(s, "\n]<br/>\n");
+ if (!read_only) {
+ jk_puts(s, "<b>E</b>dit one attribute for all members: [");
+ status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_ACTIVATION, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
+ name, "", 0, 0, JK_STATUS_ARG_LBM_ACTIVATION, l);
+ jk_puts(s, "\n|");
+ status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_FACTOR, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
+ name, "", 0, 0, JK_STATUS_ARG_LBM_FACTOR, l);
+ jk_puts(s, "\n|");
+ status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_ROUTE, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
+ name, "", 0, 0, JK_STATUS_ARG_LBM_ROUTE, l);
+ jk_puts(s, "\n|");
+ status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_REDIRECT, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
+ name, "", 0, 0, JK_STATUS_ARG_LBM_REDIRECT, l);
+ jk_puts(s, "\n|");
+ status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_DOMAIN, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
+ name, "", 0, 0, JK_STATUS_ARG_LBM_DOMAIN, l);
+ jk_puts(s, "\n|");
+ status_write_uri(s, p, JK_STATUS_ARG_LBM_TEXT_DISTANCE, JK_STATUS_CMD_EDIT, JK_STATUS_MIME_UNKNOWN,
+ name, "", 0, 0, JK_STATUS_ARG_LBM_DISTANCE, l);
+ jk_puts(s, "\n]<br/>\n");
+ }
}
@@ -2919,6 +2936,7 @@
int cmd;
int mime;
int refresh;
+ int read_only = 0;
const char *arg;
char *err = NULL;
status_endpoint_t *p;
@@ -2963,6 +2981,13 @@
status_get_string(p, JK_STATUS_ARG_MIME, NULL, &arg, l);
mime = status_mime_int(arg);
refresh = status_get_int(p, JK_STATUS_ARG_REFRESH, 0, l);
+ if (w->read_only) {
+ read_only = 1;
+ }
+ else {
+ read_only = status_get_int(p, JK_STATUS_ARG_OPTIONS, 0, l) &
+ JK_STATUS_ARG_OPTION_READ_ONLY;
+ }
if (mime == JK_STATUS_MIME_HTML) {
s->start_response(s, 200, "OK", headers_names, headers_vhtml, 3);
@@ -3021,7 +3046,7 @@
}
if (!err) {
- if (w->read_only &&
+ if (read_only &&
(cmd == JK_STATUS_CMD_EDIT ||
cmd == JK_STATUS_CMD_UPDATE ||
cmd == JK_STATUS_CMD_RESET ||
@@ -3195,6 +3220,9 @@
jk_puts(s, "<h1>JK Status Manager for ");
jk_puts(s, s->server_name);
jk_printf(s, ":%d", s->server_port);
+ if (read_only) {
+ jk_puts(s, " (read only)");
+ }
jk_puts(s, "</h1>\n\n");
if ((cmd == JK_STATUS_CMD_LIST) ||
(cmd == JK_STATUS_CMD_SHOW) ||
@@ -3289,12 +3317,26 @@
jk_puts(s, "] ");
}
if (cmd == JK_STATUS_CMD_LIST || cmd == JK_STATUS_CMD_SHOW) {
+ if (!w->read_only) {
+ jk_puts(s, "[");
+ if (read_only) {
+ status_write_uri(s, p, "Read/Write", 0, JK_STATUS_MIME_UNKNOWN,
+ NULL, NULL, 0, JK_STATUS_ARG_OPTION_READ_ONLY, NULL, l);
+ }
+ else {
+ status_write_uri(s, p, "Read Only", 0, JK_STATUS_MIME_UNKNOWN,
+ NULL, NULL, JK_STATUS_ARG_OPTION_READ_ONLY, 0, NULL, l);
+ }
+ jk_puts(s, "] \n");
+ }
+ }
+ if (cmd == JK_STATUS_CMD_LIST || cmd == JK_STATUS_CMD_SHOW) {
jk_puts(s, "[");
if (cmd == JK_STATUS_CMD_LIST)
jk_puts(s, "<b>S</b>=Show only this worker");
- if (!w->read_only && cmd == JK_STATUS_CMD_LIST)
+ if (!read_only && cmd == JK_STATUS_CMD_LIST)
jk_puts(s, ", ");
- if (!w->read_only)
+ if (!read_only)
jk_puts(s, "<b>E</b>=Edit worker, <b>R</b>=Reset worker state, <b>T</b>=Try worker recovery");
jk_puts(s, "]\n");
}
Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?view=diff&rev=500543&r1=500542&r2=500543
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Sat Jan 27 07:15:48 2007
@@ -27,6 +27,13 @@
<subsection name="Native">
<changelog>
<add>
+ JkStatus: Allow a user of a read/write status worker to switch it
+ to and from read_only mode temporarily. (rjung)
+ </add>
+ <fix>
+ JkStatus: Do not show read/write commands in a read_only status worker. (rjung)
+ </fix>
+ <add>
JkStatus: Allow lb sub workers in error state to be marked for recovery
administratively from the status worker. (rjung)
</add>
Modified: tomcat/connectors/trunk/jk/xdocs/reference/status.xml
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/reference/status.xml?view=diff&rev=500543&r1=500542&r2=500543
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/reference/status.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/reference/status.xml Sat Jan 27 07:15:48 2007
@@ -242,7 +242,7 @@
attributes of status workers are helpful. The attribute "read_only" disables all features of
the status worker, that can be used to change configurations or runtime status of the other workers.
A read_only status worker will not allow access to the edit, update, reset or recover actions.
-The default value is "False", ie. read-write. To enable read_only you need to set it to "True".
+The default value is "False", ie. read/write. To enable read_only you need to set it to "True".
</p>
<p>
You could configure two status workers, one has read_only and will be made available to a larger
@@ -369,6 +369,9 @@
</li>
<li>
<b>0x0010</b>: hide ajp workers
+</li>
+<li>
+<b>0x0020</b>: only allow read_only actions for a read/write status worker.
</li>
</ul>
</p>
Modified: tomcat/connectors/trunk/jk/xdocs/reference/workers.xml
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/reference/workers.xml?view=diff&rev=500543&r1=500542&r2=500543
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/reference/workers.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/reference/workers.xml Sat Jan 27 07:15:48 2007
@@ -375,7 +375,7 @@
<directive name="read_only" default="False" required="false">
A status worker with read_only=True will not allow any operations,
that change the runtime state or configuration of the other workers.
-These are edit/update/reset.
+These are edit/update/reset/recover.
<p>
This feature has been added in <b>jk 1.2.20</b>.
</p>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org