You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by "Senaka Fernando (JIRA)" <ji...@apache.org> on 2008/02/23 09:25:19 UTC
[jira] Commented: (AXIS2C-995) mod_axis2 fails to call
svc_skeleton_free
[ 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: axis-c-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-dev-help@ws.apache.org