[
https://issues.jboss.org/browse/WFLY-12582?page=com.atlassian.jira.plugin...
]
Severian Duchenko commented on WFLY-12582:
------------------------------------------
Looks like root cause is concurrent modification of key used for caching during cache
value calculation.
Race condition of methods ArraySet.equals and ArraySet.trimToSize .
{code}
package org.jboss.weld.resources;
...
public class SharedObjectCache implements BootstrapService {
....
private final LoadingCache<Set<?>, Set<?>> sharedSets =
CacheBuilder.newBuilder().build(new CacheLoader<Set<?>, Set<?>>() {
@Override
public Set<?> load(Set<?> from) {
return WeldCollections.immutableSet(from); // <-- HERE
}
});
...
package org.jboss.weld.util.collections;
...
public class WeldCollections {
...
public static <T> Set<T> immutableSet(Set<T> set) {
if (set.isEmpty()) {
return Collections.emptySet();
}
if (set instanceof ImmutableSet<?>) {
return set;
}
if (set instanceof ArraySet<?>) {
ArraySet.class.cast(set).trimToSize(); // <-- HERE
}
return Collections.unmodifiableSet(set);
}
{code}
ConcurrentModificationException in SharedObjectCache.getSharedSet
-----------------------------------------------------------------
Key: WFLY-12582
URL:
https://issues.jboss.org/browse/WFLY-12582
Project: WildFly
Issue Type: Bug
Components: CDI / Weld
Affects Versions: 10.1.0.Final
Environment: JBoss Admin Command-line Interface
JBOSS_HOME: /home/user/wildfly-10.1.0.Final
JBoss AS release: 2.2.0.Final "Kenny"
JBoss AS product: WildFly Full 10.1.0.Final
JAVA_HOME: /home/user/.sdkman/candidates/java/current
java.version: 1.8.0_222
java.vm.vendor: AdoptOpenJDK
java.vm.version: 25.222-b10
os.name: Linux
os.version: 5.0.0-27-generic
Reporter: Severian Duchenko
Assignee: Matěj Novotný
Priority: Minor
Following error occurred during wildfly startup:
{code}
jboss.deployment.unit."MY.ear".WeldStartService: Failed to start service
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[rt.jar:1.8.0_202]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[rt.jar:1.8.0_202]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_202]
Caused by: java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
[rt.jar:1.8.0_202]
at java.util.ArrayList$Itr.next(ArrayList.java:859) [rt.jar:1.8.0_202]
at java.util.AbstractCollection.containsAll(AbstractCollection.java:317)
[rt.jar:1.8.0_202]
at java.util.AbstractSet.equals(AbstractSet.java:95) [rt.jar:1.8.0_202]
at com.google.common.base.Equivalence$Equals.doEquivalent(Equivalence.java:327)
at com.google.common.base.Equivalence.equivalent(Equivalence.java:71)
at com.google.common.cache.LocalCache$Segment.getEntry(LocalCache.java:2711)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2180)
at com.google.common.cache.LocalCache.get(LocalCache.java:3937)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
at org.jboss.weld.util.cache.LoadingCacheUtils.getCacheValue(LoadingCacheUtils.java:49)
at
org.jboss.weld.util.cache.LoadingCacheUtils.getCastCacheValue(LoadingCacheUtils.java:74)
at org.jboss.weld.resources.SharedObjectCache.getSharedSet(SharedObjectCache.java:72)
at
org.jboss.weld.injection.attributes.InferringFieldInjectionPointAttributes.<init>(InferringFieldInjectionPointAttributes.java:47)
at
org.jboss.weld.injection.attributes.InferringFieldInjectionPointAttributes.of(InferringFieldInjectionPointAttributes.java:41)
at
org.jboss.weld.injection.InjectionPointFactory.createFieldInjectionPoint(InjectionPointFactory.java:140)
at
org.jboss.weld.injection.ResourceInjectionFactory$ResourceInjectionProcessor.createResourceInjections(ResourceInjectionFactory.java:190)
at
org.jboss.weld.injection.ResourceInjectionFactory.discoverType(ResourceInjectionFactory.java:449)
at
org.jboss.weld.injection.ResourceInjectionFactory.getResourceInjections(ResourceInjectionFactory.java:97)
at
org.jboss.weld.injection.producer.ResourceInjector.<init>(ResourceInjector.java:59)
at org.jboss.weld.injection.producer.ResourceInjector.of(ResourceInjector.java:49)
at
org.jboss.weld.injection.producer.BeanInjectionTarget.<init>(BeanInjectionTarget.java:63)
at
org.jboss.weld.injection.producer.BeanInjectionTarget.createDefault(BeanInjectionTarget.java:47)
at
org.jboss.weld.manager.InjectionTargetFactoryImpl.chooseInjectionTarget(InjectionTargetFactoryImpl.java:113)
at
org.jboss.weld.manager.InjectionTargetFactoryImpl.createInjectionTarget(InjectionTargetFactoryImpl.java:86)
at org.jboss.weld.bean.ManagedBean.<init>(ManagedBean.java:100)
at org.jboss.weld.bean.ManagedBean.of(ManagedBean.java:80)
at
org.jboss.weld.bootstrap.AbstractBeanDeployer.createManagedBean(AbstractBeanDeployer.java:261)
at org.jboss.weld.bootstrap.BeanDeployer.createClassBean(BeanDeployer.java:229)
at
org.jboss.weld.bootstrap.ConcurrentBeanDeployer$2.doWork(ConcurrentBeanDeployer.java:78)
at
org.jboss.weld.bootstrap.ConcurrentBeanDeployer$2.doWork(ConcurrentBeanDeployer.java:75)
at
org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)
at
org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_202]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[rt.jar:1.8.0_202]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[rt.jar:1.8.0_202]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_202]
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
{code}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)