For 1.5 I can say that this is definitely true, the code is in org.apache.wicket.page.PageAccessSynchronizer.adapt(...).new PageManagerDecorator() {...}.commitRequest()
The related code in 1.4 is in org.apache.wicket.Session.requestDetached() but I'm not sure what exactly happens there. On Sat, Aug 20, 2011 at 6:39 AM, Martin Makundi <martin.maku...@koodaripalvelut.com> wrote: > I believe there are numerous such Maps, but what can be the cause of > concurrent modification? Wicket should be allowing only single thread > operating on the object? > > > ** > Martin > > 2011/8/19 Dan Retzlaff <dretzl...@gmail.com>: >> I tend to agree that odds of a Wicket bug in this area are small. Can you >> think of a case in your application where a component has a HashMap of >> objects which have a TreeMap of objects? Maybe the source of this collection >> within your application is the problem. >> >> On Fri, Aug 19, 2011 at 8:50 AM, Martin Makundi < >> martin.maku...@koodaripalvelut.com> wrote: >> >>> Hi! >>> >>> I don't know how to reproduce it... and I wonder, because there is >>> pagemap lock, what else can be modifying stuff during page >>> serialization? >>> >>> ** >>> Martin >>> >>> 2011/8/19 Dan Retzlaff <dretzl...@gmail.com>: >>> > How reproducible is this? I don't know how the serialization process >>> itself >>> > would cause this, but if it's intermittent then maybe there's a threading >>> / >>> > synchronization bug somewhere. >>> > >>> > On Fri, Aug 19, 2011 at 1:59 AM, Martin Makundi < >>> > martin.maku...@koodaripalvelut.com> wrote: >>> > >>> >> Hi! >>> >> >>> >> What can be the cause of this error, how can there be concurrent >>> >> modification to a item on a page being serialized? >>> >> >>> >> ** >>> >> Martin >>> >> >>> >> >>> >> java.util.ConcurrentModificationException >>> >> at >>> >> java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1100) >>> >> at java.util.TreeMap$EntryIterator.next(TreeMap.java:1136) >>> >> at java.util.TreeMap$EntryIterator.next(TreeMap.java:1131) >>> >> at java.util.TreeMap.writeObject(TreeMap.java:2250) >>> >> at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source) >>> >> at >>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> >> at java.lang.reflect.Method.invoke(Method.java:597) >>> >> at >>> >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) >>> >> at java.util.HashMap.writeObject(HashMap.java:1001) >>> >> at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source) >>> >> at >>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> >> at java.lang.reflect.Method.invoke(Method.java:597) >>> >> at >>> >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1346) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1154) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:422) >>> >> at org.apache.wicket.Component.writeObject(Component.java:4702) >>> >> at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source) >>> >> at >>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> >> at java.lang.reflect.Method.invoke(Method.java:597) >>> >> at >>> >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) >>> >> at java.util.LinkedList.writeObject(LinkedList.java:943) >>> >> at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) >>> >> at >>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> >> at java.lang.reflect.Method.invoke(Method.java:597) >>> >> at >>> >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) >>> >> at java.util.LinkedList.writeObject(LinkedList.java:943) >>> >> at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) >>> >> at >>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> >> at java.lang.reflect.Method.invoke(Method.java:597) >>> >> at >>> >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) >>> >> at java.util.LinkedList.writeObject(LinkedList.java:943) >>> >> at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) >>> >> at >>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> >> at java.lang.reflect.Method.invoke(Method.java:597) >>> >> at >>> >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) >>> >> at java.util.ArrayList.writeObject(ArrayList.java:570) >>> >> at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source) >>> >> at >>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> >> at java.lang.reflect.Method.invoke(Method.java:597) >>> >> at >>> >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:422) >>> >> at org.apache.wicket.Component.writeObject(Component.java:4702) >>> >> at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source) >>> >> at >>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> >> at java.lang.reflect.Method.invoke(Method.java:597) >>> >> at >>> >> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1346) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1154) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1346) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1154) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1346) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1154) >>> >> at >>> >> >>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) >>> >> at >>> >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) >>> >> at >>> >> >>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) >>> >> at >>> >> >>> org.apache.wicket.util.io.IObjectStreamFactory$DefaultObjectStreamFactory$2.writeObjectOverride(IObjectStreamFactory.java:121) >>> >> at >>> >> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) >>> >> at >>> >> org.apache.wicket.util.lang.Objects.objectToByteArray(Objects.java:1124) >>> >> at >>> >> >>> org.apache.wicket.protocol.http.pagestore.AbstractPageStore.serializePage(AbstractPageStore.java:203) >>> >> at >>> >> >>> org.apache.wicket.protocol.http.pagestore.DiskPageStore.storePage(DiskPageStore.java:840) >>> >> at >>> >> >>> org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.put(SecondLevelCacheSessionStore.java:332) >>> >> at org.apache.wicket.Session.requestDetached(Session.java:1435) >>> >> at org.apache.wicket.RequestCycle.detach(RequestCycle.java:1176) >>> >> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1462) >>> >> at org.apache.wicket.RequestCycle.request(RequestCycle.java:545) >>> >> at >>> >> >>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486) >>> >> at >>> >> >>> org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:138) >>> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) >>> >> at wicket.quickstart.TakpServlet.service(TakpServlet.java:74) >>> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) >>> >> at >>> >> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502) >>> >> at >>> >> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:389) >>> >> at >>> >> >>> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) >>> >> at >>> >> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) >>> >> at >>> >> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) >>> >> at >>> >> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) >>> >> at >>> >> >>> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) >>> >> at >>> >> >>> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) >>> >> at >>> >> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) >>> >> at org.mortbay.jetty.Server.handle(Server.java:326) >>> >> at >>> >> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534) >>> >> at >>> >> >>> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:864) >>> >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) >>> >> at >>> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) >>> >> at >>> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) >>> >> at >>> >> >>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) >>> >> at >>> >> >>> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520) >>> >> >>> >> --------------------------------------------------------------------- >>> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> >> For additional commands, e-mail: users-h...@wicket.apache.org >>> >> >>> >> >>> > >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org