[
https://issues.jboss.org/browse/WFLY-6554?page=com.atlassian.jira.plugin....
]
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)