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