You cannot call the builder twice when the cache already exists. Other
teams such as IS use both the getCache & the builder method with proper
synchronization which will return the cache if it exists, or will build &
return the cache with custom parameter if it does not exist. I will try to
write a sample code segment and publish on my blog today. That can be made
into a class called CachingUtil or something.

Azeez

On Wed, Oct 29, 2014 at 5:59 AM, Gayashan Amarasinghe <[email protected]>
wrote:

> Hi Azeez,
>
> During Carbon testing i've created a simple web app that utilize the cache
> (source code at [1]). In this web app I've created a cache with custom
> expiry and deployed it in a cluster and hit it using jmeter. During testing
> i changed the expiry time of the cache prorgrammatically and tried to
> redeploy the web app. But since the server was not restarted the cache
> created by the previous web app was already there. (I didn't change the
> name of the cache manager or the cache) As a result the following exception
> was thrown.
>
> TID: [-1234] [] [2014-10-29 12:27:57,185] ERROR
> {org.apache.catalina.core.StandardWrapperValve} -  Allocate exception for
> servlet org.wso2.carbon.CarbonTest.CachingTest
> {org.apache.catalina.core.StandardWrapperValve}
> javax.cache.CacheException: Cache expiringCache already exists
>     at
> org.wso2.carbon.caching.impl.CarbonCacheManager.createCacheBuilder(CarbonCacheManager.java:96)
>     at org.wso2.carbon.CarbonTest.CachingTest.init(CachingTest.java:38)
>     at javax.servlet.GenericServlet.init(GenericServlet.java:158)
>     at
> org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1279)
>     at
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1192)
>     at
> org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864)
>     at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134)
>     at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
>     at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
>     at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
>     at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
>     at
> org.wso2.carbon.statistics.webapp.RequestIntercepterValve.invoke(RequestIntercepterValve.java:43)
>     at
> org.wso2.carbon.bam.webapp.stat.publisher.WebAppStatisticPublisherValve.invoke(WebAppStatisticPublisherValve.java:104)
>     at
> org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178)
>     at
> org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
>     at
> org.wso2.carbon.webapp.mgt.GhostWebappDeployerValve.invoke(GhostWebappDeployerValve.java:141)
>     at
> org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56)
>     at
> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
>     at
> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141)
>     at
> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:154)
>     at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
>     at
> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)
>     at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>     at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>     at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
>     at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
>     at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1721)
>     at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>     at java.lang.Thread.run(Thread.java:662)
>
>
> This is going to be an issue when developers try to redeploy a webapp with
> modifications to the cache configurations. Is this a bug or the intended
> behavior? AFAIU we should not let this happen. WDYT?
>
> [1]
> https://github.com/GayashanNA/CarbonCachingTestWebapp/blob/master/src/main/java/org/wso2/carbon/CarbonTest/CachingTest.java
>
> ​Thanks.
> /Gayashan​
>
> --
> *Gayashan Amarasinghe*
> Software Engineer | Platform TG
> WSO2, Inc. | http://wso2.com
> lean. enterprise. middleware
>
> Mobile : +94718314517
> Blog : gayashan-a.blogspot.com
>



-- 
*Afkham Azeez*
Director of Architecture; WSO2, Inc.; http://wso2.com
Member; Apache Software Foundation; http://www.apache.org/
* <http://www.apache.org/>*
*email: **[email protected]* <[email protected]>
* cell: +94 77 3320919blog: **http://blog.afkham.org*
<http://blog.afkham.org>
*twitter: **http://twitter.com/afkham_azeez*
<http://twitter.com/afkham_azeez>
*linked-in: **http://lk.linkedin.com/in/afkhamazeez
<http://lk.linkedin.com/in/afkhamazeez>*

*Lean . Enterprise . Middleware*
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to