Multiple JPA persistence units are deployed (some enable caching via hibernate.cache.use_second_level_cache=true and some do not)
Entities are annotated with @javax.persistence.Cacheable
Randomly (not reproducible at will), caching is not enabled (queries that should resolve in cache consistently go to the database)
DEBUG logging shows that, when the issue occurs, there are no log entries like ... [org.hibernate.cache.infinispan.InfinispanRegionFactory] Building entity cache region ...
The same issue has never been reproduced when @org.hibernate.annotations.Cache is used for entities and cache regions are consistently (based on DEBUG trace) seen to be created for associations (which can only be made cacheable via @Cache)
Red Hat JBoss Enterprise Application Platform (EAP) 6 / Hibernate 4
Red Hat JBoss Enterprise Application Platform (EAP) 7 / Hibernate 5
Not sure if this is reproducible in Hibernate 5.
I've attached a testcase (see included README) which I used to reproduce the issue with
EAP 6 (Hibernate 4)
EAP 7 (Hibernate 5.0.11)
The testcase uses a Byteman rule to control which thread wins the race to initialize AnnotationBinder.DEFAULT_CACHE_CONCURRENCY_STRATEGY. Specifically, the EAP*AnnotationBinderDetermineCacheConcurrencyStrategyEnableSleep rule causes the thread deploying the cache enabled unit to sleep when it hits AnnotationBinder.determineCacheConcurrencyStrategy(). Consequently, the unit with cache disabled sets the default strategy and this determines the value subsequently returned on all threads.
Fixed in master.