[MAGNOLIA-2026] ConcurrentModificationException while instantiating [config:/server/security] Created: 25/Jan/08  Updated: 23/Jan/13  Resolved: 31/Jan/08

Status: Closed
Project: Magnolia
Component/s: None
Affects Version/s: 3.5.3
Fix Version/s: 3.5.4

Type: Bug Priority: Critical
Reporter: Fabrizio Giustina Assignee: Philipp Bärfuss
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:

 Description   

this happened a few times in our environment while restarting a server, and the result is that the website become inaccessible:

ERROR info.magnolia.cms.util.FactoryUtil$ObservedObjectFactory ?(?:?) 25.01.2008 16:14:12 can't instantiate object [config:/server/security]
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
at java.util.HashMap$ValueIterator.next(HashMap.java:822)
at info.magnolia.content2bean.impl.Content2BeanProcessorImpl.setProperties(Content2BeanProcessorImpl.java:208)
at info.magnolia.content2bean.impl.Content2BeanProcessorImpl.toBean(Content2BeanProcessorImpl.java:105)
at info.magnolia.content2bean.impl.Content2BeanProcessorImpl.toMap(Content2BeanProcessorImpl.java:167)
at info.magnolia.content2bean.impl.Content2BeanProcessorImpl.toBean(Content2BeanProcessorImpl.java:99)
at info.magnolia.content2bean.impl.Content2BeanProcessorImpl.toMap(Content2BeanProcessorImpl.java:167)
at info.magnolia.content2bean.impl.Content2BeanProcessorImpl.toBean(Content2BeanProcessorImpl.java:99)
at info.magnolia.content2bean.impl.Content2BeanProcessorImpl.toBean(Content2BeanProcessorImpl.java:75)
at info.magnolia.content2bean.Content2BeanUtil.toBean(Content2BeanUtil.java:152)
at info.magnolia.cms.util.FactoryUtil$ObservedObjectFactory.transformNode(FactoryUtil.java:333)
at info.magnolia.cms.util.FactoryUtil$ObservedObjectFactory.onRegister(FactoryUtil.java:320)
at info.magnolia.cms.util.FactoryUtil$ObservedObjectFactory.load(FactoryUtil.java:307)
at info.magnolia.cms.util.FactoryUtil$ObservedObjectFactory.<init>(FactoryUtil.java:284)
at info.magnolia.cms.util.FactoryUtil.newInstance(FactoryUtil.java:114)
at info.magnolia.cms.util.FactoryUtil.getSingleton(FactoryUtil.java:189)
at info.magnolia.cms.security.SecuritySupport$Factory.getInstance(SecuritySupport.java:70)
at info.magnolia.cms.security.Security.getSecuritySupport(Security.java:65)
at info.magnolia.cms.security.Security.getAnonymousUser(Security.java:69)
at info.magnolia.context.UserContextImpl.getUser(UserContextImpl.java:72)
at info.magnolia.context.DefaultRepositoryStrategy.getSubject(DefaultRepositoryStrategy.java:77)
at info.magnolia.context.DefaultRepositoryStrategy.getAccessManager(DefaultRepositoryStrategy.java:69)
at info.magnolia.context.AbstractContext.getAccessManager(AbstractContext.java:114)
at info.magnolia.context.MgnlContext.getAccessManager(MgnlContext.java:167)
at info.magnolia.cms.security.URISecurityFilter.isAllowed(URISecurityFilter.java:81)
at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:59)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:81)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:62)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:76)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:73)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:72)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:71)
at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:64)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:70)
at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:98)
at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:195)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:63)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at it.lafeltrinelli.web.filters.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:80)



 Comments   
Comment by Fabrizio Giustina [ 26/Jan/08 ]

Not sure how this can be reproduced, but it definitively happened... I've added a synchronized block in the affected code that should help

Comment by Philipp Bracher [ 31/Jan/08 ]

The the map should you synchronized on should not be concurrently modified. I will fix the TypeDescriptor

Generated at Mon Feb 12 03:32:41 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.