[jboss-jira] [JBoss JIRA] (WFLY-6554) Cache configuration are not eagerly defined in Cache Container
Mathieu Lachance (JIRA)
issues at jboss.org
Mon Jun 6 15:43:00 EDT 2016
[ https://issues.jboss.org/browse/WFLY-6554?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13248576#comment-13248576 ]
Mathieu Lachance commented on WFLY-6554:
----------------------------------------
Hi [~pferraro], sorry for taking so long, but I've found the NPE issue I was having.
We use a stripped down version of standalone.xml.
Since we are relying on Spring for the EntityManager bootstrapping, we excluded the JPA subsystem.
By excluding that subsystem, the org.jboss.as.jpa.processor.secondLevelCache.CacheDeploymentListener SPI was not available within the classpath, hence:
{code}
try {
// start a private cache for non-JPA use and return the started cache.
wrapper = Notification.startCache(Classification.INFINISPAN, cacheSettings);
return (EmbeddedCacheManager)wrapper.getValue();
} catch (Exception e) {
throw new CacheException(e);
}
public static Wrapper startCache(Classification cacheType, Properties properties) throws Exception {
Wrapper result = null;
for(EventListener eventListener: eventListeners) {
Wrapper value = eventListener.startCache(cacheType, properties);
if (value != null && result == null) {
result = value; // return the first non-null wrapper value returned from a listener
}
}
return result;
}
{code}
wrapper was always null, since there was no listener at all.
I know our use case might be a little bit weird but maybe there's some validation or warning missing around here?
That said, after that I was able to use the 'org.jboss.as.jpa.hibernate5.infinispan.InfinispanRegionFactory' without any exception.
There's still one problem though, all the caches configuration are still not yet defined properly. All my "entity" cache inherit from the default cache i.e. "local-query".
I've also tried the 'org.jboss.as.jpa.hibernate5.infinispan.SharedInfinispanRegionFactory' but got also the exact same behavior.
Could it be possible that the configuration is picked up from inside one of the hibernate jars instead of the one defined in the infinispan subsystem?
> Cache configuration are not eagerly defined in Cache Container
> --------------------------------------------------------------
>
> Key: WFLY-6554
> URL: https://issues.jboss.org/browse/WFLY-6554
> Project: WildFly
> Issue Type: Bug
> Components: Clustering
> Affects Versions: 10.0.0.Final, 10.1.0.Final
> Reporter: Mathieu Lachance
> Assignee: Paul Ferraro
>
> In WF8 we used the cache configuration start="EAGER" to force the initialization of the cache configuration.
> In my scenario, we especially used that trick to define all cache configuration (i.e. entity / timestamps / local-query) in the hibernate cache container before any of our war was deployed. Doing so, when wiring the EntityManager programatically (in our application), we were able to depend on the JNDIRegionFactory without getting any NullPointerException/etc.
> This trick has only one bad side effect, which was the creation of unecessary caches.
> Now in WF10, the eager feature is gone and it seems that even if the cache container is available at startup (as discussed in: https://developer.jboss.org/thread/259151) the defined caches are not.
> I do not know if this is a bug or this is by design but this seems wrong to me.
> If we define caches within standalone.xml, I would definitly like to have them defined at the container level. I think it's fair to assume that when pulling the CacheManager all defined caches should have been there.
> I would suggest that when reading all the infinispan subsystem, each cache contained in each cache container be eagerly defined to avoid any issue (and I really meant "defined" and not "started").
> Doing so this would resolve our EntityManager second level cache bootstraping without relying on our application to define the missing cache configuration.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the jboss-jira
mailing list