[
https://issues.apache.org/activemq/browse/SMXCOMP-706?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Freeman Fang updated SMXCOMP-706:
---------------------------------
Description:
CxfBcProvider and CxfBcProviderMessageObserver use a PhaseChainCache object to
create the PhaseInterceptorChain. However, it doesn't actually use it as a
cache so that is useless. The cache object creates a chain, then clones it
and holds onto the original. Thus, double the memory is used at the start
plus the processing time of the clone.
Also, the BcProvider calls
getOutInterceptors().addAll(getBus().getOutInterceptors()); for EVERY request
causing the getOutInterceptors list to grow causing a memory leak.
I'll attach a patch that fixes them both.
was:
CxfBcProvider and CxfBcProviderMessageObserver use a PhaseChainCache object to
create the PhaseInterceptorChain. However, it doesn't actually use it as a
cache so that is useless. The cache object creates a chain, then clones it
and holds onto the original. Thus, double the memory is used at the start
plus the processing time of the clone.
Also, the BcProvider calls
getOutInterceptors().addAll(getBus().getOutInterceptors()); for EVERY request
causing the getOutInterceptors list to grow causing a memory leak.
I'll attach a patch that fixes them both.
Fix Version/s: servicemix-cxf-bc-2010.01
> Poor interceptor chain management and memory leak in CxfBc
> ----------------------------------------------------------
>
> Key: SMXCOMP-706
> URL: https://issues.apache.org/activemq/browse/SMXCOMP-706
> Project: ServiceMix Components
> Issue Type: Bug
> Components: servicemix-cxf-bc
> Reporter: Daniel Kulp
> Assignee: Freeman Fang
> Fix For: servicemix-cxf-bc-2010.01
>
> Attachments: cxf-bc-bug.txt
>
>
> CxfBcProvider and CxfBcProviderMessageObserver use a PhaseChainCache object
> to create the PhaseInterceptorChain. However, it doesn't actually use it as
> a cache so that is useless. The cache object creates a chain, then clones
> it and holds onto the original. Thus, double the memory is used at the
> start plus the processing time of the clone.
> Also, the BcProvider calls
> getOutInterceptors().addAll(getBus().getOutInterceptors()); for EVERY request
> causing the getOutInterceptors list to grow causing a memory leak.
> I'll attach a patch that fixes them both.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.