I'm using 1.3-beta3 I think as far as the wicket js is concerned it has finished (as it has done elmt.innerHTML='something') but the problem is that the browser does the re-rendering in a different thread to the java script engine. So when I click the second time the HTML is only partially finished...
Maybe I'll have a look at how selenium waits for the browser to "settle". Think this is a common problem for browser based robot testing. Matej Knopp-2 wrote: > > What exact wicket version are you using? With the current trunk the > client side form serialization waits until the previous ajax request > finished even if you submit the form during previous request > processing. But I'm not really sure that this is your issue. > > -Matej > > On 9/19/07, Sam Hough <[EMAIL PROTECTED]> wrote: >> >> Yes. Click A updates part of the form. Click B (very soon after A) also >> submits that form. So my suspicion is that the browser is still busy >> parsing >> the last update and click B sends a form in an intermediate state. >> >> Does that sound likely? I've seen it in the past that after innerHTML you >> have to wait a while to access the DOM. >> >> >> Johan Compagner wrote: >> > >> > do you click fast on a dom portion that is being replaced by the >> previous >> > request? >> > >> > johan >> > >> > >> > On 9/19/07, Sam Hough <[EMAIL PROTECTED]> wrote: >> >> >> >> >> >> Bit more information is that the bean property that is causing the >> >> problem >> >> is >> >> being set to null by my html form via a wicket ajax update... >> >> >> >> Could it be that although wicket is doing everything correctly the DOM >> in >> >> (firefox 2) has not "settled" after the elmt.innerHTML= ... from the >> >> previous ajax response so the next click sends an update that I >> wouldn't >> >> expect? >> >> >> >> Any options in wicket to block the UI till the DOM has settled? Or >> shall >> >> I >> >> point my html monkey at it? >> >> >> >> >> >> >> >> >> >> Sam Hough wrote: >> >> > >> >> > Must be me then. I'll try and pin it down more. Hmmm. >> >> > >> >> > >> >> > >> >> > Johan Compagner wrote: >> >> >> >> >> >> the nullpointer comes from outside of wicket (criterion class) but >> you >> >> >> say if you click quickly you only get it? all pages are blocked by >> a >> >> >> barrier that is build around the pagemap. its in Session.get page >> >> >> method. only 1 request can pass that at the same time. but what is >> >> >> suddenly null that you dont expect to be null? >> >> >> >> >> >> On 9/18/07, Sam Hough <[EMAIL PROTECTED]> wrote: >> >> >>> >> >> >>> That is pretty much it. Except that: >> >> >>> Caused by: java.lang.NullPointerException >> >> >>> at >> >> >>> com.namechangedtoprotectguilty.search.Criterion.getHelper( >> >> Criterion.java:200) >> >> >>> at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source) >> >> >>> at >> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke( >> >> DelegatingMethodAccessorImpl.java:25) >> >> >>> at java.lang.reflect.Method.invoke(Method.java:585) >> >> >>> at >> >> >>> >> >> org.apache.wicket.util.lang.PropertyResolver$MethodGetAndSet.getValue( >> >> PropertyResolver.java:1030) >> >> >>> >> >> >>> Blows up in our code in a way that really looks like a >> multithreading >> >> >>> issue >> >> >>> to me. If I click slowly no problems, if I click quickly on a slow >> >> page >> >> >>> it >> >> >>> reliably blows up. Guess I could put in a sync filter to double >> check >> >> >>> that >> >> >>> it is a sync error. We don't create any threads so apart from >> >> threading >> >> >>> issue I can't see what else it could be... >> >> >>> >> >> >>> >> >> >>> igor.vaynberg wrote: >> >> >>> > >> >> >>> > show us the full stack trace >> >> >>> > >> >> >>> > -igor >> >> >>> > >> >> >>> > On 9/18/07, Sam Hough <[EMAIL PROTECTED]> wrote: >> >> >>> >> >> >> >>> >> >> >> >>> >> Which bit of code does the blocking on the server? I'm getting >> >> what >> >> >>> looks >> >> >>> >> very much like a threading issue. I've looked at all the >> methods >> >> >>> below >> >> >>> >> and >> >> >>> >> can't see any obvious sync code... I'm using 1.3-beta3 >> >> >>> >> >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> org.apache.wicket.util.lang.PropertyResolver$MethodGetAndSet.getValue( >> >> >>> >> PropertyResolver.java:1034) >> >> >>> >> at >> >> >>> >> >> >> org.apache.wicket.util.lang.PropertyResolver.getObjectAndGetSetter( >> >> >>> >> PropertyResolver.java:247) >> >> >>> >> at >> >> >>> >> org.apache.wicket.util.lang.PropertyResolver.getValue( >> >> >>> >> PropertyResolver.java:89) >> >> >>> >> at >> >> >>> >> org.apache.wicket.model.AbstractPropertyModel.getObject( >> >> >>> >> AbstractPropertyModel.java:110) >> >> >>> >> at >> >> >>> >> org.apache.wicket.Component.getModelObject(Component.java:1293) >> >> >>> >> at org.apache.wicket.Component$2.compare(Component.java >> >> :540) >> >> >>> >> at >> >> >>> >> org.apache.wicket.Component.setModelObject(Component.java:2522) >> >> >>> >> at >> >> >>> >> org.apache.wicket.markup.html.form.FormComponent.updateModel( >> >> >>> >> FormComponent.java:1002) >> >> >>> >> at >> >> >>> org.apache.wicket.markup.html.form.Form$14.validate(Form.java >> >> >>> >> :1642) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> >> org.apache.wicket.markup.html.form.Form$ValidationVisitor.formComponent( >> >> >>> >> Form.java:160) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrderHelper >> >> >>> >> (FormComponent.java:403) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrderHelper >> >> >>> >> (FormComponent.java:390) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrderHelper >> >> >>> >> (FormComponent.java:390) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrderHelper >> >> >>> >> (FormComponent.java:390) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrderHelper >> >> >>> >> (FormComponent.java:390) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrder >> >> >>> >> (FormComponent.java:368) >> >> >>> >> at >> >> >>> >> >> >> org.apache.wicket.markup.html.form.Form.visitFormComponentsPostOrder( >> >> >>> >> Form.java:1004) >> >> >>> >> at >> >> >>> >> >> org.apache.wicket.markup.html.form.Form.updateFormComponentModels( >> >> >>> >> Form.java:1637) >> >> >>> >> at >> >> >>> org.apache.wicket.markup.html.form.Form.process(Form.java:834) >> >> >>> >> at >> >> org.apache.wicket.markup.html.form.Form.onFormSubmitted( >> >> >>> >> Form.java:783) >> >> >>> >> at >> >> >>> >> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent( >> >> >>> >> AjaxFormSubmitBehavior.java:126) >> >> >>> >> at >> >> >>> >> >> >> >>> org.apache.wicket.ajax.AjaxEventBehavior.respond( >> >> AjaxEventBehavior.java >> >> >>> >> :163) >> >> >>> >> at >> >> >>> >> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest( >> >> >>> >> AbstractDefaultAjaxBehavior.java:268) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents >> >> >>> >> (BehaviorRequestTarget.java:100) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents( >> >> >>> >> AbstractRequestCycleProcessor.java:90) >> >> >>> >> at >> >> >>> >> >> >> >>> org.apache.wicket.RequestCycle.processEventsAndRespond( >> >> RequestCycle.java >> >> >>> >> :1032) >> >> >>> >> at >> >> >>> org.apache.wicket.RequestCycle.step(RequestCycle.java:1108) >> >> >>> >> at >> >> >>> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1177) >> >> >>> >> at >> >> >>> org.apache.wicket.RequestCycle.request(RequestCycle.java:500) >> >> >>> >> at >> >> >>> >> >> >> >>> >> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java >> >> :261) >> >> >>> >> at >> >> >>> >> >> >> >>> org.apache.wicket.protocol.http.WicketFilter.doFilter( >> >> WicketFilter.java >> >> >>> >> :127) >> >> >>> >> at >> >> >>> >> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( >> >> >>> >> ApplicationFilterChain.java:215) >> >> >>> >> at >> >> >>> >> org.apache.catalina.core.ApplicationFilterChain.doFilter( >> >> >>> >> ApplicationFilterChain.java:188) >> >> >>> >> at >> >> >>> >> org.apache.catalina.core.StandardWrapperValve.invoke( >> >> >>> >> StandardWrapperValve.java:210) >> >> >>> >> at >> >> >>> >> org.apache.catalina.core.StandardContextValve.invoke( >> >> >>> >> StandardContextValve.java:174) >> >> >>> >> at >> >> >>> >> >> >> >>> org.apache.catalina.core.StandardHostValve.invoke( >> >> StandardHostValve.java >> >> >>> >> :127) >> >> >>> >> at >> >> >>> >> >> >> >>> org.apache.catalina.valves.ErrorReportValve.invoke( >> >> ErrorReportValve.java >> >> >>> >> :117) >> >> >>> >> at >> >> >>> >> org.apache.catalina.core.StandardEngineValve.invoke( >> >> >>> >> StandardEngineValve.java:108) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java >> >> >>> >> :151) >> >> >>> >> at >> >> >>> >> >> >> >>> >> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java >> >> :870) >> >> >>> >> at >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection >> >> >>> >> (Http11BaseProtocol.java:665) >> >> >>> >> at >> >> >>> >> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket( >> >> >>> >> PoolTcpEndpoint.java:528) >> >> >>> >> at >> >> >>> >> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt( >> >> >>> >> LeaderFollowerWorkerThread.java:81) >> >> >>> >> at >> >> >>> >> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run( >> >> >>> >> ThreadPool.java:685) >> >> >>> >> at java.lang.Thread.run(Thread.java:595) >> >> >>> >> >> >> >>> >> >> >> >>> >> Matej Knopp-2 wrote: >> >> >>> >> > >> >> >>> >> > There is no way that ajax requests can be processed without >> >> >>> blocking. >> >> >>> >> > a) ajax requests are ordered on client into queues >> >> >>> >> > b) requests are blocked on target page (not session) on >> server >> >> side >> >> >>> >> > >> >> >>> >> > -Matej >> >> >>> >> > >> >> >>> >> > On 9/7/07, Sam Hough <[EMAIL PROTECTED]> wrote: >> >> >>> >> >> >> >> >>> >> >> A bit of the application lets you add items to a list using >> >> >>> >> >> AjaxFallbackButton. All works fine if you click the buttons >> >> slowly >> >> >>> but >> >> >>> >> if >> >> >>> >> >> I >> >> >>> >> >> click quickly I get exceptions that look like my code is >> >> running >> >> >>> >> >> concurrently (nullpointer where it can't happen if running >> in a >> >> >>> single >> >> >>> >> >> thread). >> >> >>> >> >> >> >> >>> >> >> What behaviour is Wicket aiming to implement for Ajax and >> >> >>> threading? >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> Matej Knopp-2 wrote: >> >> >>> >> >> > >> >> >>> >> >> > Can you be more specific? What kind of concurrency issues? >> >> >>> >> >> > >> >> >>> >> >> > -Matej >> >> >>> >> >> > >> >> >>> >> >> > On 9/7/07, Sam Hough <[EMAIL PROTECTED]> wrote: >> >> >>> >> >> >> >> >> >>> >> >> >> oops, I posted on old forum... >> >> >>> >> >> >> >> >> >>> >> >> >> http://www.nabble.com/threading-question-tf841003.html >> >> >>> >> >> >> >> >> >>> >> >> >> [all request serialised on Session object] >> >> >>> >> >> >> >> >> >>> >> >> >> Is this true even for Ajax requests? Is whole life cycle >> >> >>> >> effectively >> >> >>> >> >> >> single >> >> >>> >> >> >> threaded for a single session? >> >> >>> >> >> >> >> >> >>> >> >> >> I think I'm seeing a concurrency issue in my website >> (Wicket >> >> >>> >> 1.3-beta3 >> >> >>> >> >> >> and >> >> >>> >> >> >> lots of AjaxFallbackButton, I did listen to Igor)... >> >> >>> >> >> >> >> >> >>> >> >> >> Obviously would be tempting to sync on the Session but >> might >> >> >>> break >> >> >>> >> lot >> >> >>> >> >> of >> >> >>> >> >> >> the usability advantages of Ajax... >> >> >>> >> >> >> >> >> >>> >> >> >> Anybody got any top tips? >> >> >>> >> >> >> -- >> >> >>> >> >> >> View this message in context: >> >> >>> >> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >>> >> >> >> http://www.nabble.com/threading-issues---continued-tf4400569.html#a12552735 >> >> >>> >> >> >> Sent from the Wicket - User mailing list archive at >> >> Nabble.com. >> >> >>> >> >> >> >> >> >>> >> >> >> >> >> >>> >> >> >> >> >> >>> >> >> >> --------------------------------------------------------------------- >> >> >>> >> >> >> To unsubscribe, e-mail: >> [EMAIL PROTECTED] >> >> >>> >> >> >> For additional commands, e-mail: >> >> [EMAIL PROTECTED] >> >> >>> >> >> >> >> >> >>> >> >> >> >> >> >>> >> >> > >> >> >>> >> >> > >> >> >>> >> >> >> --------------------------------------------------------------------- >> >> >>> >> >> > To unsubscribe, e-mail: >> [EMAIL PROTECTED] >> >> >>> >> >> > For additional commands, e-mail: >> [EMAIL PROTECTED] >> >> >>> >> >> > >> >> >>> >> >> > >> >> >>> >> >> > >> >> >>> >> >> >> >> >>> >> >> -- >> >> >>> >> >> View this message in context: >> >> >>> >> >> >> >> >>> >> >> >> >>> >> >> >> http://www.nabble.com/threading-issues---continued-tf4400569.html#a12553207 >> >> >>> >> >> Sent from the Wicket - User mailing list archive at >> Nabble.com. >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> --------------------------------------------------------------------- >> >> >>> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> >>> >> >> For additional commands, e-mail: >> [EMAIL PROTECTED] >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> > >> >> >>> >> > >> >> >>> >> --------------------------------------------------------------------- >> >> >>> >> > To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> >>> >> > For additional commands, e-mail: [EMAIL PROTECTED] >> >> >>> >> > >> >> >>> >> > >> >> >>> >> > >> >> >>> >> >> >> >>> >> -- >> >> >>> >> View this message in context: >> >> >>> >> >> >> >>> >> >> >> http://www.nabble.com/threading-issues---continued-tf4400569.html#a12759130 >> >> >>> >> Sent from the Wicket - User mailing list archive at Nabble.com. >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> --------------------------------------------------------------------- >> >> >>> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> >>> >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >>> >> >> >> >>> >> >> >> >>> > >> >> >>> > >> >> >>> >> >> >>> -- >> >> >>> View this message in context: >> >> >>> >> >> >> http://www.nabble.com/threading-issues---continued-tf4400569.html#a12759515 >> >> >>> Sent from the Wicket - User mailing list archive at Nabble.com. >> >> >>> >> >> >>> >> >> >>> >> --------------------------------------------------------------------- >> >> >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> >>> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >>> >> >> >>> >> >> >> >> >> >> >> >> > >> >> > >> >> >> >> -- >> >> View this message in context: >> >> >> http://www.nabble.com/threading-issues---continued-tf4400569.html#a12772965 >> >> Sent from the Wicket - User mailing list archive at Nabble.com. >> >> >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/threading-issues---continued-tf4400569.html#a12774734 >> Sent from the Wicket - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > -- View this message in context: http://www.nabble.com/threading-issues---continued-tf4400569.html#a12774963 Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
