[
https://issues.apache.org/jira/browse/ISIS-1964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16519372#comment-16519372
]
Andi Huber commented on ISIS-1964:
----------------------------------
By looking at the stacktrace, I would say, that during the process of making a
snapshot (copy) of the specification-cache (basically a java.util.HashMap) the
map gets modified. This can only happen if 2 different threads are involved.
To guard against concurrent modification of the specification-cache, we either
need to replace the HashMap with a ConcurrentHashMap or we synchronize reads
and writes to the cache.
> ConcurrentModificationException when stating application
> --------------------------------------------------------
>
> Key: ISIS-1964
> URL: https://issues.apache.org/jira/browse/ISIS-1964
> Project: Isis
> Issue Type: Bug
> Components: Core
> Affects Versions: 1.16.2
> Reporter: Vladimir Nisevic
> Priority: Major
> Fix For: 1.16.3
>
>
> Hi Dan, meanwhile we are using 1.16.2 and observe still (more rarely) this
> exception during startup.
>
> {code:java}
> 018-06-20 15:10:47.546 [localhost-startStop-1] init ERROR
> org.apache.isis.viewer.wicket.viewer.IsisWicketApplication - Failed to
> initialize
> com.google.inject.ProvisionException: Unable to provision, see the following
> errors:
> 1) Error in custom provider, java.lang.RuntimeException: An error occurred
> while executing code in a temporary session
> at
> org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSessionFactory(IsisInjectModule.java:109)
> at
> org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSessionFactory(IsisInjectModule.java:109)
> while locating org.apache.isis.core.runtime.system.session.IsisSessionFactory
> for field at
> org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.isisSessionFactory(IsisWicketApplication.java:155)
> while locating at.a1ta.cll.webapp.CllWebApplication
> 1 error
> at
> com.google.inject.internal.Errors.throwProvisionExceptionIfErrorsExist(Errors.java:486)
> at
> com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:67)
> at
> com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:987)
> at
> org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.init(IsisWicketApplication.java:368)
> at at.a1ta.cll.webapp.CllWebApplication.init(CllWebApplication.java:32)
> at org.apache.wicket.Application.initApplication(Application.java:953)
> at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:429)
> at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:353)
> at
> org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:285)
> at
> org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:266)
> at
> org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
> at
> org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4590)
> at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
> at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
> at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
> at
> org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:629)
> at
> org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1839)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: java.lang.RuntimeException: An error occurred while executing code
> in a temporary session
> at
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.doInSession(IsisSessionFactory.java:366)
> at
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.doInSession(IsisSessionFactory.java:330)
> at
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.doInSession(IsisSessionFactory.java:317)
> at
> org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder.buildSessionFactory(IsisSessionFactoryBuilder.java:211)
> at
> org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSessionFactory(IsisInjectModule.java:118)
> at
> org.apache.isis.core.runtime.runner.IsisInjectModule$$FastClassByGuice$$a813f90e.invoke(<generated>)
> at
> com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:264)
> at
> com.google.inject.internal.ProviderMethod$Factory.provision(ProviderMethod.java:401)
> at
> com.google.inject.internal.ProviderMethod$Factory.get(ProviderMethod.java:376)
> at
> com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
> at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
> at
> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
> at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
> at
> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
> at
> com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:54)
> at
> com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132)
> at
> com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:93)
> at
> com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:80)
> at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
> at
> com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:80)
> at
> com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:62)
> ... 22 more
> Caused by: java.util.ConcurrentModificationException
> at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)
> at java.util.HashMap$ValueIterator.next(HashMap.java:1471)
> at java.util.AbstractCollection.toArray(AbstractCollection.java:141)
> at java.util.Collections$UnmodifiableCollection.toArray(Collections.java:1033)
> at java.util.ArrayList.<init>(ArrayList.java:178)
> at com.google.common.collect.Lists.newArrayList(Lists.java:146)
> at
> org.apache.isis.core.metamodel.specloader.SpecificationLoader.allSpecifications(SpecificationLoader.java:495)
> at
> org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting.validateSpecs(MetaModelValidatorVisiting.java:71)
> at
> org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting.validateAll(MetaModelValidatorVisiting.java:58)
> at
> org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting.validate(MetaModelValidatorVisiting.java:49)
> at
> org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite.validate(MetaModelValidatorComposite.java:60)
> at
> org.apache.isis.core.metamodel.specloader.SpecificationLoader.validate(SpecificationLoader.java:272)
> at
> org.apache.isis.core.metamodel.specloader.SpecificationLoader.validateAndAssert(SpecificationLoader.java:262)
> at
> org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder$1.run(IsisSessionFactoryBuilder.java:217)
> at
> org.apache.isis.core.runtime.system.session.IsisSessionFactory$1.call(IsisSessionFactory.java:333)
> at
> org.apache.isis.core.runtime.system.session.IsisSessionFactory$1.call(IsisSessionFactory.java:330)
> at
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.doInSession(IsisSessionFactory.java:364)
> ... 42 more
> 2018-06-20 15:10:47.573 [localhost-startStop-1] join INFO
> org.apache.isis.core.runtime.threadpool.ThreadPoolSupport - join'ing 6 tasks:
> waited 0 milliseconds
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)