[jira] [Commented] (ISIS-1964) ConcurrentModificationException when stating application

2018-06-21 Thread Andi Huber (JIRA)


[ 
https://issues.apache.org/jira/browse/ISIS-1964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16519690#comment-16519690
 ] 

Andi Huber commented on ISIS-1964:
--

Thanks Vladimir,

I do have difficulties to understand, how (possibly) different threads do get 
involved with your application bootstrapping, without having a full picture of 
what is going on in your environment.

Anyway, reading your comment, if it is the case, that your entire Isis 
bootstrapping is dependent on another thread to complete some initialization 
work, you could consider using following fact about javax.servlet.Filter:

The filters are always initialized during webapp's startup in the order as they 
are defined in the web.xml. [1]

You can place another custom filter into your web.xml, that has higher priority 
than the WicketFilter, such that it can finish any initialization before Isis 
gets bootstrapped.
{code:xml}

WicketFilter

org.apache.wicket.protocol.http.WicketFilter

applicationClassName
domainapp.webapp.HelloWorldApplication



WicketFilter
/wicket/*
{code}
[1] 
[https://stackoverflow.com/questions/2906344/servlet-init-and-filter-init-call-sequence]

> 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.(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 
> 

[jira] [Commented] (ISIS-1964) ConcurrentModificationException when stating application

2018-06-21 Thread Vladimir Nisevic (JIRA)


[ 
https://issues.apache.org/jira/browse/ISIS-1964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16519657#comment-16519657
 ] 

Vladimir Nisevic commented on ISIS-1964:


Hi, we are using latest Sun JDK 8 on RedHat Linux with latest Tomcat8. We 
restart tomcat after each redeployment. Meanwhile it happens not no often.

 

Some of our domain services register in their postConstruct  method to an 
callback of an additional thread which takes care that database is really 
available since this domain domain service needs database to read specific app 
settings in order to initialize themselve properly. That was an issue in 
previous Isis versions so we solved on that way. That means that some of our 
domain services spend some time in postConstruct method waiting and then 
continue. But we do not touch Isis bootstrapping at all.

 

Regs

Vladimir

 

> 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.(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 
> 

[jira] [Commented] (ISIS-1964) ConcurrentModificationException when stating application

2018-06-21 Thread Andi Huber (JIRA)


[ 
https://issues.apache.org/jira/browse/ISIS-1964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16519394#comment-16519394
 ] 

Andi Huber commented on ISIS-1964:
--

Hi Vladimir, can you give us a short description on what kind of java runtime 
environment you are encountering this issue? 
Do you have multiple instances of Apache Isis running within the same servlet 
container or jvm? 
Does this happen only on application redeployment or on a servlet container 
fresh-start as well?

Cheers, Andi


> 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.(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()
> at 
> com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:264)
> at 
> com.google.inject.internal.ProviderMethod$Factory.provision(ProviderMethod.java:401)
> at 
> 

[jira] [Comment Edited] (ISIS-1964) ConcurrentModificationException when stating application

2018-06-21 Thread Andi Huber (JIRA)


[ 
https://issues.apache.org/jira/browse/ISIS-1964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16519372#comment-16519372
 ] 

Andi Huber edited comment on ISIS-1964 at 6/21/18 1:47 PM:
---

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.

But on second thought, I do believe during Isis Application bootstrapping there 
is only a single thread involved. So the reason for seeing this exception could 
be related to an issue with the particular java runtime environment where 
somehow application bootstrapping does interfere with 'left over' instances 
that cause this kind of side effects!?

I myself do work a lot with Apache Isis, and never encountered this kind of 
error stack trace.










was (Author: hobrom):
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.

But on second thought, I do believe during Isis Application bootstrapping there 
is only a single thread involved. So the reason for seeing this exception could 
be related to an issue with the particular java runtime environment where 
somehow application bootstrapping does interfere with some 'left over' 
instances that case this kind of side effects!?

I myself do work a lot with Apache Isis, and never encountered this kind of 
error stack trace.









> 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.(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 
> 

[jira] [Comment Edited] (ISIS-1964) ConcurrentModificationException when stating application

2018-06-21 Thread Andi Huber (JIRA)


[ 
https://issues.apache.org/jira/browse/ISIS-1964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16519372#comment-16519372
 ] 

Andi Huber edited comment on ISIS-1964 at 6/21/18 1:46 PM:
---

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.

But on second thought, I do believe during Isis Application bootstrapping there 
is only a single thread involved. So the reason for seeing this exception could 
be related to an issue with the particular java runtime environment where 
somehow application bootstrapping does interfere with some 'left over' 
instances that case this kind of side effects!?

I myself do work a lot with Apache Isis, and never encountered this kind of 
error stack trace.










was (Author: hobrom):
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.(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 
> 

[jira] [Commented] (ISIS-1964) ConcurrentModificationException when stating application

2018-06-21 Thread Andi Huber (JIRA)


[ 
https://issues.apache.org/jira/browse/ISIS-1964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=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.(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()
> at 
> com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:264)
> at 
> 

[jira] [Updated] (ISIS-1964) ConcurrentModificationException when stating application

2018-06-21 Thread Andi Huber (JIRA)


 [ 
https://issues.apache.org/jira/browse/ISIS-1964?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andi Huber updated ISIS-1964:
-
Fix Version/s: 1.16.3

> 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.(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()
> 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 
>