costin 01/12/13 23:14:59 Modified: jk/native2/server/apache2 jk_apache2.h jk_logger_apache2.c jk_pool_apr.c mod_jk.c Log: Switch to jk_pools so I can test them. The apr pools seem to work fine, we seem to clean up everything ( i.e. reset the pool - I fixed a small bug there ). I run few 100.000 requests, the memory is constant. It also seem jk_pools are fine ( and no malloc happens after the warmup, all pools are recycled and we have constant memory as well ! ). ( I'll remove the debug statements tommorow ) Revision Changes Path 1.2 +5 -1 jakarta-tomcat-connectors/jk/native2/server/apache2/jk_apache2.h Index: jk_apache2.h =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/jk_apache2.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- jk_apache2.h 2001/12/13 18:50:33 1.1 +++ jk_apache2.h 2001/12/14 07:14:59 1.2 @@ -59,7 +59,7 @@ * Description: Apache 2 plugin for Jakarta/Tomcat * Author: Gal Shachor <[EMAIL PROTECTED]> * Henri Gomez <[EMAIL PROTECTED]> - * Version: $Revision: 1.1 $ + * Version: $Revision: 1.2 $ */ #include "jk_global.h" @@ -81,6 +81,10 @@ int jk_pool_apr_factory(jk_env_t *env, jk_pool_t *pool, void **result, char *type, char *name); + +int jk_map_aprtable_factory(jk_env_t *env, jk_pool_t *pool, + void **result, + char *type, char *name); /* Temp. - we should use the factory ( we may need few changes ) */ int jk_pool_apr_create( jk_pool_t **newPool, jk_pool_t *parent, 1.8 +2 -0 jakarta-tomcat-connectors/jk/native2/server/apache2/jk_logger_apache2.c Index: jk_logger_apache2.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/jk_logger_apache2.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- jk_logger_apache2.c 2001/12/13 19:05:31 1.7 +++ jk_logger_apache2.c 2001/12/14 07:14:59 1.8 @@ -132,6 +132,8 @@ char buf[HUGE_BUFFER_SIZE]; #endif + if( level >= l->level ) + return JK_TRUE; if( s==NULL ) { return JK_FALSE; 1.5 +46 -15 jakarta-tomcat-connectors/jk/native2/server/apache2/jk_pool_apr.c Index: jk_pool_apr.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/jk_pool_apr.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- jk_pool_apr.c 2001/12/13 19:05:31 1.4 +++ jk_pool_apr.c 2001/12/14 07:14:59 1.5 @@ -68,8 +68,12 @@ #include "jk_apache2.h" -int jk_pool_apr_create( jk_pool_t **newPool, jk_pool_t *parent, apr_pool_t *aprPool ); +#define POOL_DEBUG + +int jk_pool_apr_create( jk_pool_t **newPool, jk_pool_t *parent, + apr_pool_t *aprPool ); + int JK_METHOD jk_pool_apr_factory(jk_env_t *env, jk_pool_t *pool, void **result, @@ -79,7 +83,9 @@ */ static void jk_pool_apr_close(jk_pool_t *p) { - +#ifdef POOL_DEBUG + fprintf(stderr, "apr_close %p\n", p); +#endif } /** Nothing - apache will take care. @@ -88,12 +94,18 @@ */ static void jk_pool_apr_reset(jk_pool_t *p) { +#ifdef POOL_DEBUG + fprintf(stderr, "apr_reset %p\n", p); +#endif apr_pool_clear(p->_private); } static void *jk_pool_apr_calloc(jk_pool_t *p, - size_t size) + size_t size) { +#ifdef POOL_DEBUG + fprintf(stderr, "apr_calloc %p %d\n", p, size); +#endif /* assert( p->_private != NULL ) */ return apr_pcalloc( (apr_pool_t *)p->_private, (apr_size_t)size); } @@ -101,16 +113,23 @@ static void *jk_pool_apr_alloc(jk_pool_t *p, size_t size) { +#ifdef POOL_DEBUG + fprintf(stderr, "apr_alloc %p %d\n", p, size); +#endif + return apr_palloc( (apr_pool_t *)p->_private, (apr_size_t)size); } static void *jk_pool_apr_realloc(jk_pool_t *p, - size_t sz, - const void *old, - size_t old_sz) + size_t sz, + const void *old, + size_t old_sz) { void *rc; +#ifdef POOL_DEBUG + fprintf(stderr, "apr_realloc %p %d\n", p, sz); +#endif if(!p || (!old && old_sz)) { return NULL; } @@ -126,10 +145,13 @@ static void *jk_pool_apr_strdup(jk_pool_t *p, const char *s) { +#ifdef POOL_DEBUG + fprintf(stderr, "apr_strdup %p %d\n", p, ((s==NULL)?-1: (int)strlen(s))); +#endif return apr_pstrdup( (apr_pool_t *)p->_private, s); } - +static void jk_pool_apr_initMethods( jk_pool_t *_this ); static jk_pool_t *jk_pool_apr_createChild( jk_pool_t *_this, int sizeHint ) { apr_pool_t *parentAprPool=_this->_private; @@ -138,20 +160,30 @@ apr_pool_create( &childAprPool, parentAprPool ); - jk_pool_apr_create( &newPool, _this, childAprPool ); + newPool=(jk_pool_t *)apr_palloc(parentAprPool, sizeof( jk_pool_t )); + jk_pool_apr_initMethods( newPool ); + newPool->_private=childAprPool; + return newPool; } -int jk_pool_apr_create( jk_pool_t **newPool, jk_pool_t *parent, apr_pool_t *aprPool) +int jk_pool_apr_create( jk_pool_t **newPool, jk_pool_t *parent, + apr_pool_t *aprPool) { - jk_pool_t *_this=(jk_pool_t *)apr_palloc(aprPool, sizeof( jk_pool_t )); - - _this->_private=aprPool; - + jk_pool_t *_this; + + _this=(jk_pool_t *)apr_palloc(aprPool, sizeof( jk_pool_t )); *newPool = _this; + _this->_private=aprPool; + jk_pool_apr_initMethods( _this ); + return JK_TRUE; +} + +static void jk_pool_apr_initMethods( jk_pool_t *_this ) +{ /* methods */ _this->create=jk_pool_apr_createChild; _this->close=jk_pool_apr_close; @@ -160,9 +192,8 @@ _this->calloc=jk_pool_apr_calloc; _this->pstrdup=jk_pool_apr_strdup; _this->realloc=jk_pool_apr_realloc; - - return JK_TRUE; } + /* Not used yet */ int jk_pool_apr_factory(jk_env_t *env, jk_pool_t *pool, 1.11 +18 -14 jakarta-tomcat-connectors/jk/native2/server/apache2/mod_jk.c Index: mod_jk.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/mod_jk.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- mod_jk.c 2001/12/13 19:05:31 1.10 +++ mod_jk.c 2001/12/14 07:14:59 1.11 @@ -59,7 +59,7 @@ * Description: Apache 2 plugin for Jakarta/Tomcat * * Author: Gal Shachor <[EMAIL PROTECTED]> * * Henri Gomez <[EMAIL PROTECTED]> * - * Version: $Revision: 1.10 $ * + * Version: $Revision: 1.11 $ * ***************************************************************************/ /* @@ -150,7 +150,8 @@ if (context[0]!='/') return "Context must start with /"; - map_put( workerEnv->init_data, context, worker, NULL ); + workerEnv->init_data->put( NULL, workerEnv->init_data, + context, worker, NULL ); return NULL; } @@ -184,18 +185,20 @@ /** Read worker files */ l->jkLog(l, JK_LOG_DEBUG, "Reading map %s %d\n", - workerEnv->worker_file, map_size( workerEnv->init_data ) ); + workerEnv->worker_file, + workerEnv->init_data->size(NULL, workerEnv->init_data) ); if( workerEnv->worker_file != NULL ) { - int err=map_read_properties(workerEnv->init_data, - workerEnv->worker_file); + int err=jk_map_readFileProperties(NULL, workerEnv->init_data, + workerEnv->worker_file); if( err==JK_TRUE ) { l->jkLog(l, JK_LOG_DEBUG, "Read map %s %d\n", workerEnv->worker_file, - map_size( workerEnv->init_data ) ); + workerEnv->init_data->size( NULL, workerEnv->init_data ) ); } else { l->jkLog(l, JK_LOG_ERROR, "Error reading map %s %d\n", - workerEnv->worker_file, map_size( workerEnv->init_data ) ); + workerEnv->worker_file, + workerEnv->init_data->size( NULL, workerEnv->init_data ) ); } } @@ -220,9 +223,9 @@ jk_map_t *m=workerEnv->init_data; - value = map_replace_properties(value, m ); + value = jk_map_replaceProperties(NULL, m, m->pool, value); - oldv = map_get_string(m, name, NULL); + oldv = jk_map_getString(NULL, m, name, NULL); if(oldv) { char *tmpv = apr_palloc(cmd->pool, @@ -245,7 +248,7 @@ if(value) { void *old = NULL; - map_put(m, name, value, &old); + m->put(NULL, m, name, value, &old); /*printf("Setting %s %s\n", name, value);*/ } return NULL; @@ -272,7 +275,7 @@ if (logFileA == NULL) return "JkLogFile file_name invalid"; - map_put( workerEnv->init_data, "logger.file.name", logFileA, NULL); + workerEnv->init_data->put( NULL, workerEnv->init_data, "logger.file.name", logFileA, NULL); return NULL; } @@ -291,7 +294,7 @@ jk_workerEnv_t *workerEnv = (jk_workerEnv_t *)ap_get_module_config(s->module_config, &jk_module); - map_put( workerEnv->init_data, "logger.file.level", log_level, NULL); + workerEnv->init_data->put( NULL, workerEnv->init_data, "logger.file.level", log_level, NULL); return NULL; } @@ -308,7 +311,7 @@ jk_workerEnv_t *workerEnv = (jk_workerEnv_t *)ap_get_module_config(s->module_config, &jk_module); - map_put( workerEnv->init_data, "logger.file.timeFormat", log_format, NULL); + workerEnv->init_data->put( NULL, workerEnv->init_data, "logger.file.timeFormat", log_format, NULL); return NULL; } @@ -510,7 +513,7 @@ workerEnv->envvars_in_use = JK_TRUE; - map_put(workerEnv->envvars, env_name, default_value, NULL); + workerEnv->envvars->put(NULL, workerEnv->envvars, env_name, default_value, NULL); return NULL; } @@ -679,6 +682,7 @@ /** First create a pool */ +#define NO_APACHE_POOL #ifdef NO_APACHE_POOL jk_pool_create( &globalPool, NULL, 2048 ); #else
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>