cvs commit: jakarta-tomcat-connectors/jk/native2/include jk_service.h
hgomez 2004/02/23 07:44:26 Modified:jk/native2 CHANGES.txt jk/native2/common jk_workerEnv.c jk_worker_ajp13.c jk/native2/include jk_service.h Log: Port jk recovery strategy. Need review and more tests Revision ChangesPath 1.13 +2 -1 jakarta-tomcat-connectors/jk/native2/CHANGES.txt Index: CHANGES.txt === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/CHANGES.txt,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- CHANGES.txt 23 Feb 2004 13:57:27 - 1.12 +++ CHANGES.txt 23 Feb 2004 15:44:26 - 1.13 @@ -11,6 +11,7 @@ * Make default port configurable (9009 on Netware, 8009 elsewhere) * Fix problem when in Load-Balancing and POST [Henri Gomez]. * Add recovery_opts (recovery strategy) which help make POST recovery configurable [Henri Gomez]. + Changes with JK2 2.0.4: * Added the load balancer stickySession property. If set to 0 requests with servlet SESSION ID's can be routed to any Tomcat 1.63 +27 -10jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c Index: jk_workerEnv.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c,v retrieving revision 1.62 retrieving revision 1.63 diff -u -r1.62 -r1.63 --- jk_workerEnv.c25 Sep 2003 15:23:22 - 1.62 +++ jk_workerEnv.c23 Feb 2004 15:44:26 - 1.63 @@ -468,7 +468,7 @@ int rc; jk_handler_t **handlerTable=wEnv-handlerTable; int maxHandler=wEnv-lastMessageId; - + int headeratclient=JK_FALSE; ep-currentRequest=req; /* Process reply - this is the main loop */ @@ -484,15 +484,27 @@ ep-worker-channel-mbean-name); msg-reset(env, msg); - + + /* Check for reply in timeout */ + if ( ep-worker-reply_timeout != 0) { + if (ep-worker-channel-hasinput(env, ep-worker-channel, ep, ep-worker-reply_timeout) != JK_TRUE) { + env-l-jkLog(env, env-l, JK_LOG_ERROR, + workerEnv.processCallbacks() no reply after %d ms waiting\n, timeout); + + return JK_ERR; + } + } + rc= ep-worker-channel-recv( env, ep-worker-channel, ep, msg); if( rc!=JK_OK ) { env-l-jkLog(env, env-l, JK_LOG_ERROR, workerEnv.processCallbacks() Error reading reply\n); -/* It may be the first receive, let the caller decide if it's ok to retry - */ -/* ep-recoverable=JK_FALSE; */ + +/* Error is unrecoverable if tomcat failed (Tomcat allready got request) */ +if (ep-worker-recovery_opts RECOVER_ABORT_IF_TCGETREQUEST) +ep-recoverable=JK_FALSE; + return rc; } @@ -537,16 +549,21 @@ msg ); if (rc 0) { env-l-jkLog(env, env-l, JK_LOG_ERROR, - ajp14.processCallbacks() error sending response data\n); + workerEnv.processCallbacks() error sending response data\n); ep-recoverable = JK_FALSE; return rc; } break; case JK_HANDLER_ERROR: /* Normal error ( for example writing to the client failed ). - * The ajp connection is still in a stable state. + * The ajp connection is still in a stable state but if by configuration + * recoveryOpts is to 1 or 3, we should mark it at unrecoverable. */ -ep-recoverable = JK_TRUE; +if (ep-worker-recovery_opts RECOVER_ABORT_IF_TCSENDHEADER) + ep-recoverable = JK_FALSE; +else + ep-recoverable = JK_TRUE; + return rc; case JK_HANDLER_FATAL: /* @@ -557,7 +574,7 @@ default: /* Unknown status */ env-l-jkLog(env, env-l, JK_LOG_ERROR, - ajp14.processCallbacks() unknonwn status %d\n, rc); + workerEnv.processCallbacks() unknown status %d\n, rc); ep-recoverable = JK_FALSE; return rc; } 1.57 +2 -2 jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c Index: jk_worker_ajp13.c === RCS file:
AUTO {VATTENFALL#076-836}cvs commit: jakarta-tomcat-connectors/jk/native2/include jk_service.h
Hej! Tack för din e-post. Du har tilldelats ärendenummer # 76836. Vi kommer att besvara ditt ärende under ordinarie öppettider och återkommer med svar snarast möjligt. Vid fortsatta kontakter med oss ber vi dig använda svarsknappen i ditt e-postsystem. Då bibehålls ditt ärendenummer. Har du inte angett ditt kundnummer ber vi dig göra det i framtida e-post. Besök gärna vår hemsida www.vattenfall.se Med vänlig hälsning Vattenfall AB Försäljning Sverige Dear customer! Your inquiry has been assigned reference number #76836. We will return to you with a reply as soon as possible. In case of further contacts with Vattenfall concerning this inquiry please use the Reply-button in your e-mail system thus retaining the reference number. If you have not alreday stated your customer number please do so in a future e-mail. Best regards Vattenfall AB Försäljning Sverige
cvs commit: jakarta-tomcat-connectors/jk/native2/include jk_service.h
remm2002/08/26 02:54:35 Modified:jk/java/org/apache/ajp RequestHandler.java jk/java/org/apache/jk/common HandlerRequest.java jk/native/common jk_ajp_common.c jk_ajp_common.h jk/native2/common jk_requtil.c jk/native2/include jk_service.h Log: - Add JK and JK 2 support for advanced Delta V methods (no logic change, but let me know if it causes problems) needed for Slide 2.0. - Patch submitted by Peter Nevermann Peter.Nevermann at softwareag.com Revision ChangesPath 1.16 +7 -1 jakarta-tomcat-connectors/jk/java/org/apache/ajp/RequestHandler.java Index: RequestHandler.java === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/ajp/RequestHandler.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- RequestHandler.java 15 Jun 2002 01:52:47 - 1.15 +++ RequestHandler.java 26 Aug 2002 09:54:34 - 1.16 @@ -154,7 +154,13 @@ CHECKIN, CHECKOUT, UNCHECKOUT, -SEARCH +SEARCH, +MKWORKSPACE, +UPDATE, +LABEL, +MERGE, +BASELINE-CONTROL, +MKACTIVITY }; // id's for common request headers 1.15 +7 -1 jakarta-tomcat-connectors/jk/java/org/apache/jk/common/HandlerRequest.java Index: HandlerRequest.java === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/common/HandlerRequest.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- HandlerRequest.java 1 Jun 2002 08:29:34 - 1.14 +++ HandlerRequest.java 26 Aug 2002 09:54:34 - 1.15 @@ -165,7 +165,13 @@ CHECKIN, CHECKOUT, UNCHECKOUT, -SEARCH +SEARCH, +MKWORKSPACE, +UPDATE, +LABEL, +MERGE, +BASELINE-CONTROL, +MKACTIVITY }; // id's for common request headers 1.28 +13 -1 jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c Index: jk_ajp_common.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- jk_ajp_common.c 2 Jul 2002 16:51:08 - 1.27 +++ jk_ajp_common.c 26 Aug 2002 09:54:34 - 1.28 @@ -142,6 +142,18 @@ *sc = SC_M_UNCHECKOUT; } else if(0 == strcmp(method, SEARCH)) { *sc = SC_M_SEARCH; +} else if(0 == strcmp(method, MKWORKSPACE)) { +*sc = SC_M_MKWORKSPACE; +} else if(0 == strcmp(method, UPDATE)) { +*sc = SC_M_UPDATE; +} else if(0 == strcmp(method, LABEL)) { +*sc = SC_M_LABEL; +} else if(0 == strcmp(method, MERGE)) { +*sc = SC_M_MERGE; +} else if(0 == strcmp(method, BASELINE-CONTROL)) { +*sc = SC_M_BASELINE_CONTROL; +} else if(0 == strcmp(method, MKACTIVITY)) { +*sc = SC_M_MKACTIVITY; } else { rc = JK_FALSE; } 1.16 +14 -2 jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.h Index: jk_ajp_common.h === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- jk_ajp_common.h 25 Jun 2002 07:07:31 - 1.15 +++ jk_ajp_common.h 26 Aug 2002 09:54:34 - 1.16 @@ -116,6 +116,12 @@ *| CHECKOUT *| UNCHECKOUT *| SEARCH + *| MKWORKSPACE + *| UPDATE + *| LABEL + *| MERGE + *| BASELINE-CONTROL + *| MKACTIVITY * */ #define SC_M_OPTIONS(unsigned char)1 @@ -132,13 +138,19 @@ #define SC_M_MOVE (unsigned char)12 #define SC_M_LOCK (unsigned char)13 #define SC_M_UNLOCK (unsigned char)14 -#define SC_M_ACL(unsigned char)15 +#define SC_M_ACL(unsigned char)15 #define SC_M_REPORT (unsigned char)16 #define SC_M_VERSION_CONTROL(unsigned char)17 #define SC_M_CHECKIN(unsigned char)18 #define SC_M_CHECKOUT (unsigned char)19 #define SC_M_UNCHECKOUT (unsigned char)20 #define SC_M_SEARCH (unsigned char)21 +#define SC_M_MKWORKSPACE(unsigned char)22 +#define SC_M_UPDATE
cvs commit: jakarta-tomcat-connectors/jk/native2/include jk_service.h
nacho 02/04/24 16:12:50 Modified:jk/native2/common jk_uriMap.c jk_logger_file.c jk/native2/server/apache2 jk_service_apache2.c jk/native2/include jk_service.h Log: * Cosmetics * win32 tweaks to build Revision ChangesPath 1.24 +2 -2 jakarta-tomcat-connectors/jk/native2/common/jk_uriMap.c Index: jk_uriMap.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_uriMap.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- jk_uriMap.c 12 Apr 2002 23:09:50 - 1.23 +++ jk_uriMap.c 24 Apr 2002 23:12:50 - 1.24 @@ -67,7 +67,7 @@ * servlet container. * * Author: Gal Shachor [EMAIL PROTECTED] - * Version: $Revision: 1.23 $ + * Version: $Revision: 1.24 $ */ #include jk_pool.h @@ -417,7 +417,7 @@ /* This takes care of 'shorter' matches */ if( _this-debug 0 ) env-l-jkLog(env, env-l, JK_LOG_INFO, - uriMap.mapUri() tentative prefix match %s, + uriMap.mapUri() tentative prefix match %s\n, uwr-prefix ); longest_match = uwr-prefix_len; best_match = i; 1.19 +2 -2 jakarta-tomcat-connectors/jk/native2/common/jk_logger_file.c Index: jk_logger_file.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_logger_file.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- jk_logger_file.c 12 Apr 2002 21:49:03 - 1.18 +++ jk_logger_file.c 24 Apr 2002 23:12:50 - 1.19 @@ -59,7 +59,7 @@ * Description: Utility functions (mainly configuration) * * Author: Gal Shachor [EMAIL PROTECTED] * * Author: Henri Gomez [EMAIL PROTECTED] * - * Version: $Revision: 1.18 $ * + * Version: $Revision: 1.19 $ * ***/ #include jk_env.h @@ -163,7 +163,7 @@ return JK_FALSE; } _this-jkLog(env, _this,JK_LOG_ERROR, - Initilizing log file %s\n, _this-name ); + Initializing log file %s\n, _this-name ); _this-logger_private = f; if( oldF!=NULL ) { fclose( oldF ); 1.16 +5 -5 jakarta-tomcat-connectors/jk/native2/server/apache2/jk_service_apache2.c Index: jk_service_apache2.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/jk_service_apache2.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- jk_service_apache2.c 12 Apr 2002 21:55:05 - 1.15 +++ jk_service_apache2.c 24 Apr 2002 23:12:50 - 1.16 @@ -59,7 +59,7 @@ * Description: Apache 2 plugin for Jakarta/Tomcat * Author: Gal Shachor [EMAIL PROTECTED] * Henri Gomez [EMAIL PROTECTED] - * Version: $Revision: 1.15 $ + * Version: $Revision: 1.16 $ */ #include apu_compat.h @@ -308,7 +308,7 @@ /* Utility functions */ /* = */ -static unsigned jk2_get_content_length(jk_env_t *env, request_rec *r) +static long jk2_get_content_length(jk_env_t *env, request_rec *r) { if(r-clength 0) { return r-clength; @@ -316,7 +316,7 @@ char *lenp = (char *)apr_table_get(r-headers_in, Content-Length); if(lenp) { -int rc = atoi(lenp); +long rc = atol(lenp); if(rc 0) { return rc; } @@ -326,7 +326,7 @@ return 0; } -static int jk2_init_ws_service(jk_env_t *env, jk_ws_service_t *s, +static int JK_METHOD jk2_init_ws_service(jk_env_t *env, jk_ws_service_t *s, jk_worker_t *worker, void *serverObj) { apr_port_t port; @@ -534,7 +534,7 @@ * jk shouldn't do it instead, and the user should get the *
cvs commit: jakarta-tomcat-connectors/jk/native2/include jk_service.h
hgomez 02/02/22 03:06:01 Modified:jk/native2/common jk_uriMap.c jk/native2/include jk_service.h Log: Estetic fixes Revision ChangesPath 1.14 +2 -2 jakarta-tomcat-connectors/jk/native2/common/jk_uriMap.c Index: jk_uriMap.c === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_uriMap.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- jk_uriMap.c 21 Feb 2002 11:13:23 - 1.13 +++ jk_uriMap.c 22 Feb 2002 11:06:01 - 1.14 @@ -67,7 +67,7 @@ * servlet container. * * Author: Gal Shachor [EMAIL PROTECTED] - * Version: $Revision: 1.13 $ + * Version: $Revision: 1.14 $ */ #include jk_pool.h @@ -224,7 +224,7 @@ /* * JFC: please check... * Not sure what to do, but I try to prevent problems. - * I have fixed jk_mount_context() in apaches/mod_jk.c so we should + * I have fixed jk_mount_context() in apaches/mod_jk2.c so we should * not arrive here when using Apache. */ env-l-jkLog(env, env-l, JK_LOG_ERROR, 1.9 +2 -2 jakarta-tomcat-connectors/jk/native2/include/jk_service.h Index: jk_service.h === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_service.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- jk_service.h 26 Jan 2002 06:25:56 - 1.8 +++ jk_service.h 22 Feb 2002 11:06:01 - 1.9 @@ -63,7 +63,7 @@ * Author: Gal Shachor [EMAIL PROTECTED] * * Author: Dan Milstein [EMAIL PROTECTED]* * Author: Henri Gomez [EMAIL PROTECTED] * - * Version: $Revision: 1.8 $ * + * Version: $Revision: 1.9 $ * ***/ #ifndef JK_SERVICE_H @@ -118,7 +118,7 @@ * seeing the internal vtables of your favorite OO language. Whatever * works for you. * - * See apache1.3/mod_jk.c and iis/jk_isapi_plugin.c for examples. + * See apache1.3/mod_jk2.c and iis/jk_isapi_plugin.c for examples. */ struct jk_ws_service { struct jk_workerEnv *workerEnv; -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/include jk_service.h
costin 02/01/25 22:25:56 Modified:jk/native2/include jk_service.h Log: Moved that strange is_recoverable_error in request instead of passing it as argument to all methods. The real meaning ( not easy to discover :-) is if the request can be safely sent to a fallback worker. It is used by lb, but all workers doing active processing must set it ( or leave a default FALSE ). Init() method will now use the worker, not the endpoint. It is perfectly possible to recycle requests or preinit them or anything else - they don't depend on a particular connection. ( I also added flush, probably not needed but I have a feeling it's missing ) Revision ChangesPath 1.8 +16 -2 jakarta-tomcat-connectors/jk/native2/include/jk_service.h Index: jk_service.h === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_service.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- jk_service.h 16 Dec 2001 23:17:23 - 1.7 +++ jk_service.h 26 Jan 2002 06:25:56 - 1.8 @@ -63,7 +63,7 @@ * Author: Gal Shachor [EMAIL PROTECTED] * * Author: Dan Milstein [EMAIL PROTECTED]* * Author: Henri Gomez [EMAIL PROTECTED] * - * Version: $Revision: 1.7 $ * + * Version: $Revision: 1.8 $ * ***/ #ifndef JK_SERVICE_H @@ -122,6 +122,15 @@ */ struct jk_ws_service { struct jk_workerEnv *workerEnv; + +/* JK_TRUE if a 'recoverable' error happened. That means a + * lb worker can retry on a different worker, without + * loosing any information. If JK_FALSE, an error will be reported + * to the client + */ +int is_recoverable_error; + +struct jk_worker *realWorker; /* * A 'this' pointer which is used by the subclasses of this class to @@ -230,7 +239,7 @@ /* Initialize the service structure */ int (*init)( struct jk_env *env, jk_ws_service_t *_this, - struct jk_endpoint *e, void *serverObj); + struct jk_worker *w, void *serverObj); /* Post request cleanup. */ @@ -257,6 +266,11 @@ */ int (JK_METHOD *write)(struct jk_env *env, jk_ws_service_t *s, const void *buffer, int len); + +/* + * Flush the output buffers. + */ +int (JK_METHOD *flush)(struct jk_env *env, jk_ws_service_t *s ); }; #ifdef __cplusplus -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-connectors/jk/native2/include jk_service.h jk_uriEnv.h jk_worker.h
costin 01/12/04 10:33:06 Modified:jk/native2/include jk_service.h jk_uriEnv.h jk_worker.h Log: Consolidate data structures. A lot of 'ajp private' information is very usefull for other workers as well. Having it exposed in the main structure will make things simpler, and eliminates a lot of duplication. We do lose so 'data hiding' and private fields, but I think it's worth it. ( for example we want the jni worker to be able to use the same discovery as the ajp14 worker ) Revision ChangesPath 1.2 +12 -1 jakarta-tomcat-connectors/jk/native2/include/jk_service.h Index: jk_service.h === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_service.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- jk_service.h 2001/12/01 22:30:57 1.1 +++ jk_service.h 2001/12/04 18:33:05 1.2 @@ -63,7 +63,7 @@ * Author: Gal Shachor [EMAIL PROTECTED] * * Author: Dan Milstein [EMAIL PROTECTED]* * Author: Henri Gomez [EMAIL PROTECTED] * - * Version: $Revision: 1.1 $ * + * Version: $Revision: 1.2 $ * ***/ #ifndef JK_SERVICE_H @@ -214,6 +214,17 @@ */ char*jvm_route; +/* Response informations. As in apache, we don't use a separate + structure for response. + */ +int status; +const char *msg; +unsignedout_headers; +char **out_header_names; +char **out_header_values; + + + /* * Callbacks into the web server. For each, the first argument is * essentially a 'this' pointer. All return JK_TRUE on success 1.2 +3 -0 jakarta-tomcat-connectors/jk/native2/include/jk_uriEnv.h Index: jk_uriEnv.h === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_uriEnv.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- jk_uriEnv.h 2001/12/01 22:03:20 1.1 +++ jk_uriEnv.h 2001/12/04 18:33:05 1.2 @@ -120,6 +120,9 @@ char *context; int contextId; +char *docbase; +int status; + /** Servlet. No need to compute it again in tomcat */ char *servlet; 1.2 +71 -1 jakarta-tomcat-connectors/jk/native2/include/jk_worker.h Index: jk_worker.h === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_worker.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- jk_worker.h 2001/12/01 22:30:57 1.1 +++ jk_worker.h 2001/12/04 18:33:05 1.2 @@ -58,7 +58,7 @@ /*** * Description: Workers controller header file * * Author: Gal Shachor [EMAIL PROTECTED] * - * Version: $Revision: 1.1 $ * + * Version: $Revision: 1.2 $ * ***/ #ifndef JK_WORKER_H @@ -68,6 +68,7 @@ #include jk_service.h #include jk_endpoint.h #include jk_map.h +#include jk_mt.h #include jk_uriMap.h #ifdef __cplusplus @@ -79,7 +80,53 @@ struct jk_env; typedef struct jk_worker jk_worker_t; + /* + * The login structure + */ +typedef struct jk_login_service jk_login_service_t; +#define AJP14_ENTROPY_SEED_LEN 32 /* we're using MD5 = 32 chars */ +#define AJP14_COMPUTED_KEY_LEN 32 /* we're using MD5 also */ + +struct jk_login_service { + +/* + * Pointer to web-server name + */ +char * web_server_name; + +/* + * Pointer to servlet-engine name + */ +char * servlet_engine_name; + +/* + * Pointer to secret key + */ +char * secret_key; + +/* + * Received entropy seed + */ +char entropy[AJP14_ENTROPY_SEED_LEN + 1]; + +/* + * Computed key + */ +char computed_key[AJP14_COMPUTED_KEY_LEN + 1]; + +/* + * What we want to negociate + */ +unsigned long negociation; + +/* + * What we received from servlet engine + */ +unsigned long negociated; +}; + +/* * The worker 'class', which represents