[ 
https://issues.apache.org/jira/browse/WICKET-6702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17017984#comment-17017984
 ] 

Tobias Haupt commented on WICKET-6702:
--------------------------------------

I'm also facing a related Problem while accessing a page that is currently 
serialized. It only appears when I trigger a big number of Ajax requests to the 
same page instance. I use the current version of wicket 8.7.0.

I put a debugger breakpoint into 
java.util.ArrayList.writeObject(ArrayList.java:766) and found out that the 
list, that is concurrently modified, is the children list of MarkupContainer. 
In my case the exception is triggered by a list (Repeater) that clears and 
rebuilds the contained elements.

Its hard to build a quickstart because it is a timing problem. In my case the 
serialized page is relatively big in terms of contained Components. It takes 
some time to serialize it.

{code:java}
org.apache.wicket.WicketRuntimeException: 
java.util.ConcurrentModificationException
 at 
org.apache.wicket.serialize.java.JavaSerializer$SerializationCheckerObjectOutputStream.writeObjectOverride(JavaSerializer.java:402)
 ~[wicket-core.j
ar:8.7.0]
 at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344) 
~[?:1.8.0_144]
 at 
org.apache.wicket.serialize.java.JavaSerializer.serialize(JavaSerializer.java:82)
 [wicket-core.jar:8.7.0]
 at 
org.apache.wicket.pageStore.AbstractPageStore.serializePage(AbstractPageStore.java:133)
 [wicket-core.jar:8.7.0]
 at 
org.apache.wicket.pageStore.DefaultPageStore.createSerializedPage(DefaultPageStore.java:281)
 [wicket-core.jar:8.7.0]
 at 
org.apache.wicket.pageStore.DefaultPageStore.storePage(DefaultPageStore.java:61)
 [wicket-core.jar:8.7.0]
 at 
org.apache.wicket.pageStore.AsynchronousPageStore$PageSavingRunnable.run(AsynchronousPageStore.java:208)
 [wicket-core.jar:8.7.0]
 at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
Caused by: java.util.ConcurrentModificationException
 at java.util.ArrayList.writeObject(ArrayList.java:766) ~[?:1.8.0_144]
 at sun.reflect.GeneratedMethodAccessor183.invoke(Unknown Source) ~[?:?]
 at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_144]
 at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
 at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) 
~[?:1.8.0_144]
 at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
~[?:1.8.0_144]
 at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
~[?:1.8.0_144]
 at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
~[?:1.8.0_144]
 at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
~[?:1.8.0_144]
 at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
~[?:1.8.0_144]
 at java.util.ArrayList.writeObject(ArrayList.java:762) ~[?:1.8.0_144]
 at sun.reflect.GeneratedMethodAccessor183.invoke(Unknown Source) ~[?:?]

[... ommited]{code}


> AsynchronousPageStore with NotDetachedModelChecker - "Not detached model 
> found" exception on several fast sequential Ajax calls
> -------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-6702
>                 URL: https://issues.apache.org/jira/browse/WICKET-6702
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-core
>    Affects Versions: 8.5.0
>            Reporter: Sergei Tkachuk
>            Priority: Major
>         Attachments: QuickStart.zip
>
>
> Preconditions: Application uses AsynchronousPageStore (as it is by default).
> When there are several fast sequential Ajax calls to a component, then a 
> component's LoadableDetachableModel gets attached and detached several times 
> before real async serialization takes place. And at times the serialization 
> is initiated when the model has been already attached once again by a 
> subsequent Ajax call, and not detached yet as the request is still in 
> progress. This causes NotDetachedModelChecker() to throw "Not detached model 
> found!" exception
> Disabling async serialization fixes the problem.
> A test-case and a log attached.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to