[ https://issues.apache.org/jira/browse/AXIS2C-995?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12571709#action_12571709 ]
Senaka Fernando commented on AXIS2C-995: ---------------------------------------- Hi Ben, I belive this does the required cleanup when we free the pool. This fits perfectly to the Axis2/C environment within apache server, as, a service is a persistent object within the scope of the lifetime of the engine, according to our current implementation. On a day someone introduces hot_deployment, he will have to consider this. I have been following your discussion on the Axis2/C user list and I believe this is the best fit according to our current implementation. What I mean here is the use of a apr_pool_cleanup_register() and not the logic within the callback function. Regards, Senaka > mod_axis2 fails to call svc_skeleton_free > ----------------------------------------- > > Key: AXIS2C-995 > URL: https://issues.apache.org/jira/browse/AXIS2C-995 > Project: Axis2-C > Issue Type: Bug > Components: core/transport > Affects Versions: 1.2.0 > Environment: solaris 10 x86, apache 2.2.4 > Reporter: Ben Wyckoff > > mod_axis2 calls AXIS2_SVC_SKELETON_INIT but never calls > AXIS2_SVC_SKELETON_FREE (or the equivalent), which leaves resources allocated > at init time dangling. The axis2_hhtp_server does properly call free, > allowing the service to properly clean up after itself. > This issue was submitted to the axis2-c users list, and Dumindu Pallewela > replied with the following patch. > Index: mod_axis2.c > =================================================================== > --- mod_axis2.c (revision 629362) > +++ mod_axis2.c (working copy) > @@ -425,6 +425,19 @@ > #endif > } > > +typedef struct worker_cleanup_data > +{ > + const axutil_env_t * env; > + axis2_apache2_worker_t * worker; > +} worker_cleanup_data_t; > + > +static apr_status_t worker_cleanup(void *data) > +{ > + worker_cleanup_data_t *d = (worker_cleanup_data_t *) data; > + axis2_apache2_worker_free(d->worker, d->env); > + return APR_SUCCESS; > +} > + > static int axis2_post_config(apr_pool_t *pconf, apr_pool_t *plog, > apr_pool_t > *ptemp, server_rec *svr_rec) > { > @@ -592,6 +605,14 @@ > "[Axis2] Error creating mod_axis2 apache2 worker"); > exit(APEXIT_CHILDFATAL); > } > + else > + { > + worker_cleanup_data_t *data = apr_palloc(pconf, > sizeof(worker_cleanup_data_t)); > + data->env = axutil_env; > + data->worker = axis2_worker; > + apr_pool_cleanup_register(pconf, data, worker_cleanup, > apr_pool_cleanup_null); > + } > + > return OK; > } > -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]