cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
hgomez 2004/03/17 09:16:25 Modified:jk/native2/common jk_worker_status.c Log: Remove unused vars Revision ChangesPath 1.59 +1 -20 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.58 retrieving revision 1.59 diff -u -r1.58 -r1.59 --- jk_worker_status.c16 Mar 2004 08:47:25 - 1.58 +++ jk_worker_status.c17 Mar 2004 17:16:25 - 1.59 @@ -137,7 +137,6 @@ s-jkprintf(env, s, thReqStart/thth+jk/thth+end/th ); for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { -char *name=env-_objects-nameAt( env, env-_objects, i ); jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); jk_endpoint_t *ep; @@ -166,14 +165,12 @@ static void jk2_worker_status_displayScoreboardInfo(jk_env_t *env, jk_ws_service_t *s, jk_workerEnv_t *wenv) { -jk_map_t *map=wenv-initData; int i; int j; int totalReq=0; int totalErr=0; unsigned long totalTime=0; unsigned long maxTime=0; -int needHeader=JK_TRUE; if( wenv-shm==NULL || wenv-shm-head==NULL) { s-jkprintf(env, s, h3No Scoreboard available/h3\n); @@ -228,7 +225,6 @@ static void jk2_worker_status_displayRuntimeType(jk_env_t *env, jk_ws_service_t *s, jk_workerEnv_t *wenv, char *type) { -jk_map_t *map=wenv-initData; int i; int needHeader=JK_TRUE; int typeLen=strlen( type ); @@ -389,14 +385,8 @@ static void jk2_worker_status_lstEndpoints(jk_env_t *env, jk_ws_service_t *s, jk_workerEnv_t *wenv) { -jk_map_t *map=wenv-initData; int i; int j; -int totalReq=0; -int totalErr=0; -unsigned long totalTime=0; -unsigned long maxTime=0; -int needHeader=JK_TRUE; if( wenv-shm==NULL || wenv-shm-head==NULL) { return; @@ -414,7 +404,6 @@ for( j=0; jslot-structCnt ; j++ ) { jk_stat_t *statArray=(jk_stat_t *)data; -jk_stat_t *stat=statArray + j; s-jkprintf(env, s, [endpoint:%s%d]\n, name, j ); s-jkprintf(env, s, T=endpoint\n ); @@ -441,14 +430,8 @@ static void jk2_worker_status_dmpEndpoints(jk_env_t *env, jk_ws_service_t *s, jk_workerEnv_t *wenv) { -jk_map_t *map=wenv-initData; int i; int j; -int totalReq=0; -int totalErr=0; -unsigned long totalTime=0; -unsigned long maxTime=0; -int needHeader=JK_TRUE; if( wenv-shm==NULL || wenv-shm-head==NULL) { return; @@ -523,7 +506,6 @@ char *name=env-_objects-nameAt( env, env-_objects, i ); jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); char **getAtt=mbean-getAttributeInfo; -char **setAtt=mbean-setAttributeInfo; /* That's a bad name, created for backward compat. It should be deprecated.. */ if( strchr( name, ':' )==NULL ) @@ -690,7 +672,6 @@ char *name=env-_objects-nameAt( env, env-_objects, i ); jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); char **getAtt=mbean-getAttributeInfo; -char **setAtt=mbean-setAttributeInfo; int j,k; /* That's a bad name, created for backward compat. It should be deprecated.. */ @@ -898,7 +879,7 @@ for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { char *name=env-_objects-nameAt( env, env-_objects, i ); jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); -int res; +int res = 0; if( mbean==NULL ) continue; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
hgomez 2004/03/17 09:20:14 Modified:jk/native2/common jk_worker_status.c Log: Oups Revision ChangesPath 1.60 +1 -0 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.59 retrieving revision 1.60 diff -u -r1.59 -r1.60 --- jk_worker_status.c17 Mar 2004 17:16:25 - 1.59 +++ jk_worker_status.c17 Mar 2004 17:20:14 - 1.60 @@ -506,6 +506,7 @@ char *name=env-_objects-nameAt( env, env-_objects, i ); jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); char **getAtt=mbean-getAttributeInfo; +char **setAtt=mbean-setAttributeInfo; /* That's a bad name, created for backward compat. It should be deprecated.. */ if( strchr( name, ':' )==NULL ) - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
hgomez 2004/03/16 00:47:25 Modified:jk/native2/common jk_worker_status.c Log: Supresses the output of the style when we are in text/plain mode Provided by Guenter Knauf Revision ChangesPath 1.58 +4 -1 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.57 retrieving revision 1.58 diff -u -r1.57 -r1.58 --- jk_worker_status.c15 Mar 2004 11:05:26 - 1.57 +++ jk_worker_status.c16 Mar 2004 08:47:25 - 1.58 @@ -953,7 +953,10 @@ s-head(env, s ); -s-jkprintf(env, s, style%s/style\n, DEFAULT_CSS ); +if( !(s-query_string != NULL +strncmp( s-query_string, qry=, 4) == 0 ) ) { +s-jkprintf(env, s, style%s/style\n, DEFAULT_CSS ); +} /** Process the query string. */ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
mturk 2004/03/15 03:05:26 Modified:jk/native2/common jk_worker_status.c Log: Fix the resetScoreboard loop start index. Thx. Norm Revision ChangesPath 1.57 +1 -1 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- jk_worker_status.c13 Mar 2004 10:12:24 - 1.56 +++ jk_worker_status.c15 Mar 2004 11:05:26 - 1.57 @@ -292,7 +292,7 @@ return; } -for( i=1; i wenv-shm-head-lastSlot; i++ ) { +for( i=0; i wenv-shm-head-lastSlot; i++ ) { jk_shm_slot_t *slot= wenv-shm-getSlot( env, wenv-shm, i ); if( slot==NULL ) continue; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
[EMAIL PROTECTED] wrote: mturk 2004/03/15 03:05:26 Modified:jk/native2/common jk_worker_status.c Log: Fix the resetScoreboard loop start index. Thx. Norm Revision ChangesPath 1.57 +1 -1 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- jk_worker_status.c 13 Mar 2004 10:12:24 - 1.56 +++ jk_worker_status.c 15 Mar 2004 11:05:26 - 1.57 @@ -292,7 +292,7 @@ return; } -for( i=1; i wenv-shm-head-lastSlot; i++ ) { +for( i=0; i wenv-shm-head-lastSlot; i++ ) { jk_shm_slot_t *slot= wenv-shm-getSlot( env, wenv-shm, i ); if( slot==NULL ) continue; You were faster, I see the commit while doing it from my side :) - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
mturk 2004/03/13 01:17:25 Modified:jk/native2/common jk_worker_status.c Log: Convert the times to msecs. apr_time_now return microsecods, so displaying that is not so user friendly. All the display logic and function calls should change to apr_time_t instead long. Revision ChangesPath 1.55 +13 -13jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.54 retrieving revision 1.55 diff -u -r1.54 -r1.55 --- jk_worker_status.c12 Mar 2004 19:19:58 - 1.54 +++ jk_worker_status.c13 Mar 2004 09:17:25 - 1.55 @@ -61,20 +61,20 @@ apr_ctime( ctimeBuf, stat-connectedTime ); s-jkprintf(env, s, td%s/td\n, ctimeBuf ); -s-jkprintf(env, s, td%ld/td\n, (long)stat-totalTime ); -s-jkprintf(env, s, td%ld/td\n, (long)stat-maxTime ); +s-jkprintf(env, s, td%ld/td\n, (long)apr_time_as_msec(stat-totalTime)); +s-jkprintf(env, s, td%ld/td\n, (long)apr_time_as_msec(stat-maxTime)); if( stat-reqCnt + stat-errCnt 0 ) s-jkprintf(env, s, td%ld/td\n, -(long)(stat-totalTime / ( stat-reqCnt + stat-errCnt )) ); +(long)apr_time_as_msec((stat-totalTime / ( stat-reqCnt + stat-errCnt ; else s-jkprintf(env, s, td-/td\n); -s-jkprintf(env, s, td%lu/td\n, (long)stat-startTime ); +s-jkprintf(env, s, td%lu/td\n, (long)apr_time_as_msec(stat-startTime)); s-jkprintf(env, s, td%ld/td\n, -(long)(stat-jkStartTime - stat-startTime) ); +(long)apr_time_as_msec(stat-jkStartTime - stat-startTime)); s-jkprintf(env, s, td%ld/td\n, -(long)(stat-endTime - stat-startTime) ); +(long)apr_time_as_msec(stat-endTime - stat-startTime)); totalTime += (long)stat-totalTime; if( maxTime stat-maxTime ) @@ -100,10 +100,10 @@ s-jkprintf(env, s, trtd%d/td\n, totalReq ); s-jkprintf(env, s, td%d/td\n, totalErr ); -s-jkprintf(env, s, td%ld/td\n, maxTime ); +s-jkprintf(env, s, td%ld/td\n, apr_time_as_msec(maxTime)); if( totalErr + totalReq 0 ) { -unsigned long avg=totalTime / ( totalReq + totalErr ); +unsigned long avg=apr_time_as_msec(totalTime / ( totalReq + totalErr)); s-jkprintf(env, s, td%ld/td\n, avg ); } else { s-jkprintf(env, s, td-/td\n ); @@ -479,14 +479,14 @@ apr_ctime( ctimeBuf, stat-connectedTime ); s-jkprintf(env, s, lastConnectionTime=%s\n, ctimeBuf); -s-jkprintf(env, s, totalTime=%ld\n, (long)stat-totalTime ); -s-jkprintf(env, s, maxTime=%ld\n, (long)stat-maxTime ); +s-jkprintf(env, s, totalTime=%ld\n, (long)apr_time_as_msec(stat-totalTime)); +s-jkprintf(env, s, maxTime=%ld\n, (long)apr_time_as_msec(stat-maxTime)); -s-jkprintf(env, s, requestStart=%lu\n, (long)stat-startTime); +s-jkprintf(env, s, requestStart=%lu\n, (long)apr_time_as_msec(stat-startTime)); s-jkprintf(env, s, jkTime=%ld\n, -(long)(stat-jkStartTime - stat-startTime) ); +(long)apr_time_as_msec((stat-jkStartTime - stat-startTime))); s-jkprintf(env, s, requestEnd=%ld\n, -(long)(stat-endTime - stat-startTime) ); +(long)apr_time_as_msec((stat-endTime - stat-startTime))); s-jkprintf(env, s, \n); } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
mturk 2004/03/13 02:12:24 Modified:jk/native2/common jk_worker_status.c Log: Use the apr_ctime for ReqStart. Since this is absolute time not a time difference, there is no need to display secons after 1970. Revision ChangesPath 1.56 +2 -1 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.55 retrieving revision 1.56 diff -u -r1.55 -r1.56 --- jk_worker_status.c13 Mar 2004 09:17:25 - 1.55 +++ jk_worker_status.c13 Mar 2004 10:12:24 - 1.56 @@ -70,7 +70,8 @@ else s-jkprintf(env, s, td-/td\n); -s-jkprintf(env, s, td%lu/td\n, (long)apr_time_as_msec(stat-startTime)); +apr_ctime( ctimeBuf, stat-startTime); +s-jkprintf(env, s, td%s/td\n, ctimeBuf); s-jkprintf(env, s, td%ld/td\n, (long)apr_time_as_msec(stat-jkStartTime - stat-startTime)); s-jkprintf(env, s, td%ld/td\n, - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
This account does not exist - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
mturk 2004/03/12 11:19:58 Modified:jk/native2/common jk_worker_status.c Log: Change the loop for shmem. The shmem indexes starts with 0 now. Revision ChangesPath 1.54 +1 -1 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.53 retrieving revision 1.54 diff -u -r1.53 -r1.54 --- jk_worker_status.c1 Mar 2004 09:38:20 - 1.53 +++ jk_worker_status.c12 Mar 2004 19:19:58 - 1.54 @@ -186,7 +186,7 @@ s-jkprintf(env, s, table border\n); -for( i=1; i wenv-shm-head-lastSlot; i++ ) { +for( i=0; i wenv-shm-head-lastSlot; i++ ) { jk_shm_slot_t *slot= wenv-shm-getSlot( env, wenv-shm, i ); if( slot==NULL ) continue; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
This account does not exist - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
hgomez 2004/03/01 01:20:17 Modified:jk/native2/common jk_worker_status.c Log: Make sure we send non-caching headers. Provided by Guenter Knauf Revision ChangesPath 1.52 +6 -0 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.51 retrieving revision 1.52 diff -u -r1.51 -r1.52 --- jk_worker_status.c29 Feb 2004 09:44:33 - 1.51 +++ jk_worker_status.c1 Mar 2004 09:20:17 - 1.52 @@ -944,6 +944,12 @@ s-headers_out-put(env, s-headers_out, Content-Type, text/html, NULL); } + +s-headers_out-put(env, s-headers_out, +Pragma, no-cache, NULL); +s-headers_out-put(env, s-headers_out, +Cache-Control, no-cache, NULL); + s-head(env, s ); s-jkprintf(env, s, style%s/style\n, DEFAULT_CSS ); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
hgomez 2004/03/01 01:38:20 Modified:jk/native2/common jk_worker_status.c Log: Tab policies Revision ChangesPath 1.53 +2 -2 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.52 retrieving revision 1.53 diff -u -r1.52 -r1.53 --- jk_worker_status.c1 Mar 2004 09:20:17 - 1.52 +++ jk_worker_status.c1 Mar 2004 09:38:20 - 1.53 @@ -175,7 +175,7 @@ int needHeader=JK_TRUE; if( wenv-shm==NULL || wenv-shm-head==NULL) { - s-jkprintf(env, s, h3No Scoreboard available/h3\n); +s-jkprintf(env, s, h3No Scoreboard available/h3\n); return; } @@ -952,7 +952,7 @@ s-head(env, s ); - s-jkprintf(env, s, style%s/style\n, DEFAULT_CSS ); +s-jkprintf(env, s, style%s/style\n, DEFAULT_CSS ); /** Process the query string. */ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
hgomez 2004/02/29 01:44:33 Modified:jk/native2/common jk_worker_status.c Log: Only 10 chars to check, reported by NormW Revision ChangesPath 1.51 +1 -1 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.50 retrieving revision 1.51 diff -u -r1.50 -r1.51 --- jk_worker_status.c27 Feb 2004 09:24:45 - 1.50 +++ jk_worker_status.c29 Feb 2004 09:44:33 - 1.51 @@ -1045,7 +1045,7 @@ jk2_worker_status_displayScoreboardInfo(env, s, s-workerEnv ); return JK_OK; } -if( strncmp( s-query_string, endpoints=, 11) == 0 ) { +if( strncmp( s-query_string, endpoints=, 10) == 0 ) { jk2_worker_status_displayEndpointInfo( env, s, s-workerEnv ); return JK_OK; } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
hgomez 2004/02/27 00:37:48 Modified:jk/native2/common jk_worker_status.c Log: Gunter addon (and initial stylesheet) Revision ChangesPath 1.49 +5 -0 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- jk_worker_status.c24 Feb 2004 08:44:40 - 1.48 +++ jk_worker_status.c27 Feb 2004 08:37:48 - 1.49 @@ -36,6 +36,8 @@ #define JK_CHECK_NULL( str ) ( ((str)==NULL) ? null : (str) ) +#define DEFAULT_CSS (BODY {COLOR: #00; FONT-STYLE: normal; FONT-FAMILY: \Times New Roman\, Times, serif; BACKGROUND-COLOR: #ff} H1 { COLOR: #0033cc; FONT-FAMILY: Arial, Helvetica, sans-serif} H2 { COLOR: #0033cc; FONT-FAMILY: Arial, Helvetica, sans-serif} H3 {FONT: 110% Arial, Helvetica, sans-serif; COLOR: #0033cc} B {FONT-WEIGHT: bold} ) + /** Display info for one endpoint */ static void jk2_worker_status_displayStat(jk_env_t *env, jk_ws_service_t *s, @@ -173,6 +175,7 @@ int needHeader=JK_TRUE; if( wenv-shm==NULL || wenv-shm-head==NULL) { + s-jkprintf(env, s, h3No Scoreboard avaiable/h3\n); return; } @@ -942,6 +945,8 @@ Content-Type, text/html, NULL); } s-head(env, s ); + + s-jkprintf(env, s, style%s/style\n, DEFAULT_CSS ); /** Process the query string. */ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
Good evening Henri. Can the 'avaiable' be 'available' by the time of the jk2 release? :-) Norm P.S. Great work regardless of my nitpicking. P.S.2 Gunter deliberately puts a few crumbs in his contributions so others less gifted can contribute something. hgomez 2004/02/27 00:37:48 Modified:jk/native2/common jk_worker_status.c Log: Gunter addon (and initial stylesheet) Revision ChangesPath 1.49 +5 -0 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- jk_worker_status.c 24 Feb 2004 08:44:40 - 1.48 +++ jk_worker_status.c 27 Feb 2004 08:37:48 - 1.49 @@ -36,6 +36,8 @@ #define JK_CHECK_NULL( str ) ( ((str)==NULL) ? null : (str) ) +#define DEFAULT_CSS (BODY {COLOR: #00; FONT-STYLE: normal; FONT-FAMILY: \Times New Roman\, Times, serif; BACKGROUND-COLOR: #ff} H1 { COLOR: #0033cc; FONT-FAMILY: Arial, Helvetica, sans-serif} H2 { COLOR: #0033cc; FONT-FAMILY: Arial, Helvetica, sans-serif} H3 {FONT: 110% Arial, Helvetica, sans-serif; COLOR: #0033cc} B {FONT-WEIGHT: bold} ) + /** Display info for one endpoint */ static void jk2_worker_status_displayStat(jk_env_t *env, jk_ws_service_t *s, @@ -173,6 +175,7 @@ int needHeader=JK_TRUE; if( wenv-shm==NULL || wenv-shm-head==NULL) { + s-jkprintf(env, s, h3No Scoreboard avaiable/h3\n); return; } @@ -942,6 +945,8 @@ Content-Type, text/html, NULL); } s-head(env, s ); + + s-jkprintf(env, s, style%s/style\n, DEFAULT_CSS ); /** Process the query string. */ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
hgomez 2004/02/27 01:24:45 Modified:jk/native2/common jk_worker_status.c Log: Fix typo Revision ChangesPath 1.50 +1 -1 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.49 retrieving revision 1.50 diff -u -r1.49 -r1.50 --- jk_worker_status.c27 Feb 2004 08:37:48 - 1.49 +++ jk_worker_status.c27 Feb 2004 09:24:45 - 1.50 @@ -175,7 +175,7 @@ int needHeader=JK_TRUE; if( wenv-shm==NULL || wenv-shm-head==NULL) { - s-jkprintf(env, s, h3No Scoreboard avaiable/h3\n); + s-jkprintf(env, s, h3No Scoreboard available/h3\n); return; } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
NormW wrote: Good evening Henri. Can the 'avaiable' be 'available' by the time of the jk2 release? :-) Norm P.S. Great work regardless of my nitpicking. P.S.2 Gunter deliberately puts a few crumbs in his contributions so others less gifted can contribute something. Fixed. I wonder how to cleanup the HTML for jkstatus, so if you're CSS specialist, you're more than welcome :) BTW, don't expect release before next week ;-( - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
Good evening from Down Under. NormW wrote: Good evening Henri. Can the 'avaiable' be 'available' by the time of the jk2 release? :-) Norm P.S. Great work regardless of my nitpicking. P.S.2 Gunter deliberately puts a few crumbs in his contributions so others less gifted can contribute something. Fixed. * Thanks. Should quieten less socially aware nitpickers... I wonder how to cleanup the HTML for jkstatus, so if you're CSS specialist, you're more than welcome :) * Not a CSS specialist but will give it a closer look. The one thing that did surprise was a line 353 characters long if there are tab-police out there, this might excite some... but it will do for testing regardless. BTW, don't expect release before next week ;-( * When giving birth to a baby, it's best to wait until all the bits are in working order. Sooner one good fully-featured release than a number chase. Norm - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
NormW wrote: Good evening from Down Under. NormW wrote: Good evening Henri. Can the 'avaiable' be 'available' by the time of the jk2 release? :-) Norm P.S. Great work regardless of my nitpicking. P.S.2 Gunter deliberately puts a few crumbs in his contributions so others less gifted can contribute something. Fixed. * Thanks. Should quieten less socially aware nitpickers... I wonder how to cleanup the HTML for jkstatus, so if you're CSS specialist, you're more than welcome :) * Not a CSS specialist but will give it a closer look. The one thing that did surprise was a line 353 characters long if there are tab-police out there, this might excite some... but it will do for testing regardless. Don't send cvs commit log to ASF Tab Police please ;) BTW, don't expect release before next week ;-( * When giving birth to a baby, it's best to wait until all the bits are in working order. Sooner one good fully-featured release than a number chase. Sure, we need this release as soon as possible, even if we make a 2.0.5 a little later to fix remaining problems - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
Good evening Henri. NormW wrote: Good evening from Down Under. NormW wrote: Good evening Henri. Can the 'avaiable' be 'available' by the time of the jk2 release? :-) Norm P.S. Great work regardless of my nitpicking. P.S.2 Gunter deliberately puts a few crumbs in his contributions so others less gifted can contribute something. Fixed. * Thanks. Should quieten less socially aware nitpickers... I wonder how to cleanup the HTML for jkstatus, so if you're CSS specialist, you're more than welcome :) * Not a CSS specialist but will give it a closer look. The one thing that did surprise was a line 353 characters long if there are tab-police out there, this might excite some... but it will do for testing regardless. Don't send cvs commit log to ASF Tab Police please ;) No way my conf's use them, Apache ignores them and they take less space to store and read. BTW, don't expect release before next week ;-( * When giving birth to a baby, it's best to wait until all the bits are in working order. Sooner one good fully-featured release than a number chase. Sure, we need this release as soon as possible, even if we make a 2.0.5 a little later to fix remaining problems Ahem... I thought you would be aware of the shortcomings of haste by now... :-) Norm. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
hgomez 2004/02/06 06:51:25 Modified:jk/native2/common jk_worker_status.c Log: Avoid display nameless beans. Provided by Gunter Knauf Revision ChangesPath 1.47 +3 -0 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.46 retrieving revision 1.47 diff -u -r1.46 -r1.47 --- jk_worker_status.c2 Feb 2004 18:21:08 - 1.46 +++ jk_worker_status.c6 Feb 2004 14:51:25 - 1.47 @@ -288,6 +288,9 @@ if( strncmp( type, mbean-type, typeLen ) != 0 ) continue; +if( mbean-localName == NULL || (strlen(mbean-localName) == 0) ) +continue; + if( needHeader ) { s-jkprintf(env, s, H3%s runtime info/H3\n, JK_CHECK_NULL(type) ); s-jkprintf(env, s, p%s information, using getAttribute() /p\n, JK_CHECK_NULL(type) ); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
mmanders2004/02/02 10:21:08 Modified:jk/native2/common jk_worker_status.c Log: Fix problem dereferencing a NULL value if shared memory/scoreboard information isn't available. Patch provided by Guenter Knauf and NormW. Revision ChangesPath 1.46 +11 -5 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- jk_worker_status.c30 Oct 2003 20:08:36 - 1.45 +++ jk_worker_status.c2 Feb 2004 18:21:08 - 1.46 @@ -717,7 +717,7 @@ } } /* Create a top section - not used currently */ -s-jkprintf(env, s, MXAgent: mod_jk\n ); +s-jkprintf(env, s, MXAgent: mod_jk2\n ); s-jkprintf(env, s, \n ); for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { @@ -1004,9 +1004,12 @@ /* Update the scoreboard's version - all other jk2 processes will see this and update */ -if( shm!=NULL shm-head!=NULL ) +if( shm!=NULL shm-head!=NULL ) { shm-head-lbVer++; -s-jkprintf(env, s, Updated config %d, shm-head-lbVer ); +s-jkprintf(env, s, Updated config version to %d\n, shm-head-lbVer ); +} else { +s-jkprintf(env, s, Update detected. No scoreboard.\n ); +} } @@ -1017,9 +1020,12 @@ /* Update the scoreboard's version - all other jk2 processes will see this and update */ -if( shm!=NULL shm-head!=NULL ) +if( shm!=NULL shm-head!=NULL ) { shm-head-lbVer++; -s-jkprintf(env, s, Updated config version to %d\n, shm-head-lbVer ); +s-jkprintf(env, s, Updated config version to %d\n, shm-head-lbVer ); +} else { +s-jkprintf(env, s, Reload requested. No scoreboard.\n ); +} return JK_OK; } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 2003/03/06 07:15:04 Modified:jk/native2/common jk_worker_status.c Log: Gump failure. Whoever did this: great work !!! Revision ChangesPath 1.40 +2 -1 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- jk_worker_status.c4 Mar 2003 07:25:10 - 1.39 +++ jk_worker_status.c6 Mar 2003 15:15:04 - 1.40 @@ -771,6 +771,7 @@ if( strcmp( name, cName ) == 0 mbean-setAttribute != NULL ) { +int res; jk_shm_t *shm=w-workerEnv-shm; @@ -780,7 +781,7 @@ env-l-jkLog(env, env-l, JK_LOG_DEBUG, status.set() %s %s\n, cName, attName); -int res=jk2_config_setProperty(env, w-workerEnv-config, +res=jk2_config_setProperty(env, w-workerEnv-config, mbean, attName, attVal); /* Increment the version */ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 2003/03/03 23:25:10 Modified:jk/native2/common jk_worker_status.c Log: Various changes and fixes. The check for a modified workers.properties is at the start of the method - JMX sent all the fields, one by one - and they got processed by different processes. This is a bit tricky - the multiprocess model may create problems. Probably a better fix would be to change all attributes at once. Setting the config via JMX is obviously experimental - editing the files remains the safest reconfig method. Revision ChangesPath 1.39 +148 -52 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- jk_worker_status.c2 Mar 2003 20:48:56 - 1.38 +++ jk_worker_status.c4 Mar 2003 07:25:10 - 1.39 @@ -315,9 +315,9 @@ JK_CHECK_NULL(mbean-localName)); for( j=0; mbean-getAttributeInfo[j] != NULL; j++ ) { char *pname=mbean-getAttributeInfo[j]; +char *res=mbean-getAttribute( env, mbean, pname); -s-jkprintf(env, s, td%s/td, -JK_CHECK_NULL(mbean-getAttribute( env, mbean, pname))); +s-jkprintf(env, s, td%s/td, JK_CHECK_NULL(res)); } } if( ! needHeader ) { @@ -355,8 +355,7 @@ #endif } } -} - +} } /** That's the 'bulk' data - everything that was configured, after substitution @@ -461,18 +460,20 @@ jk_stat_t *statArray=(jk_stat_t *)data; jk_stat_t *stat=statArray + j; -s-jkprintf(env, s, N|endpoint|endpoint:%s%d\n, name, j ); +s-jkprintf(env, s, [endpoint:%s%d]\n, name, j ); +s-jkprintf(env, s, T=endpoint\n ); -s-jkprintf(env, s, G|endpoint:%s%d|id\n, name, j); -s-jkprintf(env, s, G|endpoint:%s%d|requests\n, name, j); -s-jkprintf(env, s, G|endpoint:%s%d|errors\n, name, j); -s-jkprintf(env, s, G|endpoint:%s%d|lastRequest\n, name, j); -s-jkprintf(env, s, G|endpoint:%s%d|lastConnectionTime\n, name, j); -s-jkprintf(env, s, G|endpoint:%s%d|totalTime\n, name, j); -s-jkprintf(env, s, G|endpoint:%s%d|maxTime\n, name, j); -s-jkprintf(env, s, G|endpoint:%s%d|requestStart\n, name, j); -s-jkprintf(env, s, G|endpoint:%s%d|jkTime\n, name, j); -s-jkprintf(env, s, G|endpoint:%s%d|requestEnd\n, name, j); +s-jkprintf(env, s, G=id\n); +s-jkprintf(env, s, G=workerId\n); +s-jkprintf(env, s, G=requests\n); +s-jkprintf(env, s, G=errors\n); +s-jkprintf(env, s, G=lastRequest\n); +s-jkprintf(env, s, G=lastConnectionTime\n); +s-jkprintf(env, s, G=totalTime\n); +s-jkprintf(env, s, G=maxTime\n); +s-jkprintf(env, s, G=requestStart\n); +s-jkprintf(env, s, G=jkTime\n); +s-jkprintf(env, s, G=requestEnd\n\n); } } } @@ -510,32 +511,32 @@ /* XXX Add info about number of slots */ for( j=0; jslot-structCnt ; j++ ) { jk_stat_t *statArray=(jk_stat_t *)data; -jk_stat_t *stat=statArray + j; -s-jkprintf(env, s, G|endpoint:%s%d|id|%d\n, name, j, -stat-workerId); -s-jkprintf(env, s, G|endpoint:%s%d|requests|%d\n, name, j, -stat-reqCnt); -s-jkprintf(env, s, G|endpoint:%s%d|errors|%d\n, name, j, -stat-errCnt); -s-jkprintf(env, s, G|endpoint:%s%d|lastRequest|%s\n, name, j, -JK_CHECK_NULL(stat-active)); +jk_stat_t *stat=statArray + j; +s-jkprintf(env, s, [endpoint:%s%d]\n, name, j); + +s-jkprintf(env, s, workerId=%d\n, stat-workerId); +s-jkprintf(env, s, id=%d\n, stat-workerId); +s-jkprintf(env, s, requests=%d\n, stat-reqCnt); +s-jkprintf(env, s, errors=%d\n, stat-errCnt); +s-jkprintf(env, s, lastRequest=%s\n, JK_CHECK_NULL(stat-active)); #ifdef HAS_APR { char ctimeBuf[APR_CTIME_LEN]; apr_ctime( ctimeBuf, stat-connectedTime ); -s-jkprintf(env, s,
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 2003/03/02 12:48:56 Modified:jk/native2/common jk_worker_status.c Log: The entries in the scoreboard will be presented as beans. A bit hacky, but works without too much overhead. Revision ChangesPath 1.38 +156 -4jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- jk_worker_status.c1 Mar 2003 05:49:58 - 1.37 +++ jk_worker_status.c2 Mar 2003 20:48:56 - 1.38 @@ -77,6 +77,8 @@ #define JK_CHECK_NULL( str ) ( ((str)==NULL) ? null : (str) ) +/** Display info for one endpoint + */ static void jk2_worker_status_displayStat(jk_env_t *env, jk_ws_service_t *s, jk_stat_t *stat, int *totalReqP, int *totalErrP, @@ -127,6 +129,8 @@ *totalErrP=totalErr; } +/** Displays the totals + */ static void jk2_worker_status_displayAggregate(jk_env_t *env, jk_ws_service_t *s, int totalReq, int totalErr, unsigned long totalTime, unsigned long maxTime ) @@ -150,6 +154,11 @@ s-jkprintf(env, s, /tr/table\n); } +/** Information for the internal endpoints ( in this process ). +Duplicates info from the scoreboard. This is used for debugging and for +cases where scoreboard is not available. No longer included in the +normal display to avoid confusion. + */ static void jk2_worker_status_displayEndpointInfo(jk_env_t *env, jk_ws_service_t *s, jk_workerEnv_t *wenv) { @@ -193,6 +202,10 @@ totalReq, totalErr, totalTime, maxTime); } +/** Special case for endpoints - the info is stored in a shm segment, to be able + * to access info from all other processes in a multi-process server. + * For single process servers - the scoreboard is just a local char*. + */ static void jk2_worker_status_displayScoreboardInfo(jk_env_t *env, jk_ws_service_t *s, jk_workerEnv_t *wenv) { @@ -416,6 +429,119 @@ s-jkprintf( env,s , /table\n ); } +/** List metadata for endpoints ( from scoreboard ) using the remote-jmx style + */ +static void jk2_worker_status_lstEndpoints(jk_env_t *env, jk_ws_service_t *s, + jk_workerEnv_t *wenv) +{ +jk_map_t *map=wenv-initData; +int i; +int j; +int totalReq=0; +int totalErr=0; +unsigned long totalTime=0; +unsigned long maxTime=0; +int needHeader=JK_TRUE; + +if( wenv-shm==NULL || wenv-shm-head==NULL) { +return; +} + +for( i=1; i wenv-shm-head-lastSlot; i++ ) { +jk_shm_slot_t *slot= wenv-shm-getSlot( env, wenv-shm, i ); + +if( slot==NULL ) continue; + +if( strncmp( slot-name, epStat, 6 ) == 0 ) { +/* This is an endpoint slot */ +void *data=slot-data; +char *name=JK_CHECK_NULL(slot-name); + +for( j=0; jslot-structCnt ; j++ ) { +jk_stat_t *statArray=(jk_stat_t *)data; +jk_stat_t *stat=statArray + j; + +s-jkprintf(env, s, N|endpoint|endpoint:%s%d\n, name, j ); + +s-jkprintf(env, s, G|endpoint:%s%d|id\n, name, j); +s-jkprintf(env, s, G|endpoint:%s%d|requests\n, name, j); +s-jkprintf(env, s, G|endpoint:%s%d|errors\n, name, j); +s-jkprintf(env, s, G|endpoint:%s%d|lastRequest\n, name, j); +s-jkprintf(env, s, G|endpoint:%s%d|lastConnectionTime\n, name, j); +s-jkprintf(env, s, G|endpoint:%s%d|totalTime\n, name, j); +s-jkprintf(env, s, G|endpoint:%s%d|maxTime\n, name, j); +s-jkprintf(env, s, G|endpoint:%s%d|requestStart\n, name, j); +s-jkprintf(env, s, G|endpoint:%s%d|jkTime\n, name, j); +s-jkprintf(env, s, G|endpoint:%s%d|requestEnd\n, name, j); +} +} +} +} + + +/** List values for endpoints ( from scoreboard ) using the remote-jmx style + */ +static void jk2_worker_status_dmpEndpoints(jk_env_t *env, jk_ws_service_t *s, + jk_workerEnv_t *wenv) +{ +jk_map_t *map=wenv-initData; +int i; +int j; +int totalReq=0; +int totalErr=0; +unsigned long totalTime=0; +unsigned long maxTime=0; +int needHeader=JK_TRUE; + +
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 2003/02/28 12:36:52 Modified:jk/native2/common jk_worker_status.c Log: Few fixes and changes to make parsing faster. Since : is used for port and type/name separator. I use | as delimiter. Revision ChangesPath 1.35 +14 -12jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- jk_worker_status.c28 Feb 2003 05:02:24 - 1.34 +++ jk_worker_status.c28 Feb 2003 20:36:52 - 1.35 @@ -432,10 +432,11 @@ qryLen=strlen( cName ); } if( qryLen 0 ) { -if( cName[strlen(cName)] == '*' ) { +if( cName[strlen(cName)-1] == '*' ) { printf(Exact match off %s\n, cName ); -cName[strlen(cName)]='\0'; +cName[strlen(cName)-1]='\0'; exact=0; +qryLen--; } } for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { @@ -449,7 +450,7 @@ continue; /* Prefix */ -if( ! exact qryLen != 0 strncmp( name, cName, qryLen )!= 0 ) +if( (! exact) qryLen != 0 strncmp( name, cName, qryLen )!= 0 ) continue; /* Exact */ @@ -458,15 +459,15 @@ if( mbean==NULL ) continue; -s-jkprintf(env, s, N:%s:%s\n, mbean-type, name); +s-jkprintf(env, s, N|%s|%s\n, mbean-type, name); while( getAtt != NULL *getAtt != NULL **getAtt!='\0' ) { -s-jkprintf(env, s, G:%s:%s\n, name, *getAtt); +s-jkprintf(env, s, G|%s|%s\n, name, *getAtt); getAtt++; } while( setAtt != NULL *setAtt != NULL **setAtt!='\0' ) { -s-jkprintf(env, s, S:%s:%s\n, name, *setAtt); +s-jkprintf(env, s, S|%s|%s\n, name, *setAtt); setAtt++; } @@ -491,10 +492,11 @@ qryLen=strlen( cName ); } if( qryLen 0 ) { -if( cName[strlen(cName)] == '*' ) { +if( cName[strlen(cName)-1] == '*' ) { printf(Exact match off %s\n, cName ); -cName[strlen(cName)]='\0'; +cName[strlen(cName)-1]='\0'; exact=0; +qryLen--; } } for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { @@ -517,12 +519,12 @@ if( mbean==NULL ) continue; -s-jkprintf(env, s, P:%s:%s:%lp\n, mbean-type, name, mbean-object ); +s-jkprintf(env, s, P|%s|%s|%lp\n, mbean-type, name, mbean-object ); while( getAtt != NULL *getAtt != NULL **getAtt!='\0' ) { char *attName=*getAtt; char *val=mbean-getAttribute(env, mbean, *getAtt ); -s-jkprintf(env, s, G:%s:%s:%s\n, name, *getAtt, (val==NULL)? NULL: val); +s-jkprintf(env, s, G|%s|%s|%s\n, name, *getAtt, (val==NULL)? NULL: val); getAtt++; } } @@ -554,7 +556,7 @@ if( strcmp( name, cName ) == 0 mbean-getAttribute != NULL ) { void *result=mbean-getAttribute( env, mbean, attName ); -s-jkprintf( env, s, OK:%s:%s, cName, attName ); +s-jkprintf( env, s, OK|%s|%s, cName, attName ); s-jkprintf( env, s, %s, result ); return JK_OK; } @@ -596,7 +598,7 @@ if( strcmp( name, cName ) == 0 mbean-setAttribute != NULL ) { int res=mbean-setAttribute( env, mbean, attName, attVal ); -s-jkprintf( env, s, OK:%s:%s:%d, cName, attName, res ); +s-jkprintf( env, s, OK|%s|%s|%d, cName, attName, res ); return JK_OK; } } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 2003/02/28 13:55:49 Modified:jk/native2/common jk_worker_status.c Log: Few more fixes. Revision ChangesPath 1.36 +5 -5 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- jk_worker_status.c28 Feb 2003 20:36:52 - 1.35 +++ jk_worker_status.c28 Feb 2003 21:55:49 - 1.36 @@ -536,7 +536,7 @@ jk_ws_service_t *s) { char *cName=s-query_string + 4; -char *attName=rindex(cName, ':' ); +char *attName=rindex(cName, '|' ); int i; if( attName == NULL ) { @@ -561,7 +561,7 @@ return JK_OK; } } -s-jkprintf( env, s, ERROR: mbean not found %s\n, cName ); +s-jkprintf( env, s, ERROR|mbean not found|%s\n, cName ); return JK_OK; } @@ -570,7 +570,7 @@ jk_ws_service_t *s) { char *cName=s-query_string + 4; -char *attVal=rindex(cName, ':' ); +char *attVal=rindex(cName, '|' ); char *attName; int i; @@ -581,7 +581,7 @@ *attVal='\0'; attVal++; -attName=rindex( cName, ':' ); +attName=rindex( cName, '|' ); if( attName == NULL ) { s-jkprintf( env, s, ERROR: attribute name not found\n, cName); return JK_OK; @@ -602,7 +602,7 @@ return JK_OK; } } -s-jkprintf( env, s, ERROR: mbean not found %s\n, cName ); +s-jkprintf( env, s, ERROR|not found|%s|%s|%s\n, cName, attName, attVal ); return JK_OK; } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 2003/02/27 21:02:24 Modified:jk/native2/common jk_worker_status.c Log: Few more improvements to allow easier parsing on the java side. jkstatus now supports 4 new operations: lst - will list all the beans ( well - C beans ) and the attributes ( get and set ) dmp - will display all attributes for one or more beans ( using a prefix ) get - returns exactly one attribute value set - set one attribute. Some attributes have side effect - so this is also used as invoke() ( like in SNMP world ) Revision ChangesPath 1.34 +224 -107 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- jk_worker_status.c17 Feb 2003 02:09:58 - 1.33 +++ jk_worker_status.c28 Feb 2003 05:02:24 - 1.34 @@ -414,7 +414,196 @@ } s-jkprintf( env,s , /table\n ); } - + +static int JK_METHOD jk2_worker_status_list(jk_env_t *env, +jk_worker_t *w, +jk_ws_service_t *s) +{ +char *cName=s-query_string + 4; +int i; +int qryLen=0; +int exact=1; + +/* Dump all attributes for the beans */ +if( strcmp( cName, * )==0 ) { +*cName='\0'; +qryLen=0; +} else { +qryLen=strlen( cName ); +} +if( qryLen 0 ) { +if( cName[strlen(cName)] == '*' ) { +printf(Exact match off %s\n, cName ); +cName[strlen(cName)]='\0'; +exact=0; +} +} +for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { +char *name=env-_objects-nameAt( env, env-_objects, i ); +jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); +char **getAtt=mbean-getAttributeInfo; +char **setAtt=mbean-setAttributeInfo; + +/* That's a bad name, created for backward compat. It should be deprecated.. */ +if( strchr( name, ':' )==NULL ) +continue; + +/* Prefix */ +if( ! exact qryLen != 0 strncmp( name, cName, qryLen )!= 0 ) +continue; + +/* Exact */ +if( exact qryLen != 0 strcmp( name, cName )!= 0 ) +continue; + +if( mbean==NULL ) +continue; +s-jkprintf(env, s, N:%s:%s\n, mbean-type, name); + +while( getAtt != NULL *getAtt != NULL **getAtt!='\0' ) { +s-jkprintf(env, s, G:%s:%s\n, name, *getAtt); +getAtt++; +} + +while( setAtt != NULL *setAtt != NULL **setAtt!='\0' ) { +s-jkprintf(env, s, S:%s:%s\n, name, *setAtt); +setAtt++; +} + +} +return JK_OK; +} + +static int JK_METHOD jk2_worker_status_dmp(jk_env_t *env, + jk_worker_t *w, + jk_ws_service_t *s) +{ +char *cName=s-query_string + 4; +int i; +int qryLen=0; +int exact=1; + +/* Dump all attributes for the beans */ +if( strcmp( cName, * )==0 ) { +*cName='\0'; +qryLen=0; +} else { +qryLen=strlen( cName ); +} +if( qryLen 0 ) { +if( cName[strlen(cName)] == '*' ) { +printf(Exact match off %s\n, cName ); +cName[strlen(cName)]='\0'; +exact=0; +} +} +for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { +char *name=env-_objects-nameAt( env, env-_objects, i ); +jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); +char **getAtt=mbean-getAttributeInfo; +char **setAtt=mbean-setAttributeInfo; + +/* That's a bad name, created for backward compat. It should be deprecated.. */ +if( strchr( name, ':' )==NULL ) +continue; + +/* Prefix */ +if( ! exact qryLen != 0 strncmp( name, cName, qryLen )!= 0 ) +continue; + +/* Exact */ +if( exact qryLen != 0 strcmp( name, cName )!= 0 ) +continue; + +if( mbean==NULL ) +continue; +s-jkprintf(env, s, P:%s:%s:%lp\n, mbean-type, name, mbean-object ); + +while( getAtt != NULL *getAtt != NULL **getAtt!='\0' ) { +char *attName=*getAtt; +char *val=mbean-getAttribute(env, mbean, *getAtt ); +s-jkprintf(env, s, G:%s:%s:%s\n, name, *getAtt, (val==NULL)? NULL: val); +
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 2003/02/16 18:09:59 Modified:jk/native2/common jk_worker_status.c Log: Added few simple requests to get/set/list mbeans in the web server. Needs to be proxied by a java mbean. Revision ChangesPath 1.33 +114 -1jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- jk_worker_status.c4 Feb 2003 07:39:58 - 1.32 +++ jk_worker_status.c17 Feb 2003 02:09:58 - 1.33 @@ -436,11 +436,124 @@ /** Process the query string. */ if( s-query_string == NULL ) { -s-query_string=get=*; +s-query_string=all; } if( strcmp( s-query_string, scoreboard.reset ) == 0 ) { jk2_worker_status_resetScoreboard(env, s, s-workerEnv ); +} + +if( strncmp( s-query_string, get=, 4) == 0 ) { +/* Get a jmx-like attribute. Very inefficient ( only one attribute per req ) - but it doesn't + happen too often. We should do a POST */ +char *cName=s-query_string + 4; +char *attName=rindex(cName, ':' ); +int i; + +if( attName == NULL ) { +s-jkprintf( env, s, ERROR: no attribute found %s\n, cName); +return JK_OK; +} +*attName='\0'; +attName++; +for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { +char *name=env-_objects-nameAt( env, env-_objects, i ); +jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); + +if( mbean==NULL ) +continue; + +if( strcmp( name, cName ) == 0 +mbean-getAttribute != NULL ) { +char *value=mbean-getAttribute( env, mbean, attName ); +if( value!=NULL (*value != '\0') ) { +s-jkprintf( env, s, %s, value ); +} else { +s-jkprintf( env, s, NULL ); +} +return JK_OK; +} +} +s-jkprintf( env, s, ERROR: attribute not found %s %s, cName, attName ); +return JK_OK; +} +if( strncmp( s-query_string, qry=, 4) == 0 ) { +char *cName=s-query_string + 4; +int i,j; + +if( *cName== '\0' ) { +/* No string - list all components */ +for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { +char *name=env-_objects-nameAt( env, env-_objects, i ); +jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); +char **getAtt=mbean-getAttributeInfo; +char **setAtt=mbean-setAttributeInfo; + +if( mbean==NULL ) +continue; + +s-jkprintf(env, s, %s %s\n, name, mbean-type ); +} +} else { +/* List all attributes of an object */ + +for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { +char *name=env-_objects-nameAt( env, env-_objects, i ); +jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); +char **getAtt=mbean-getAttributeInfo; +char **setAtt=mbean-setAttributeInfo; + +if( mbean==NULL || getAtt==NULL ) +continue; + +if( strcmp( name, cName ) == 0 ) { +while( getAtt != NULL *getAtt != NULL **getAtt!='\0' ) { +char *attName=*getAtt; +char *val=mbean-getAttribute(env, mbean, *getAtt ); +s-jkprintf(env, s, %s %s %s\n, name, *getAtt, (val==NULL)? NULL: val); +getAtt++; +} +} +} +} +return JK_OK; +} +if( strncmp( s-query_string, set=, 4) == 0 ) { +char *cName=s-query_string + 4; +char *attVal=rindex(cName, ':' ); +char *attName; +int i; + +if( attVal == NULL ) { +s-jkprintf( env, s, ERROR: no attribute value found %s\n, cName); +return JK_OK; +} +*attVal='\0'; +attVal++; + +attName=rindex( cName, ':' ); +if( attName == NULL ) { +s-jkprintf( env, s, ERROR: attribute name not found\n, cName); +return JK_OK; +} +*attName='\0'; +attName++; +for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { +
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c jk_shm.c jk_channel_apr_socket.c
mturk 2002/09/27 06:07:28 Modified:jk/native2/common jk_worker_status.c jk_shm.c jk_channel_apr_socket.c Log: Fix the compiler warnings about 64-32 bits. Revision ChangesPath 1.31 +2 -2 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- jk_worker_status.c8 Jul 2002 13:32:49 - 1.30 +++ jk_worker_status.c27 Sep 2002 13:07:28 - 1.31 @@ -114,9 +114,9 @@ s-jkprintf(env, s, td%ld/td\n, (long)(stat-endTime - stat-startTime) ); -totalTime += stat-totalTime; +totalTime += (long)stat-totalTime; if( maxTime stat-maxTime ) -maxTime=stat-maxTime; +maxTime = (long)stat-maxTime; } #endif s-jkprintf(env, s, /tr\n); 1.30 +2 -2 jakarta-tomcat-connectors/jk/native2/common/jk_shm.c Index: jk_shm.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- jk_shm.c 24 Sep 2002 22:41:48 - 1.29 +++ jk_shm.c 27 Sep 2002 13:07:28 - 1.30 @@ -162,7 +162,7 @@ if( finfo.size shm-size ) { char bytes[1024]; -apr_size_t toWrite=shm-size-finfo.size; +apr_size_t toWrite = (apr_size_t)(shm-size-finfo.size); apr_off_t off=0; memset( bytes, 0, 1024 ); @@ -190,7 +190,7 @@ /* Now mmap it */ rc=apr_mmap_create( aprMmap, file, (apr_off_t)0, -finfo.size, APR_MMAP_READ | APR_MMAP_WRITE, +(apr_size_t)finfo.size, APR_MMAP_READ | APR_MMAP_WRITE, globalShmPool ); if( rc!=JK_OK ) { char error[256]; 1.25 +1 -1 jakarta-tomcat-connectors/jk/native2/common/jk_channel_apr_socket.c Index: jk_channel_apr_socket.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_channel_apr_socket.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- jk_channel_apr_socket.c 8 Jul 2002 13:42:03 - 1.24 +++ jk_channel_apr_socket.c 27 Sep 2002 13:07:28 - 1.25 @@ -218,7 +218,7 @@ apr_socket_t *sock=endpoint-channelData; apr_status_t ret; -apr_int32_t timeout = socketInfo-timeout * APR_USEC_PER_SEC; +apr_int32_t timeout = (apr_int32_t)(socketInfo-timeout * APR_USEC_PER_SEC); char msg[128]; if (apr_socket_create(sock, remote_sa-family, SOCK_STREAM, -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
mturk 2002/07/08 06:32:49 Modified:jk/native2/common jk_worker_status.c Log: no message Revision ChangesPath 1.30 +1 -1 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- jk_worker_status.c10 Jun 2002 21:55:06 - 1.29 +++ jk_worker_status.c8 Jul 2002 13:32:49 - 1.30 @@ -423,7 +423,7 @@ int didUpdate; if( w-mbean-debug 0 ) -env-l-jkLog(env, env-l, JK_LOG_INFO, status.service() %s %s\n, +env-l-jkLog(env, env-l, JK_LOG_DEBUG, status.service() %s %s\n, JK_CHECK_NULL(uri), JK_CHECK_NULL(s-query_string)); /* Generate the header */ -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/05/29 16:18:59 Modified:jk/native2/common jk_worker_status.c Log: Added checks for NULL, printf() doesn't like null params. I love Java :-) Revision ChangesPath 1.26 +20 -16jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- jk_worker_status.c29 May 2002 17:51:23 - 1.25 +++ jk_worker_status.c29 May 2002 23:18:59 - 1.26 @@ -75,6 +75,8 @@ #include jk_registry.h #include jk_endpoint.h +#define JK_CHECK_NULL( str ) ( ((str)==NULL) ? null : (str) ) + static void jk2_worker_status_displayStat(jk_env_t *env, jk_ws_service_t *s, jk_stat_t *stat, int *totalReqP, int *totalErrP, @@ -87,7 +89,7 @@ s-jkprintf(env, s, trtd%d/tdtd%d/tdtd%d/td\n, stat-workerId, stat-reqCnt, stat-errCnt ); -s-jkprintf(env, s, td%s/td\n, stat-active ); +s-jkprintf(env, s, td%s/td\n, JK_CHECK_NULL(stat-active) ); totalReq+=stat-reqCnt; totalErr+=stat-errCnt; @@ -223,7 +225,7 @@ /* This is an endpoint slot */ void *data=slot-data; -s-jkprintf(env, s, trth colspan='4'%s/th\n, slot-name ); +s-jkprintf(env, s, trth colspan='4'%s/th\n, JK_CHECK_NULL(slot-name) ); s-jkprintf(env, s, thCnt=%d/ththsize=%d/th\n, slot-structCnt, slot-structSize ); @@ -281,8 +283,8 @@ continue; if( needHeader ) { -s-jkprintf(env, s, H3%s runtime info/H3\n, type); -s-jkprintf(env, s, p%s information, using getAttribute() /p\n, type); +s-jkprintf(env, s, H3%s runtime info/H3\n, JK_CHECK_NULL(type) ); +s-jkprintf(env, s, p%s information, using getAttribute() /p\n, JK_CHECK_NULL(type) ); s-jkprintf(env, s, table border\n); s-jkprintf(env, s, trthid/th\n); @@ -290,17 +292,18 @@ for( j=0; mbean-getAttributeInfo[j] != NULL; j++ ) { char *pname=mbean-getAttributeInfo[j]; -s-jkprintf(env, s, th%s/th, pname ); +s-jkprintf(env, s, th%s/th, JK_CHECK_NULL(pname) ); } needHeader = JK_FALSE; } -s-jkprintf(env, s, /trtrtd%d/tdtd%s/td\n, mbean-id, mbean-localName); +s-jkprintf(env, s, /trtrtd%d/tdtd%s/td\n, mbean-id, +JK_CHECK_NULL(mbean-localName)); for( j=0; mbean-getAttributeInfo[j] != NULL; j++ ) { char *pname=mbean-getAttributeInfo[j]; s-jkprintf(env, s, td%s/td, -mbean-getAttribute( env, mbean, pname)); +JK_CHECK_NULL(mbean-getAttribute( env, mbean, pname))); } } if( ! needHeader ) { @@ -337,7 +340,7 @@ stat-maxTime=0; #endif env-l-jkLog(env, env-l, JK_LOG_INFO, reset() %s %p %p %p %d %d %d %d\n, - slot-name, data, statArray, stat, i, j, stat-reqCnt, stat-errCnt ); + JK_CHECK_NULL(slot-name), data, statArray, stat, i, j, stat-reqCnt, stat-errCnt ); } } } @@ -360,8 +363,8 @@ for( i=0; i map-size( env, map ) ; i++ ) { char *name=map-nameAt( env, map, i ); char *value=(char *)map-valueAt( env, map,i ); -s-jkprintf(env, s, trtd%s/tdtd%s/td/tr, name, -value); +s-jkprintf(env, s, trtd%s/tdtd%s/td/tr, JK_CHECK_NULL(name), +JK_CHECK_NULL(value)); } s-jkprintf(env, s, /table\n); } @@ -394,18 +397,19 @@ propCount=mbean-settings-size( env, mbean-settings ); if( propCount==0 ) { -s-jkprintf(env, s, trth%s/thtd/td/tr, mbean-name ); +s-jkprintf(env, s, trth%s/thtd/td/tr, JK_CHECK_NULL(mbean-name) ); } else { s-jkprintf(env, s, trth rowspan='%d'%s/thtd%s/tdtd%s/td/tr, -propCount, mbean-name, -mbean-settings-nameAt( env, mbean-settings, 0), -mbean-settings-valueAt( env, mbean-settings, 0)); +propCount, JK_CHECK_NULL(mbean-name), +JK_CHECK_NULL(mbean-settings-nameAt( env, mbean-settings, 0)), +JK_CHECK_NULL(mbean-settings-valueAt( env, mbean-settings, 0))); for( j=1; j propCount ; j++ ) {
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
nacho 02/05/19 14:40:09 Modified:jk/native2/common jk_worker_status.c Log: * Do not try to do print stats if stats object is null Revision ChangesPath 1.24 +4 -2 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- jk_worker_status.c16 May 2002 23:48:27 - 1.23 +++ jk_worker_status.c19 May 2002 21:40:09 - 1.24 @@ -180,8 +180,10 @@ continue; ep=mbean-object; -jk2_worker_status_displayStat( env, s, ep-stats, - totalReq, totalErr, totalTime, maxTime); +if( ep-stats != NULL ){ +jk2_worker_status_displayStat( env, s, ep-stats, + totalReq, totalErr, totalTime, maxTime); +} } s-jkprintf(env, s, /table\n); -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/05/16 14:00:05 Modified:jk/native2/common jk_worker_status.c Log: Make worker_status work for both shm-based and single process servers. If the server is single process there's no need for shm, we can read the data from the process. If the server is multi-process we do need shm. Revision ChangesPath 1.22 +128 -58 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- jk_worker_status.c15 May 2002 19:42:56 - 1.21 +++ jk_worker_status.c16 May 2002 21:00:04 - 1.22 @@ -75,6 +75,120 @@ #include jk_registry.h #include jk_endpoint.h +static void jk2_worker_status_displayStat(jk_env_t *env, jk_ws_service_t *s, + jk_stat_t *stat, + int *totalReqP, int *totalErrP, + unsigned long *totalTimeP, unsigned long *maxTimeP ) +{ +int totalReq=*totalReqP; +int totalErr=*totalErrP; +unsigned long totalTime=*totalTimeP; +unsigned long maxTime=*maxTimeP; + +s-jkprintf(env, s, trtd%d/tdtd%d/tdtd%d/td\n, +stat-workerId, stat-reqCnt, stat-errCnt ); +s-jkprintf(env, s, td%s/td\n, stat-active ); + +totalReq+=stat-reqCnt; +totalErr+=stat-errCnt; +#ifdef HAS_APR +{ +char ctimeBuf[APR_CTIME_LEN]; +apr_ctime( ctimeBuf, stat-connectedTime ); +s-jkprintf(env, s, td%s/td\n, ctimeBuf ); + +s-jkprintf(env, s, td%ld/td\n, stat-totalTime ); +s-jkprintf(env, s, td%ld/td\n, stat-maxTime ); + +if( stat-reqCnt + stat-errCnt 0 ) +s-jkprintf(env, s, td%ld/td\n, +(stat-totalTime / ( stat-reqCnt + stat-errCnt )) ); +else +s-jkprintf(env, s, td-/td\n); + +s-jkprintf(env, s, td%lu/td\n, stat-startTime ); +s-jkprintf(env, s, td%ld/td\n, +stat-jkStartTime - stat-startTime ); +s-jkprintf(env, s, td%ld/td\n, +stat-endTime - stat-startTime ); + +totalTime += stat-totalTime; +if( maxTime stat-maxTime ) +maxTime=stat-maxTime; +} +#endif +s-jkprintf(env, s, /tr\n); + +*maxTimeP=maxTime; +*totalTimeP=totalTime; +*totalReqP=totalReq; +*totalErrP=totalErr; +} + +static void jk2_worker_status_displayAggregate(jk_env_t *env, jk_ws_service_t *s, + int totalReq, int totalErr, + unsigned long totalTime, unsigned long maxTime ) +{ +s-jkprintf(env, s, Totals:\n); + +s-jkprintf(env, s, table bordertrthReq/ththErr/ththMax/ththAvg/th/tr); + +s-jkprintf(env, s, trtd%d/td\n, totalReq ); +s-jkprintf(env, s, td%d/td\n, totalErr ); + +s-jkprintf(env, s, td%ld/td\n, maxTime ); + +if( totalErr + totalReq 0 ) { +unsigned long avg=totalTime / ( totalReq + totalErr ); +s-jkprintf(env, s, td%ld/td\n, avg ); +} else { +s-jkprintf(env, s, td-/td\n ); +} + +s-jkprintf(env, s, /tr/table\n); +} + +static void jk2_worker_status_displayEndpointInfo(jk_env_t *env, jk_ws_service_t *s, + jk_workerEnv_t *wenv) +{ +int i; +int totalReq=0; +int totalErr=0; +unsigned long totalTime=0; +unsigned long maxTime=0; + +s-jkprintf(env, s, h2Endpoint info ( no shm )/h2\n); + +s-jkprintf(env, s, table border\n); + +s-jkprintf(env, s, trthWorker/ththReq/ththErr/th); +s-jkprintf(env, s,thLastReq/th\n ); + +#ifdef HAS_APR +s-jkprintf(env, s, thConnectionTime/ththTotalTime/ththMaxTime/ththAvgTime/th ); +s-jkprintf(env, s, thReqStart/thth+jk/thth+end/th ); +#endif +for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { +char *name=env-_objects-nameAt( env, env-_objects, i ); +jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); +jk_endpoint_t *ep; +int j; + +if( mbean==NULL ) +continue; + +if( strncmp( endpoint, mbean-type, 8 ) != 0 ) +continue; + +ep=mbean-object; +jk2_worker_status_displayStat( env, s, ep-stats, + totalReq, totalErr, totalTime, maxTime); +} +s-jkprintf(env, s, /table\n); + +jk2_worker_status_displayAggregate( env, s, +
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/05/15 12:42:56 Modified:jk/native2/common jk_worker_status.c Log: Display the stat info and totals. Revision ChangesPath 1.21 +71 -12jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- jk_worker_status.c14 May 2002 20:42:14 - 1.20 +++ jk_worker_status.c15 May 2002 19:42:56 - 1.21 @@ -75,24 +75,27 @@ #include jk_registry.h #include jk_endpoint.h + static void jk2_worker_status_displayScoreboardInfo(jk_env_t *env, jk_ws_service_t *s, jk_workerEnv_t *wenv) { jk_map_t *map=wenv-initData; int i; int j; +int totalReq=0; +int totalErr=0; +long totalTime=0; +long maxTime=0; int needHeader=JK_TRUE; if( wenv-shm==NULL || wenv-shm-head==NULL) return; -s-jkprintf(env, s, h2Scoreboard info/h2\n); - +s-jkprintf(env, s, h2Scoreboard info (ver=%d slots=%d)/h2\n, +wenv-shm-head-lbVer, wenv-shm-head-lastSlot ); + s-jkprintf(env, s, table border\n); -s-jkprintf(env, s, trtdVersion/tdtd%d/td/tr\n, wenv-shm-head-lbVer ); -s-jkprintf(env, s, trtdSlots/tdtd%d/td/tr\n, wenv-shm-head-lastSlot ); - for( i=1; i wenv-shm-head-lastSlot; i++ ) { jk_shm_slot_t *slot= wenv-shm-getSlot( env, wenv-shm, i ); @@ -102,21 +105,77 @@ /* This is an endpoint slot */ void *data=slot-data; -s-jkprintf(env, s, trth colspan='2'%s/th/tr\n, slot-name ); -s-jkprintf(env, s, trtdStructCnt/tdtd%d/td\n, slot-structCnt ); -s-jkprintf(env, s, trtdStructSize/tdtd%d/td\n, slot-structSize ); -s-jkprintf(env, s, trthRequests/ththErrors/th\n ); +s-jkprintf(env, s, trth colspan='4'%s/th\n, slot-name ); +s-jkprintf(env, s, thCnt=%d/ththsize=%d/th\n, +slot-structCnt, slot-structSize ); + +s-jkprintf(env, s, trthReq/ththErr/th); +s-jkprintf(env, s,thLastReq/th\n ); + +#ifdef HAVE_APR +s-jkprintf(env, s, thConnectionTime/ththTotalTime/ththMaxTime/ththAvgTime/th ); +s-jkprintf(env, s, thReqStart/thth+jk/thth+end/th ); +#endif /* XXX Add info about number of slots */ for( j=0; jslot-structCnt ; j++ ) { jk_stat_t *stat=(jk_stat_t *) ( data + j * sizeof( jk_stat_t )); -s-jkprintf(env, s, trtd%d/tdtd%d/td/tr\n, stat-reqCnt, stat-errCnt ); +s-jkprintf(env, s, trtd%d/tdtd%d/td\n, stat-reqCnt, stat-errCnt ); +s-jkprintf(env, s, td%s/td\n, stat-active ); + +totalReq+=stat-reqCnt; +totalErr+=stat-errCnt; +#ifdef HAVE_APR +{ +char ctimeBuf[APR_CTIME_LEN]; +apr_ctime( ctimeBuf, stat-connectedTime ); +s-jkprintf(env, s, td%s/td\n, ctimeBuf ); + +s-jkprintf(env, s, td%ld/td\n, stat-totalTime ); +s-jkprintf(env, s, td%ld/td\n, stat-maxTime ); + +if( stat-reqCnt + stat-errCnt 0 ) +s-jkprintf(env, s, td%ld/td\n, +(stat-totalTime / ( stat-reqCnt + stat-errCnt )) ); +else +s-jkprintf(env, s, td-/td\n); + +s-jkprintf(env, s, td%ld/td\n, stat-startTime ); +s-jkprintf(env, s, td%ld/td\n, +stat-jkStartTime - stat-startTime ); +s-jkprintf(env, s, td%ld/td\n, +stat-endTime - stat-startTime ); + +totalTime += stat-totalTime; +if( maxTime stat-maxTime ) +maxTime=stat-maxTime; +} +#endif +s-jkprintf(env, s, /tr\n); } } } s-jkprintf(env, s, /table\n); + +s-jkprintf(env, s, Totals:\n); + +s-jkprintf(env, s, table bordertrthReq/ththErr/ththMax/ththAvg/th/tr); + +s-jkprintf(env, s, trtd%d/td\n, totalReq ); +s-jkprintf(env, s, td%d/td\n, totalErr ); + +s-jkprintf(env, s, td%ld/td\n, maxTime ); + +if( totalErr + totalReq 0 ) { +long avg=totalTime / ( totalReq + totalErr ); +s-jkprintf(env, s, td%ld/td\n, avg ); +} else { +s-jkprintf(env, s, td-/td\n ); +
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/05/14 10:25:24 Modified:jk/native2/common jk_worker_status.c Log: - fix the display of object properties ( html ) - the status page will also check for config updates. It is very easy to separate the 2, and to add more 'control' functionality, but for now that should be enough. Revision ChangesPath 1.19 +19 -4 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- jk_worker_status.c9 May 2002 21:09:41 - 1.18 +++ jk_worker_status.c14 May 2002 17:25:24 - 1.19 @@ -182,8 +182,11 @@ if( propCount==0 ) { s-jkprintf(env, s, trth%s/thtd/td/tr, mbean-name ); } else { -s-jkprintf(env, s, trth rowspan='%d'%s/th/tr, propCount, mbean-name ); -for( j=0; j propCount ; j++ ) { +s-jkprintf(env, s, trth rowspan='%d'%s/thtd%s/tdtd%s/td/tr, +propCount, mbean-name, +mbean-settings-nameAt( env, mbean-settings, 0), +mbean-settings-valueAt( env, mbean-settings, 0)); +for( j=1; j propCount ; j++ ) { char *pname=mbean-settings-nameAt( env, mbean-settings, j); /* Don't save redundant information */ if( strcmp( pname, name ) != 0 ) { @@ -202,6 +205,8 @@ { char *uri=s-req_uri; jk_map_t *queryMap; +int status; +int didUpdate; if( w-mbean-debug 0 ) env-l-jkLog(env, env-l, JK_LOG_INFO, status.service() %s %s\n, @@ -219,6 +224,18 @@ if( s-query_string == NULL ) { s-query_string=get=*; } + +w-workerEnv-config-update( env, w-workerEnv-config, didUpdate ); +if( didUpdate ) { +jk_shm_t *shm=w-workerEnv-shm; + +/* Update the scoreboard's version - all other + jk2 processes will see this and update +*/ +if( shm!=NULL shm-head!=NULL ) +shm-head-lbVer++; +} + /* Body */ jk2_worker_status_displayRuntimeType(env, s, s-workerEnv, ajp13 ); @@ -245,8 +262,6 @@ status_worker.factory() OutOfMemoryException\n); return JK_ERR; } - -_this-pool = pool; _this-service= jk2_worker_status_service; -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/05/14 13:42:14 Modified:jk/native2/common jk_worker_status.c Log: Starting to add support for displaying info from shm. This brakes the encapsulation and is not extensible, but it's a start :-) Revision ChangesPath 1.20 +47 -0 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- jk_worker_status.c14 May 2002 17:25:24 - 1.19 +++ jk_worker_status.c14 May 2002 20:42:14 - 1.20 @@ -73,6 +73,51 @@ #include jk_env.h #include jk_requtil.h #include jk_registry.h +#include jk_endpoint.h + +static void jk2_worker_status_displayScoreboardInfo(jk_env_t *env, jk_ws_service_t *s, +jk_workerEnv_t *wenv) +{ +jk_map_t *map=wenv-initData; +int i; +int j; +int needHeader=JK_TRUE; + +if( wenv-shm==NULL || wenv-shm-head==NULL) +return; + +s-jkprintf(env, s, h2Scoreboard info/h2\n); + +s-jkprintf(env, s, table border\n); + +s-jkprintf(env, s, trtdVersion/tdtd%d/td/tr\n, wenv-shm-head-lbVer ); +s-jkprintf(env, s, trtdSlots/tdtd%d/td/tr\n, wenv-shm-head-lastSlot ); + +for( i=1; i wenv-shm-head-lastSlot; i++ ) { +jk_shm_slot_t *slot= wenv-shm-getSlot( env, wenv-shm, i ); + +if( slot==NULL ) continue; + +if( strncmp( slot-name, epStat, 6 ) == 0 ) { +/* This is an endpoint slot */ +void *data=slot-data; + +s-jkprintf(env, s, trth colspan='2'%s/th/tr\n, slot-name ); +s-jkprintf(env, s, trtdStructCnt/tdtd%d/td\n, slot-structCnt ); +s-jkprintf(env, s, trtdStructSize/tdtd%d/td\n, slot-structSize ); +s-jkprintf(env, s, trthRequests/ththErrors/th\n ); + +/* XXX Add info about number of slots */ +for( j=0; jslot-structCnt ; j++ ) { +jk_stat_t *stat=(jk_stat_t *) ( data + j * sizeof( jk_stat_t )); + +s-jkprintf(env, s, trtd%d/tdtd%d/td/tr\n, stat-reqCnt, stat-errCnt ); +} + +} +} +s-jkprintf(env, s, /table\n); +} /** Use 'introspection' data to find what getters an type support, * and display the information in a table @@ -236,11 +281,13 @@ shm-head-lbVer++; } +s-jkprintf(env, s, Status information for child %d, s-workerEnv-childId ); /* Body */ jk2_worker_status_displayRuntimeType(env, s, s-workerEnv, ajp13 ); jk2_worker_status_displayRuntimeType(env, s, s-workerEnv, endpoint ); jk2_worker_status_displayRuntimeType(env, s, s-workerEnv, uri ); +jk2_worker_status_displayScoreboardInfo(env, s, s-workerEnv ); jk2_worker_status_displayConfigProperties(env, s, s-workerEnv ); jk2_worker_status_displayActiveProperties(env, s, s-workerEnv ); -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/05/09 14:09:41 Modified:jk/native2/common jk_worker_status.c Log: Much cleaner and easier to read report, remove duplicated code and generalize a bit. We'll display a table for each object type ( that we care about ): - ajp workers - uris - endpoints For each object we display all we can get via 'getters' ( if you want more info, just add a new attribute for getAttribute ). The workers are the important piece - the state and counters. Note that at this moment we display only the info in the apache instance that is active. It'll change to use the shmem scoreboard. Revision ChangesPath 1.18 +37 -114 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- jk_worker_status.c3 May 2002 18:10:58 - 1.17 +++ jk_worker_status.c9 May 2002 21:09:41 - 1.18 @@ -74,38 +74,16 @@ #include jk_requtil.h #include jk_registry.h -static void jk2_worker_status_displayActiveProperties(jk_env_t *env, jk_ws_service_t *s, - jk_workerEnv_t *wenv) -{ -jk_map_t *map=wenv-initData; -int i; - -s-jkprintf(env, s, H3Processed config/H3\n); -s-jkprintf(env, s, pAll settings ( automatic and configured ), after substitution/p\n); - -s-jkprintf(env, s, table border\n); -s-jkprintf(env, s, trthName/ththValue/td/tr\n); -for( i=0; i map-size( env, map ) ; i++ ) { -char *name=map-nameAt( env, map, i ); -char *value=(char *)map-valueAt( env, map,i ); -s-jkprintf(env, s, trtd%s/tdtd%s/td/tr, name, -value); -} -s-jkprintf(env, s, /table\n); - -} - -static void jk2_worker_status_displayRuntimeWorkers(jk_env_t *env, jk_ws_service_t *s, - jk_workerEnv_t *wenv) +/** Use 'introspection' data to find what getters an type support, + * and display the information in a table + */ +static void jk2_worker_status_displayRuntimeType(jk_env_t *env, jk_ws_service_t *s, + jk_workerEnv_t *wenv, char *type) { jk_map_t *map=wenv-initData; int i; int needHeader=JK_TRUE; -s-jkprintf(env, s, H3Worker runtime info/H3\n); -s-jkprintf(env, s, pWorker information, using getAttribute() /p\n); - -s-jkprintf(env, s, table border\n); for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { char *name=env-_objects-nameAt( env, env-_objects, i ); jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); @@ -122,10 +100,14 @@ if( mbean-getAttribute == NULL ) continue; -if( strncmp( ajp13, mbean-type, 5 ) != 0 ) +if( strncmp( type, mbean-type, 5 ) != 0 ) continue; if( needHeader ) { +s-jkprintf(env, s, H3%s runtime info/H3\n, type); +s-jkprintf(env, s, p%s information, using getAttribute() /p\n, type); + +s-jkprintf(env, s, table border\n); s-jkprintf(env, s, trthname/th\n); for( j=0; mbean-getAttributeInfo[j] != NULL; j++ ) { char *pname=mbean-getAttributeInfo[j]; @@ -143,95 +125,35 @@ mbean-getAttribute( env, mbean, pname)); } } -s-jkprintf( env,s , /table\n ); -} - -static void jk2_worker_status_displayRuntimeUris(jk_env_t *env, jk_ws_service_t *s, - jk_workerEnv_t *wenv) -{ -jk_map_t *map=wenv-initData; -int i; - -s-jkprintf(env, s, H3URI info/H3\n); -s-jkprintf(env, s, pInformation about uri mappings. -Will include some statistics ( for the active process )/p\n); -s-jkprintf(env, s, table border\n); -s-jkprintf(env, s, trthName/ththValue/td/tr\n); -for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { -char *name=env-_objects-nameAt( env, env-_objects, i ); -jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); -int j; -int propCount; - -/* Don't display aliases */ -if( strchr(name, ':')==NULL ) -continue; - -if( mbean==NULL || mbean-getAttributeInfo==NULL ) -continue; - -if( mbean-getAttribute == NULL ) -continue; - -if( strncmp( uri, mbean-type, 3 ) != 0 ) -continue; - -for( j=0; mbean-getAttributeInfo[j] != NULL; j++ ) { -char
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/05/03 10:37:35 Modified:jk/native2/common jk_worker_status.c Log: Better organization, make the worker status the first on the page. See also the changes in jk_worker_ajp, now informations about lb status and number of requests/err will be easy accessible. Revision ChangesPath 1.16 +101 -1jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- jk_worker_status.c2 May 2002 03:13:05 - 1.15 +++ jk_worker_status.c3 May 2002 17:37:35 - 1.16 @@ -95,6 +95,99 @@ } +static void jk2_worker_status_displayRuntimeWorkers(jk_env_t *env, jk_ws_service_t *s, + jk_workerEnv_t *wenv) +{ +jk_map_t *map=wenv-initData; +int i; +int needHeader=JK_TRUE; + +s-jkprintf(env, s, H3Worker runtime info/H3\n); +s-jkprintf(env, s, pWorker information, using getAttribute() /p\n); + +s-jkprintf(env, s, table border\n); +for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { +char *name=env-_objects-nameAt( env, env-_objects, i ); +jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); +int j; +int propCount; + +/* Don't display aliases */ +if( strchr(name, ':')==NULL ) +continue; + +if( mbean==NULL || mbean-getAttributeInfo==NULL ) +continue; + +if( mbean-getAttribute == NULL ) +continue; + +if( strncmp( ajp13, mbean-type, 5 ) != 0 ) +continue; + +if( needHeader ) { +s-jkprintf(env, s, trthname/th\n); +for( j=0; mbean-getAttributeInfo[j] != NULL; j++ ) { +char *pname=mbean-getAttributeInfo[j]; + +s-jkprintf(env, s, th%s/th, pname ); +} +needHeader = JK_FALSE; +} + +s-jkprintf(env, s, /trtrtd%s/td\n, mbean-localName); +for( j=0; mbean-getAttributeInfo[j] != NULL; j++ ) { +char *pname=mbean-getAttributeInfo[j]; + +s-jkprintf(env, s, td%s/td, +mbean-getAttribute( env, mbean, pname)); +} +} +s-jkprintf( env,s , /table\n ); +} + +static void jk2_worker_status_displayRuntimeUris(jk_env_t *env, jk_ws_service_t *s, + jk_workerEnv_t *wenv) +{ +jk_map_t *map=wenv-initData; +int i; + +s-jkprintf(env, s, H3URI info/H3\n); +s-jkprintf(env, s, pInformation about uri mappings. +Will include some statistics ( for the active process )/p\n); +s-jkprintf(env, s, table border\n); +s-jkprintf(env, s, trthName/ththValue/td/tr\n); +for( i=0; i env-_objects-size( env, env-_objects ); i++ ) { +char *name=env-_objects-nameAt( env, env-_objects, i ); +jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); +int j; +int propCount; + +/* Don't display aliases */ +if( strchr(name, ':')==NULL ) +continue; + +if( mbean==NULL || mbean-getAttributeInfo==NULL ) +continue; + +if( mbean-getAttribute == NULL ) +continue; + +if( strncmp( uri, mbean-type, 3 ) != 0 ) +continue; + +for( j=0; mbean-getAttributeInfo[j] != NULL; j++ ) { +char *pname=mbean-getAttributeInfo[j]; + + +s-jkprintf(env, s, trtd%s/tdtd%s/tdtd%s/td/tr, +mbean-localName, pname, +mbean-getAttribute( env, mbean, pname)); +} +} +s-jkprintf( env,s , /table\n ); +} + static void jk2_worker_status_displayRuntimeProperties(jk_env_t *env, jk_ws_service_t *s, jk_workerEnv_t *wenv) { @@ -122,6 +215,11 @@ if( mbean-getAttribute == NULL ) continue; +if( strncmp( uri, mbean-type, 3 ) == 0 || +strncmp( ajp13, mbean-type, 5 ) == 0 ) { +continue; +} + for( j=0; mbean-getAttributeInfo[j] != NULL; j++ ) { char *pname=mbean-getAttributeInfo[j]; @@ -200,9 +298,11 @@ } /* Body */ +jk2_worker_status_displayRuntimeWorkers(env, s, s-workerEnv ); +jk2_worker_status_displayRuntimeUris(env, s, s-workerEnv );
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/03/25 19:04:10 Modified:jk/native2/common jk_worker_status.c Log: Cleaner and more accurate display of configured and processed properties. Revision ChangesPath 1.12 +18 -10jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- jk_worker_status.c24 Mar 2002 19:24:26 - 1.11 +++ jk_worker_status.c26 Mar 2002 03:04:10 - 1.12 @@ -163,22 +163,30 @@ char *name=env-_objects-nameAt( env, env-_objects, i ); jk_bean_t *mbean=env-_objects-valueAt( env, env-_objects, i ); int j; +int propCount; + +/* Don't display aliases */ +if( strchr(name, ':')==NULL ) +continue; if( mbean==NULL || mbean-settings==NULL ) continue; -s-jkprintf(env, s, trtd%s/td, mbean-name ); - -for( j=0; j mbean-settings-size( env, mbean-settings ); j++ ) { -char *pname=mbean-settings-nameAt( env, mbean-settings, j); -/* Don't save redundant information */ -if( strcmp( pname, name ) != NULL ) { -s-jkprintf( env, s, td%s/tdtd%s/td\n, - pname, - mbean-settings-valueAt( env, mbean-settings, j)); +propCount=mbean-settings-size( env, mbean-settings ); + +if( propCount==0 ) { +s-jkprintf(env, s, trtd%s/td/tr, mbean-name ); +} else { +for( j=0; j propCount ; j++ ) { +char *pname=mbean-settings-nameAt( env, mbean-settings, j); +/* Don't save redundant information */ +if( strcmp( pname, name ) != 0 ) { +s-jkprintf(env, s, trtd%s/tdtd%s/tdtd%s/td/tr, +name, pname, +mbean-settings-valueAt( env, mbean-settings, j)); +} } } -s-jkprintf( env,s , /tr\n ); } s-jkprintf( env,s , /table\n ); -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/02/28 15:07:22 Modified:jk/native2/common jk_worker_status.c Log: Display all mappings, few other updates. Revision ChangesPath 1.6 +20 -15jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- jk_worker_status.c21 Feb 2002 11:13:59 - 1.5 +++ jk_worker_status.c28 Feb 2002 23:07:22 - 1.6 @@ -95,7 +95,7 @@ va_start(vargs,fmt); buf-pos=0; /* Temp - we don't buffer */ -ret=apr_vsnprintf(buf-buf + buf-pos, buf-size - buf-pos, fmt, vargs); +ret=vsnprintf(buf-buf + buf-pos, buf-size - buf-pos, fmt, vargs); va_end(vargs); buf-s-write( env, buf-s, buf-buf, strlen(buf-buf) ); @@ -153,7 +153,7 @@ static void jk2_worker_status_displayWorkerEnv(jk_env_t *env, jk_buff_t *buf, jk_workerEnv_t *wenv) { -jk_map_t *map=wenv-init_data; +jk_map_t *map=wenv-initData; int i; jk2_printf(env, buf, H2Worker Env Info/H2\n); @@ -180,30 +180,35 @@ } -static void jk2_worker_status_displayWebapps(jk_env_t *env, jk_buff_t *buf, +static void jk2_worker_status_displayMappings(jk_env_t *env, jk_buff_t *buf, jk_workerEnv_t *wenv) { -jk_map_t *map=wenv-webapps; +jk_uriEnv_t **maps=wenv-uriMap-maps; +int size=wenv-uriMap-size; int i; -jk2_printf(env, buf, H2Webapps/H2\n); +jk2_printf(env, buf, H2Mappings/H2\n); -if( map==NULL ) { +if( maps==NULL ) { jk2_printf(env, buf, None\n); return; } -jk2_printf(env, buf, table border\n); +jk2_printf(env, buf, table class='mappings' border\n); -jk2_printf(env, buf, trthName/ththDocBase/th - thMappings/th/tr); +jk2_printf(env, buf, trthHost/ththUri/th + thWorker/th/tr); -for( i=0; i map-size( env, map ) ; i++ ) { -char *name=map-nameAt( env, map, i ); -jk_webapp_t *webapp=(jk_webapp_t *)map-valueAt( env, map,i ); +for( i=0; i size ; i++ ) { +jk_uriEnv_t *uriEnv=maps[i]; -jk2_printf(env, buf, tr id='webapp.%s', name ); -jk2_printf(env, buf, td class='name'%s/td, name ); +jk2_printf(env, buf, tr ); +jk2_printf(env, buf, td class='host'%s/td, + (uriEnv-virtual==NULL) ? * : uriEnv-virtual ); +jk2_printf(env, buf, td class='uri'%s/td, + uriEnv-uri); +jk2_printf(env, buf, td class='worker'%s/td, + (uriEnv-workerName==NULL) ? DEFAULT : uriEnv-workerName ); jk2_printf(env, buf, /tr ); } @@ -260,7 +265,7 @@ /* Body */ jk2_worker_status_displayWorkerEnv(env, buff, s-workerEnv ); jk2_worker_status_displayWorkers(env, buff, s-workerEnv ); -jk2_worker_status_displayWebapps(env, buff, s-workerEnv ); +jk2_worker_status_displayMappings(env, buff, s-workerEnv ); jk2_worker_status_displayConnections(env, buff, s-workerEnv ); s-afterRequest( env, s); -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/02/06 11:16:56 Modified:jk/native2/common jk_worker_status.c Log: Small update, remove debug statement. Revision ChangesPath 1.4 +24 -13jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- jk_worker_status.c26 Jan 2002 06:58:50 - 1.3 +++ jk_worker_status.c6 Feb 2002 19:16:56 - 1.4 @@ -99,7 +99,7 @@ va_end(vargs); buf-s-write( env, buf-s, buf-buf, strlen(buf-buf) ); -fprintf(stderr, Writing %d %s \n, ret, buf-buf); +/*fprintf(stderr, Writing %d %s \n, ret, buf-buf); */ } static void jk_worker_status_displayWorkers( jk_env_t *env, jk_buff_t *buf, @@ -107,25 +107,39 @@ { jk_map_t *map=wenv-worker_map; int i; +int count=map-size( env, map ); -jk_printf(env, buf, H2Workers/H2\n ); +jk_printf(env, buf, H2Active workers/H2\n ); jk_printf(env, buf, table border\n); -jk_printf(env, buf, trthName/ththRetries/th - thErr/ththRecovery/th/tr); +jk_printf(env, buf, trthName/ththType/th + thChannel/ththRoute/th + thError state/ththRecovery/th + thEndpoint cache/th/tr); -for( i=0; i map-size( env, map ) ; i++ ) { +for( i=0; i count ; i++ ) { char *name=map-nameAt( env, map, i ); jk_worker_t *worker=(jk_worker_t *)map-valueAt( env, map,i ); -jk_printf(env, buf, tr id='worker.%s', name ); -jk_printf(env, buf, td class='name'%s/td, name ); -jk_printf(env, buf, td class='connect_retry'%d/td, - worker-connect_retry_attempts ); +jk_printf(env, buf, trtd%s/td, name ); +jk_printf(env, buf, td%s/td, worker-type ); +if( worker-channel != NULL ) { +jk_printf(env, buf, td%s/td,worker-channel-name ); +} else { +jk_printf(env, buf, tdnbsp;/td ); +} +if( worker-route != NULL ) { +jk_printf(env, buf, td%s/td,worker-route ); +} else { +jk_printf(env, buf, tdnbsp;/td ); +} jk_printf(env, buf, td class='in_error'%d/td, worker-in_error_state ); -jk_printf(env, buf, td class='in_error'%d/td, +jk_printf(env, buf, td class='in_recovering'%d/td, worker-in_recovering ); +jk_printf(env, buf, td class='epCount'%d/td, + ( worker-endpointCache == NULL ? 0 : +worker-endpointCache-count )); /* Endpoint cache ? */ @@ -145,9 +159,6 @@ jk_printf(env, buf, H2Worker Env Info/H2\n); jk_printf(env, buf, table border\n); -jk_printf(env, buf, trthnum_workers/th - td id='workersCount'%d/td/tr\n, - wenv-num_of_workers); /* Could be modified dynamically */ jk_printf(env, buf, trthLogLevel/th td id='logLevel'%d/td/tr\n, -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/01/25 22:58:50 Modified:jk/native2/common jk_worker_status.c Log: Removed all the endpoint stuff. This workers will display various info for debugging, but it needs the info :-) Revision ChangesPath 1.3 +12 -102 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- jk_worker_status.c12 Jan 2002 05:20:17 - 1.2 +++ jk_worker_status.c26 Jan 2002 06:58:50 - 1.3 @@ -213,7 +213,7 @@ } -static jk_buff_t *jk_worker_status_createBuffer(jk_env_t *env, jk_endpoint_t *e, +static jk_buff_t *jk_worker_status_createBuffer(jk_env_t *env, jk_ws_service_t *s) { jk_buff_t *buff; @@ -229,13 +229,13 @@ return buff; } -static int JK_METHOD service(jk_env_t *env, jk_endpoint_t *e, - jk_ws_service_t *s, - int *is_recoverable_error) +static int JK_METHOD service(jk_env_t *env, + jk_worker_t *w, + jk_ws_service_t *s) { -jk_buff_t *buff=jk_worker_status_createBuffer(env, e, s ); +jk_buff_t *buff=jk_worker_status_createBuffer(env, s ); -env-l-jkLog(env, env-l, JK_LOG_INFO, status.service() %p\n, e); +env-l-jkLog(env, env-l, JK_LOG_INFO, status.service()\n); /* Generate the header */ s-status=200; @@ -255,98 +255,6 @@ s-afterRequest( env, s); fprintf(stderr, After req %s \n, buff); return JK_TRUE; - -} - -static int JK_METHOD done(jk_env_t *env, jk_endpoint_t *e) -{ -return JK_TRUE; -} - -static int JK_METHOD validate(jk_env_t *env, jk_worker_t *_this, - jk_map_t *props, jk_workerEnv_t *we) -{ -return JK_TRUE; -} - -static int JK_METHOD init(jk_env_t *env, jk_worker_t *_this, - jk_map_t *props, jk_workerEnv_t *we) -{ -return JK_TRUE; -} - -static int JK_METHOD get_endpoint(jk_env_t *env, jk_worker_t *_this, - jk_endpoint_t **pend) -{ -jk_endpoint_t *e; -jk_pool_t *endpointPool; - -if (_this-endpointCache != NULL ) { -e=_this-endpointCache-get( env, _this-endpointCache ); -if (e!=NULL) { -env-l-jkLog(env, env-l, JK_LOG_INFO, - status.getEndpoint(): Reusing endpoint\n); -*pend = e; -return JK_TRUE; -} -} - -endpointPool=_this-pool-create( env, _this-pool, HUGE_POOL_SIZE); - -e = (jk_endpoint_t *)endpointPool-calloc(env, endpointPool, - sizeof(jk_endpoint_t)); -if(e==NULL) { -env-l-jkLog(env, env-l, JK_LOG_ERROR, - status_worker.getEndpoint() OutOfMemoryException\n); -return JK_FALSE; -} - -e-pool = endpointPool; -e-cPool=endpointPool-create( env,endpointPool, HUGE_POOL_SIZE ); -e-worker = _this; -e-service = service; -e-done = done; -e-channelData = NULL; -*pend = e; - -env-l-jkLog(env, env-l, JK_LOG_INFO, status_worker.getEndpoint() %p\n, e); -return JK_TRUE; -} - - -static int JK_METHOD destroy(jk_env_t *env, jk_worker_t *w) -{ -int i = 0; - -if(w==NULL ) { -env-l-jkLog(env, env-l, JK_LOG_ERROR, - status_worker.destroy() NullPointerException\n); -return JK_FALSE; -} - -if( w-endpointCache != NULL ) { -for( i=0; i w-endpointCache-ep_cache_sz; i++ ) { -jk_endpoint_t *e; - -e= w-endpointCache-get( env, w-endpointCache ); -if( e==NULL ) { -// we finished all endpoints in the cache -break; -} - -/* Nothing else to clean up ? */ -e-cPool-close( env, e-cPool ); -e-pool-close( env, e-pool ); -} -w-endpointCache-destroy( env, w-endpointCache ); - -env-l-jkLog(env, env-l, JK_LOG_DEBUG, - status.destroy() closed %d cached endpoints\n,i); -} - -w-pool-close(env, w-pool); - -return JK_TRUE; } @@ -376,11 +284,13 @@ _this-lb_workers = NULL; _this-num_of_workers = 0; _this-worker_private = NULL; -_this-validate = validate; -_this-init = init; -_this-get_endpoint = get_endpoint; -_this-destroy= destroy; +_this-validate = NULL; +
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c
costin 02/01/11 21:20:18 Modified:jk/native2/common jk_worker_status.c Log: More code to display status information on the jni worker. Very good for debugging ( especially lb ). Revision ChangesPath 1.2 +162 -30 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- jk_worker_status.c31 Dec 2001 20:37:01 - 1.1 +++ jk_worker_status.c12 Jan 2002 05:20:17 - 1.2 @@ -76,21 +76,167 @@ #define JK_BUF_SIZE 4096 -typedef struct { +typedef struct jk_buff { int pos; int size; char *buf; + +jk_ws_service_t *s; + +void (*jkprintf)( jk_env_t *env, struct jk_buff *buf, char *frm,... ); +void (*flush)( jk_env_t *env ); } jk_buff_t; +static void jk_printf( jk_env_t *env, jk_buff_t *buf, char *fmt,... ) +{ +va_list vargs; +int ret=0; + +va_start(vargs,fmt); +buf-pos=0; /* Temp - we don't buffer */ +ret=apr_vsnprintf(buf-buf + buf-pos, buf-size - buf-pos, fmt, vargs); +va_end(vargs); + +buf-s-write( env, buf-s, buf-buf, strlen(buf-buf) ); +fprintf(stderr, Writing %d %s \n, ret, buf-buf); +} + +static void jk_worker_status_displayWorkers( jk_env_t *env, jk_buff_t *buf, + jk_workerEnv_t *wenv ) +{ +jk_map_t *map=wenv-worker_map; +int i; + +jk_printf(env, buf, H2Workers/H2\n ); +jk_printf(env, buf, table border\n); + +jk_printf(env, buf, trthName/ththRetries/th + thErr/ththRecovery/th/tr); + +for( i=0; i map-size( env, map ) ; i++ ) { +char *name=map-nameAt( env, map, i ); +jk_worker_t *worker=(jk_worker_t *)map-valueAt( env, map,i ); + +jk_printf(env, buf, tr id='worker.%s', name ); +jk_printf(env, buf, td class='name'%s/td, name ); +jk_printf(env, buf, td class='connect_retry'%d/td, + worker-connect_retry_attempts ); +jk_printf(env, buf, td class='in_error'%d/td, + worker-in_error_state ); +jk_printf(env, buf, td class='in_error'%d/td, + worker-in_recovering ); + +/* Endpoint cache ? */ + +/* special case for status worker */ + +jk_printf(env, buf, /tr ); +} +jk_printf(env, buf, /table\n); +} + +static void jk_worker_status_displayWorkerEnv( jk_env_t *env, jk_buff_t *buf, + jk_workerEnv_t *wenv ) +{ +jk_map_t *map=wenv-init_data; +int i; + +jk_printf(env, buf, H2Worker Env Info/H2\n); + +jk_printf(env, buf, table border\n); +jk_printf(env, buf, trthnum_workers/th + td id='workersCount'%d/td/tr\n, + wenv-num_of_workers); +/* Could be modified dynamically */ +jk_printf(env, buf, trthLogLevel/th + td id='logLevel'%d/td/tr\n, + wenv-log_level); + +jk_printf(env, buf, /table\n); + +jk_printf(env, buf, H3Properties/H3\n); +jk_printf(env, buf, table border\n); +jk_printf(env, buf, trthName/ththValue/td/tr\n); +for( i=0; i map-size( env, map ) ; i++ ) { +char *name=map-nameAt( env, map, i ); +char *value=(char *)map-valueAt( env, map,i ); + +jk_printf(env, buf, trtd%s/tdtd%s/td/tr, name, + value); +} +jk_printf(env, buf, /table\n); + +} + +static void jk_worker_status_displayWebapps( jk_env_t *env, jk_buff_t *buf, + jk_workerEnv_t *wenv ) +{ +jk_map_t *map=wenv-webapps; +int i; + +jk_printf(env, buf, H2Webapps/H2\n); + +if( map==NULL ) { +jk_printf(env, buf, None\n); +return; +} + +jk_printf(env, buf, table border\n); + +jk_printf(env, buf, trthName/ththDocBase/th + thMappings/th/tr); + +for( i=0; i map-size( env, map ) ; i++ ) { +char *name=map-nameAt( env, map, i ); +jk_webapp_t *webapp=(jk_webapp_t *)map-valueAt( env, map,i ); + +jk_printf(env, buf, tr id='webapp.%s', name ); +jk_printf(env, buf, td class='name'%s/td, name ); +jk_printf(env, buf, /tr ); +} + + +jk_printf(env, buf, /table\n); +} + +/* Channels and connections, including 'pooled' ones + */ +static void jk_worker_status_displayConnections( jk_env_t *env, jk_buff_t *buf, + jk_workerEnv_t *wenv ) +{ +jk_printf(env, buf, H2Active
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_worker_status.c jk_registry.c jk_registry.h
costin 01/12/31 12:37:01 Modified:jk/native2/common jk_registry.c jk_registry.h Added: jk/native2/common jk_worker_status.c Log: Last thing for this year, initial ( skeleton ) for the status worker, to display informations like mod_status. Usefull for debugging and monitoring. Revision ChangesPath 1.7 +2 -1 jakarta-tomcat-connectors/jk/native2/common/jk_registry.c Index: jk_registry.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_registry.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- jk_registry.c 13 Dec 2001 18:48:13 - 1.6 +++ jk_registry.c 31 Dec 2001 20:37:01 - 1.7 @@ -63,7 +63,7 @@ #include jk_registry.h /*** * Description: Worker list* - * Version: $Revision: 1.6 $ * + * Version: $Revision: 1.7 $ * ***/ /** Static declarations for all 'hardcoded' modules. This is a hack, @@ -111,6 +111,7 @@ env-registerFactory( env, worker, ajp13, jk_worker_ajp14_factory ); env-registerFactory( env, worker, ajp14, jk_worker_ajp14_factory ); env-registerFactory( env, worker, lb,jk_worker_lb_factory ); + env-registerFactory( env, worker, status, jk_worker_status_factory ); env-registerFactory( env, channel, socket, jk_channel_socket_factory ); env-registerFactory( env, handler, response, jk_handler_response_factory ); env-registerFactory( env, handler, logon, jk_handler_logon_factory ); 1.2 +5 -1 jakarta-tomcat-connectors/jk/native2/common/jk_registry.h Index: jk_registry.h === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_registry.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- jk_registry.h 13 Dec 2001 18:48:13 - 1.1 +++ jk_registry.h 31 Dec 2001 20:37:01 - 1.2 @@ -62,7 +62,7 @@ /*** * Description: Worker list* - * Version: $Revision: 1.1 $ * + * Version: $Revision: 1.2 $ * ***/ /** Static declarations for all 'hardcoded' modules. This is a hack, @@ -97,6 +97,10 @@ int JK_METHOD jk_worker_jni_factory(jk_env_t *env, jk_pool_t *pool, void **result, const char *type, const char *name); + +int JK_METHOD jk_worker_status_factory(jk_env_t *env, jk_pool_t *pool, + void **result, + const char *type, const char *name); int JK_METHOD jk_worker_ajp12_factory(jk_env_t *env, jk_pool_t *pool, void **result, 1.1 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c === /* = * * * * The Apache Software License, Version 1.1 * * * * Copyright (c) 1999-2001 The Apache Software Foundation. * * All rights reserved.* * * * = * * * * Redistribution and use in source and binary forms, with or without modi- * * fication, are permitted provided that the following conditions are met: * * * * 1. Redistributions of source code must retain the above copyright notice * *notice, this list of conditions and the following disclaimer. * * * * 2. Redistributions in binary form must reproduce the above copyright * *notice, this list of conditions and the following disclaimer in the * *documentation and/or