ICEfaces
  1. ICEfaces
  2. ICE-7660

MyFaces push/user event conflict

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 3.0
    • Fix Version/s: 3.1
    • Component/s: Bridge
    • Labels:
      None
    • Environment:
      ICEfaces, MyFaces
    • Assignee Priority:
      P1
    • Affects:
      Sample App./Tutorial, Compatibility/Configuration

      Description


      When the auctionMonitor clock interval is set to 1 second, it is common to see user events rejected when they co-incide with push updates.

       - push occurs, MyFaces assigns new ViewState key
       - click occurs using current key
       - click received at server with stale ViewState key is discarded

      One way to mitigate this is to not have high frequency push updates (such as increasing the interval in auctionMonitor).

        Activity

        Hide
        Ted Goddard added a comment -

        It's possible that there is a specific interaction with the MyFaces event queue that would make the fix for this simpler than it might appear.

        Show
        Ted Goddard added a comment - It's possible that there is a specific interaction with the MyFaces event queue that would make the fix for this simpler than it might appear.
        Hide
        Ted Goddard added a comment -

        Assigning to Ken to dispatch the fix within the EE schedule.

        Show
        Ted Goddard added a comment - Assigning to Ken to dispatch the fix within the EE schedule.
        Hide
        Ted Goddard added a comment -

        Missed clicks on MyFaces are observed to have essentially empty responses:

        <?xml version="1.0" encoding="utf-8"?><partial-response><changes><update id="javax.faces.ViewState"><![CDATA[pJ/Nu6dY9UwYree3MxFKZ7p9ouW5ZCj2Pw21wgkP0baQdNsgYHK7WOocfJ+rkyYMPHrkHqFKx0co
        750+7IiR1EIvTY+Rhrm9BeBDwREn/XRxOgFhcaFqT9bKNi81Il3rYAlyQAF6/Q1xTrw3
        ]]></update></changes></partial-response>

        Show
        Ted Goddard added a comment - Missed clicks on MyFaces are observed to have essentially empty responses: <?xml version="1.0" encoding="utf-8"?><partial-response><changes><update id="javax.faces.ViewState"><![CDATA[pJ/Nu6dY9UwYree3MxFKZ7p9ouW5ZCj2Pw21wgkP0baQdNsgYHK7WOocfJ+rkyYMPHrkHqFKx0co 750+7IiR1EIvTY+Rhrm9BeBDwREn/XRxOgFhcaFqT9bKNi81Il3rYAlyQAF6/Q1xTrw3 ]]></update></changes></partial-response>
        Hide
        Ted Goddard added a comment -

        This issue seems readily reproducible with auctionMonitor, but not with auction. Do your tests confirm this as well?

        Show
        Ted Goddard added a comment - This issue seems readily reproducible with auctionMonitor, but not with auction. Do your tests confirm this as well?
        Hide
        Ted Goddard added a comment -

        For compat auctionMonitor, the header implementation is as follows:

        var form=formOf(this);form['iceForm:j_idcl'].value='iceForm:iceTable:sortByTitle_click';iceSubmit(form,this,event);ice.onAfterUpdate(function()

        {form['iceForm:j_idcl'].value='';}

        );return false;

        For auction it is:

        jsf.util.chain(document.getElementById('nameHdr:sortColumnEvent'), event,'jsf.ajax.request(\'nameHdr:sortColumnEvent\',event,

        {execute:\'@all \',render:\'@all \',\'columnName\':\'nameColumn\',\'javax.faces.behavior.event\':\'action\'}

        )'); return false;

        Show
        Ted Goddard added a comment - For compat auctionMonitor, the header implementation is as follows: var form=formOf(this);form ['iceForm:j_idcl'] .value='iceForm:iceTable:sortByTitle_click';iceSubmit(form,this,event);ice.onAfterUpdate(function() {form['iceForm:j_idcl'].value='';} );return false; For auction it is: jsf.util.chain(document.getElementById('nameHdr:sortColumnEvent'), event,'jsf.ajax.request(\'nameHdr:sortColumnEvent\',event, {execute:\'@all \',render:\'@all \',\'columnName\':\'nameColumn\',\'javax.faces.behavior.event\':\'action\'} )'); return false;
        Hide
        Carmen Cristurean added a comment -

        This issue cannot be reproduced manually with auction application.

        Re-tested manually the sorting behaviour within both auction & auctionMonitor, using 3.0.x-maintenance rev. 28227:

        • issue is still persistent in auctionMonitor (about 2-3 sorting clicks out of 10 fail, depending on the browser).
        • sorting always works in auction application.
        Show
        Carmen Cristurean added a comment - This issue cannot be reproduced manually with auction application. Re-tested manually the sorting behaviour within both auction & auctionMonitor, using 3.0.x-maintenance rev. 28227: issue is still persistent in auctionMonitor (about 2-3 sorting clicks out of 10 fail, depending on the browser). sorting always works in auction application.
        Hide
        Carmen Cristurean added a comment -

        Re-tested sorting in auctionMonitor and auction apps using ICEfaces3 trunk rev. 28979, in IE8, Firefox12, Chrome18:

        • no issues related to sorting in auction.
        • sorting works in auctionMonitor most of the time (about 2-3 sorting clicks out of 10 fail, depending on the browser).
        Show
        Carmen Cristurean added a comment - Re-tested sorting in auctionMonitor and auction apps using ICEfaces3 trunk rev. 28979, in IE8, Firefox12, Chrome18: no issues related to sorting in auction. sorting works in auctionMonitor most of the time (about 2-3 sorting clicks out of 10 fail, depending on the browser).
        Hide
        Deryk Sinotte added a comment -

        Marking as Won't Fix. While improvements have been made, the behaviour is a relatively rare edge case requiring the use of both MyFaces and a very tight Ajax Push cycle. The Auction Monitor provides this combination through the use of a Clock renderer that is set do an Ajax Push at 1-second intervals - something we typically wouldn't recommend implementing other than in a demonstration of this type.

        Show
        Deryk Sinotte added a comment - Marking as Won't Fix. While improvements have been made, the behaviour is a relatively rare edge case requiring the use of both MyFaces and a very tight Ajax Push cycle. The Auction Monitor provides this combination through the use of a Clock renderer that is set do an Ajax Push at 1-second intervals - something we typically wouldn't recommend implementing other than in a demonstration of this type.

          People

          • Assignee:
            Carmen Cristurean
            Reporter:
            Ted Goddard
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: