Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Whole page freezes no error message. Bug?

    Hi,

    i m not sure if this is a bug of the latest SmartGwtEE release (2.4). Just got this strange issue.

    it happens when i try to perform a save. The function generally saves records in 2 tables in a queue first, and then save another record to a third table. 8 out of 10 of the saves worked fine, but the whole page(only the page, not the whole browser) get's frozen without any strange messages in any of the logs (server log, Dev Console logs) , it always shows a little rotating waiting icon next to the mouse cursor, looks like it's waiting for server response, but will never get any.

    I switched back to SmartGwtEE 2.3, everything back to normal(still testing, but have already done the same thing for more than 30 times, nothing strange happened though)

    tested under Google Chrome and Firefox, same issue occurs on both of them
    tested on both browsers after switched back to 2.3, no problem so far.

    Is there a bug or anything?

    #2
    Sorry, i think i found the reason. the same problem happens, but looks like 2.4 freezes the whole page, while 2.3 doesn't

    The problem is caused by saving a 3 forms using a ValueManager, the ValueManager.saveData(DSCallback) sometimes called but no DSCallback is returned, RPC tab shows nothing special, but got this from the Results tab of the Dev Console with a WARN level of messaging:
    Code:
    00:49:37.603:XRP9:WARN:Log:TypeError: this.data is undefined
        ListGrid.regroup()
        ListGrid.dataChanged(_1=>"add",  _2=>undef,  _3=>25,  _4=>[object Array],  _5=>undef)
        anonymous("add", undef, 25, [object Array], undef)
        ResultSet._doneChangingData()
        ResultSet.handleUpdate(_1=>"add",  _2=>[object Array],  _3=>false,  _4=>{Obj})
        ResultSet.dataSourceDataChanged(_1=>{Obj},  _2=>{Obj})
        anonymous({Obj}, {Obj})
        DataSource.updateCaches(_1=>{Obj},  _2=>{Obj})
        [c]DataSource.handleUpdate(_1=>{Obj},  _2=>{Obj})
        DataSource.fireResponseCallbacks({Obj}, {Obj}, {Obj}, {Obj})
        DataSource._completeResponseProcessing([object Array], {Obj}, {Obj}, {Obj}, {Obj})
        DataSource._handleSCServerReply({Obj}, [object Array], {Obj})
        [c]Class.fireCallback(_1=>{Obj},  _2=>"rpcResponse,data,rpcRequest",  _3=>[object Array],  _4=>{Obj},  _5=>undef)
        [c]Class.fireCallback(_1=>{Obj},  _2=>"rpcResponse,data,rpcRequest",  _3=>[object Array])
        [c]RPCManager.fireReplyCallback(_1=>{Obj},  _2=>{Obj},  _3=>{Obj},  _4=>[object Array])
        [c]RPCManager.fireReplyCallbacks(_1=>{Obj},  _2=>{Obj})
        [c]RPCManager.performOperationReply(_1=>{Obj},  _2=>{Obj})
        RPCManager._performTransactionReply(94)
        [c]RPCManager.performTransactionReply(_1=>94,  _2=>"//isc_RPCResponseStart-->[{isDSResponse..."[ 1133],  _3=>undef)
        anonymous(94, [object XMLHttpRequest])
        [c]Class.fireCallback(_1=>"isc.RPCManager.performTransactionReply(..."[ 67],  _2=>"transactionNum,results,wd",  _3=>[object Array])
        [c]Comm.performXmlTransactionReply(_1=>94,  _2=>[object XMLHttpRequest])
        anonymous([object XMLHttpRequest])
        [c]Class.fireCallback(_1=>"isc.Comm.performXmlTransactionReply(94,..."[ 57],  _2=>"xmlHttpRequest",  _3=>[object Array],  _4=>[object XPCCrossOriginWrapper],  _5=>true)
        Comm._fireXMLCallback([object XMLHttpRequest], "isc.Comm.performXmlTransactionReply(94,..."[ 57])
        unnamed([object Event])
        unnamed()
    and saw similar error in the GWT hosted console:
    Code:
    01:35:38.770 [ERROR] 00:49:37.603:XRP9:WARN:Log:TypeError: this.data is undefined ListGrid.regroup() ListGrid.dataChanged(_1=>"add", _2=>undef, _3=>25, _4=>[object Array], _5=>undef) anonymous("add", undef, 25, [object Array], undef) ResultSet._doneChangingData() ResultSet.handleUpdate(_1=>"add", _2=>[object Array], _3=>false, _4=>{Obj}) ResultSet.dataSourceDataChanged(_1=>{Obj}, _2=>{Obj}) anonymous({Obj}, {Obj}) DataSource.updateCaches(_1=>{Obj}, _2=>{Obj}) [c]DataSource.handleUpdate(_1=>{Obj}, _2=>{Obj}) DataSource.fireResponseCallbacks({Obj}, {Obj}, {Obj}, {Obj}) DataSource._completeResponseProcessing([object Array], {Obj}, {Obj}, {Obj}, {Obj}) DataSource._handleSCServerReply({Obj}, [object Array], {Obj}) [c]Class.fireCallback(_1=>{Obj}, _2=>"rpcResponse,data,rpcRequest", _3=>[object Array], _4=>{Obj}, _5=>undef) [c]Class.fireCallback(_1=>{Obj}, _2=>"rpcResponse,data,rpcRequest", _3=>[object Array]) [c]RPCManager.fireReplyCallback(_1=>{Obj}, _2=>{Obj}, _3=>{Obj}, _4=>[object Array]) [c]RPCManager.fireReplyCallbacks(_1=>{Obj}, _2=>{Obj}) [c]RPCManager.performOperationReply(_1=>{Obj}, _2=>{Obj}) RPCManager._performTransactionReply(94) [c]RPCManager.performTransactionReply(_1=>94, _2=>"//isc_RPCResponseStart-->[{isDSResponse..."[ 1133], _3=>undef) anonymous(94, [object XMLHttpRequest]) [c]Class.fireCallback(_1=>"isc.RPCManager.performTransactionReply(..."[ 67], _2=>"transactionNum,results,wd", _3=>[object Array]) [c]Comm.performXmlTransactionReply(_1=>94, _2=>[object XMLHttpRequest]) anonymous([object XMLHttpRequest]) [c]Class.fireCallback(_1=>"isc.Comm.performXmlTransactionReply(94,..."[ 57], _2=>"xmlHttpRequest", _3=>[object Array], _4=>[object XPCCrossOriginWrapper], _5=>true) Comm._fireXMLCallback([object XMLHttpRequest], "isc.Comm.performXmlTransactionReply(94,..."[ 57]) unnamed([object Event]) unnamed() 
    com.smartgwt.client.core.JsObject$SGWT_WARN: 00:49:37.603:XRP9:WARN:Log:TypeError: this.data is undefined     ListGrid.regroup()     ListGrid.dataChanged(_1=>"add",  _2=>undef,  _3=>25,  _4=>[object Array],  _5=>undef)     anonymous("add", undef, 25, [object Array], undef)     ResultSet._doneChangingData()     ResultSet.handleUpdate(_1=>"add",  _2=>[object Array],  _3=>false,  _4=>{Obj})     ResultSet.dataSourceDataChanged(_1=>{Obj},  _2=>{Obj})     anonymous({Obj}, {Obj})     DataSource.updateCaches(_1=>{Obj},  _2=>{Obj})     [c]DataSource.handleUpdate(_1=>{Obj},  _2=>{Obj})     DataSource.fireResponseCallbacks({Obj}, {Obj}, {Obj}, {Obj})     DataSource._completeResponseProcessing([object Array], {Obj}, {Obj}, {Obj}, {Obj})     DataSource._handleSCServerReply({Obj}, [object Array], {Obj})     [c]Class.fireCallback(_1=>{Obj},  _2=>"rpcResponse,data,rpcRequest",  _3=>[object Array],  _4=>{Obj},  _5=>undef)     [c]Class.fireCallback(_1=>{Obj},  _2=>"rpcResponse,data,rpcRequest",  _3=>[object Array])     [c]RPCManager.fireReplyCallback(_1=>{Obj},  _2=>{Obj},  _3=>{Obj},  _4=>[object Array])     [c]RPCManager.fireReplyCallbacks(_1=>{Obj},  _2=>{Obj})     [c]RPCManager.performOperationReply(_1=>{Obj},  _2=>{Obj})     RPCManager._performTransactionReply(94)     [c]RPCManager.performTransactionReply(_1=>94,  _2=>"//isc_RPCResponseStart-->[{isDSResponse..."[ 1133],  _3=>undef)     anonymous(94, [object XMLHttpRequest])     [c]Class.fireCallback(_1=>"isc.RPCManager.performTransactionReply(..."[ 67],  _2=>"transactionNum,results,wd",  _3=>[object Array])     [c]Comm.performXmlTransactionReply(_1=>94,  _2=>[object XMLHttpRequest])     anonymous([object XMLHttpRequest])     [c]Class.fireCallback(_1=>"isc.Comm.performXmlTransactionReply(94,..."[ 57],  _2=>"xmlHttpRequest",  _3=>[object Array],  _4=>[object XPCCrossOriginWrapper],  _5=>true)     Comm._fireXMLCallback([object XMLHttpRequest], "isc.Comm.performXmlTransactionReply(94,..."[ 57])     unnamed([object Event])     unnamed()  	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 	at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 	at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:105) 	at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 	at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 	at com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1669) 	at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401) 	at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222) 	at java.lang.Thread.run(Thread.java:619)
    It doesn't happen all the time, and can't replicate this issue, why this error is happening?

    Thanks!

    Comment


      #3
      Hi,

      after quite a bit of tests, i m pretty sure this issue is caused by the ListGrid.groupBy("....."); function called in another class, refer to the error logs
      Code:
      00:49:37.603:XRP9:WARN:Log:TypeError: this.data is undefined
          ListGrid.regroup()
      My application generally has some buttons across the top bit of the web page, and different classes that extend VLayout/HLayout will be INSTANTIATED and put into a main VLayout to mimic the working environment like a desktop application. Every time when a button is called, the container VLayout will perform a 'clear workspace' task, to remove any current page:
      Code:
      	public void clearWorkspace() {
      		Canvas[] children = workspace.getChildren();
      		for(int i = 0; i < children.length; i ++) {
      			Canvas child = children[i];
      			child.destroy();
      		}
      	}
      after then, the newly instantiated class will be put into the workspace(VLayout) using: workspace.addMember(new_view)

      In my application, one screen is to create record(save), another screen is to display and edit(management)

      In the 'SAVE' screen, it saves 3 pieces of information, first is the Parent Object, second is a child saved directly from a ListGrid, the third one is another child to the Parent Object, but is saved programmatically after the Parent Object is saved. This is what i do:

      Code:
      		formManager.saveData(new DSCallback() {
      			public void execute(DSResponse response, Object rawData, DSRequest request) {
      				GWT.log("3.5");
      				consignmentSaved = response.getStatus() == DSResponse.STATUS_SUCCESS;
      				GWT.log("4");
      				
      				if(consignmentSaved) {
      					
      					lastSavedConsignmentId = response.getData()[0].getAttribute("pk_consignment_id");
      					
      					Record conStatus = new Record();
      					conStatus.setAttribute("parent_consignment", lastSavedConsignmentId);
      					conStatus.setAttribute("parent_status", startStatus);
      					conStatus.setAttribute("description", "CREATED " + consignmentNum);
      					conStatus.setAttribute("is_current", "1");
      					conStatus.setAttribute("parent_depot", parentDepot);
      					GWT.log("6");
      					dsConsignmentStatus.addData(conStatus);
      					GWT.log("7");
      					
      				}
      			}
      		});
      		
                      /** this works well even the problem happens
                       *foreign key when saving is linked in the DataSource by: <values fieldName="parent_consignment" value="$responseData.last('transact_consignment', 'add').pk_consignment_id"/>
                       */
      		gridConnoteItems.saveAllEdits();
      in the code, formManager saves the Parent Object, in the DSCallback, it saves one child object that is programmatically created; and then the ListGrid performs a SAVE function to save another child object

      The save works perfectly until i go to the Management page, view the records in a ListGrid with setting ListGrid.groupBy("....");

      If i come back to the SAVE page, the problem then happens, formManager.saveData works, but no DSCallback

      when it performs a 'groupBy', does it affect the server? and why this is happening?

      Comment


        #4
        More specifically, for the two pages SAVE and VIEW (all act on the same DataSource)

        1. view VIEW page without group, save ok
        2. view VIEW page, switch to 'groupBy' and then 'ungroup' using a button, and then save ok
        3. view VIEW page, switch to 'groupby', then go to SAVE page, save with no DSCallback
        4. after No. 3, go to VIEW page again, switch to 'groupby' and then 'ungroup', save still has no DSCallback
        5. A browser refresh will solve the problem

        generally, when the 'groupby' is switched on, and destroy the class who calls 'groupby', the status seems to be left in the DataSource, and it causes the DSCallback of a Form.saveData not to get responded.

        Any hint?

        Comment


          #5
          We don't really have enough information to comment - as a wild guess, make sure you don't destroy() a component while it's still in the middle of a save.

          Let us know if you isolate this to the point that you believe there's a bug in the framework causing the behavior.

          Comment


            #6
            I am facing the same kind of problem with a grouped list grid and multiple forms using the same values manager. When calling saveData for the values manager the callback function is not entered, instead the page freezes with a rotating circular icon next to the mouse cursor. This seems to happen quite randomly and I haven't found easily repeatable steps to reproduce the problem.

            Below you'll find version information and two different stacktraces that are related to this problem.

            GWT version 2.2.0
            SmartClient Version: SC_SNAPSHOT-2011-03-21/LGPL Development Only (built 2011-03-21)
            Sun GlassFish Enterprise Server v2.1.1 ((v2.1 Patch06)(9.1_02 Patch12)) (build b31g-fcs)
            Google Chrome 10.0.648.204

            Code:
            10:43:21.575:XRP8:WARN:Log:TypeError: Cannot read property 'isGroupedOutput' of undefined
                unnamed() @ 
                ListGrid.dataChanged() @ sc/modules/ISC_Grids.js:1149:69
                anonymous() @ eval at <anonymous> (http://localhost:8080/x/y.webapp.TabBasedMainPage/sc/modules/ISC_Core.js:38:72)
                ResultSet._doneChangingData() @ sc/modules/ISC_DataBinding.js:1352:29
                ResultSet.handleUpdate() @ sc/modules/ISC_DataBinding.js:1349:33
                ResultSet.dataSourceDataChanged() @ sc/modules/ISC_DataBinding.js:1345:6
                anonymous() @ eval at <anonymous> (http://localhost:8080/x/y.webapp.TabBasedMainPage/sc/modules/ISC_Core.js:38:72)
                DataSource.updateCaches() @ sc/modules/ISC_DataBinding.js:335:6
                [c]DataSource.handleUpdate() @ sc/modules/ISC_DataBinding.js:258:153
                DataSource.fireResponseCallbacks() @ sc/modules/ISC_DataBinding.js:533:162
                DataSource._completeResponseProcessing() @ sc/modules/ISC_DataBinding.js:532:6
            Code:
            10:25:03.676:XRP3:WARN:Log:TypeError: this.data is undefined
                ListGrid.dataChanged(_1=>"update",  _2=>{Obj},  _3=>3,  _4=>[object Array],  _5=>undef) @ sc/modules/ISC_Grids.js:1149
                anonymous("update", {Obj}, 3, [object Array], undef) @ sc/modules/ISC_Core.js:44
                ResultSet._doneChangingData() @ sc/modules/ISC_DataBinding.js:1352
                ResultSet.handleUpdate(_1=>"update",  _2=>[object Array],  _3=>undef,  _4=>{Obj}) @ sc/modules/ISC_DataBinding.js:1349
                ResultSet.dataSourceDataChanged(_1=>{Obj},  _2=>{Obj}) @ sc/modules/ISC_DataBinding.js:1345
                anonymous({Obj}, {Obj}) @ sc/modules/ISC_Core.js:44
                DataSource.updateCaches(_1=>{Obj},  _2=>{Obj}) @ sc/modules/ISC_DataBinding.js:335
                [c]DataSource.handleUpdate(_1=>{Obj},  _2=>{Obj}) @ sc/modules/ISC_DataBinding.js:258
                DataSource.fireResponseCallbacks({Obj}, {Obj}, {Obj}, {Obj}) @ sc/modules/ISC_DataBinding.js:533
                DataSource._completeResponseProcessing({Obj}, {Obj}, {Obj}, {Obj}, {Obj}) @ sc/modules/ISC_DataBinding.js:532
                DataSource._completeHandleXMLReply({Obj}, {Obj}) @ sc/modules/ISC_DataBinding.js:505
                [c]Class.fireCallback(_1=>{Obj},  _2=>"dsResponse",  _3=>[object Array],  _4=>{Obj},  _5=>undef) @ sc/modules/ISC_Core.js:297
                [c]Class.fireCallback(_1=>{Obj},  _2=>"dsResponse",  _3=>[object Array]) @ sc/modules/ISC_Core.js:393
                DataSource._completeDSResponseFromXML([object Array], {Obj}) @ sc/modules/ISC_DataBinding.js:512
                [c]Class.fireCallback(_1=>{Obj},  _2=>"records",  _3=>[object Array],  _4=>{Obj},  _5=>undef) @ sc/modules/ISC_Core.js:297
                [c]Class.fireCallback(_1=>{Obj},  _2=>"records",  _3=>[object Array]) @ sc/modules/ISC_Core.js:393
                DataSource.recordsFromXML([object Array], {Obj}) @ sc/modules/ISC_DataBinding.js:518
                DataSource.selectRecords({Obj}, {Obj}, {Obj}) @ sc/modules/ISC_DataBinding.js:514
                DataSource.dsResponseFromXML({Obj}, {Obj}, {Obj}, {Obj}) @ sc/modules/ISC_DataBinding.js:506
                DataSource._handleXMLReply({Obj}, "<response>\n   <status>0</status>\n   <..."[ 1915], {Obj}, {Obj}) @ sc/modules/ISC_DataBinding.js:504
                [c]Class.fireCallback(_1=>{Obj},  _2=>"xmlDoc,xmlText,rpcResponse,rpcRequest",  _3=>[object Array]) @ sc/modules/ISC_Core.js:297
                XMLTools._getXMLResponseReply({Obj}, "<response>\n   <status>0</status>\n   <..."[ 1915], {Obj}) @ sc/modules/ISC_DataBinding.js:54
                [c]Class.fireCallback(_1=>{Obj},  _2=>"rpcResponse,data,rpcRequest",  _3=>[object Array],  _4=>{Obj},  _5=>undef) @ sc/modules/ISC_Core.js:297
                [c]Class.fireCallback(_1=>{Obj},  _2=>"rpcResponse,data,rpcRequest",  _3=>[object Array]) @ sc/modules/ISC_Core.js:393
                anonymous(b=>{Obj},  c=>{Obj},  d=>{Obj},  e=>"<response>\n   <status>0</status>\n   <..."[ 1915]) @ sc/modules/ISC_DataBinding.js:1174
                unnamed({Obj}, {Obj}, {Obj}, "<response>\n   <status>0</status>\n   <..."[ 1915]) @ 980A09159365BEC486FF9DCEEF4F39C2.cache.html:1718
                [c]RPCManager.fireReplyCallbacks(_1=>{Obj},  _2=>{Obj}) @ sc/modules/ISC_DataBinding.js:1177
                [c]RPCManager.performOperationReply(_1=>{Obj},  _2=>{Obj}) @ sc/modules/ISC_DataBinding.js:1173
                RPCManager._performTransactionReply(49) @ sc/modules/ISC_DataBinding.js:1169
                [c]RPCManager.performTransactionReply(_1=>49,  _2=>"<response>\n   <status>0</status>\n   <..."[ 1915],  _3=>undef) @ sc/modules/ISC_DataBinding.js:1142
                anonymous(49, [object XMLHttpRequest]) @ sc/modules/ISC_Core.js:38
                [c]Class.fireCallback(_1=>"isc.RPCManager.performTransactionReply(..."[ 67],  _2=>"transactionNum,results,wd",  _3=>[object Array]) @ sc/modules/ISC_Core.js:297
                [c]Comm.performXmlTransactionReply(_1=>49,  _2=>[object XMLHttpRequest]) @ sc/modules/ISC_Core.js:1193
                anonymous([object XMLHttpRequest]) @ sc/modules/ISC_Core.js:38
                [c]Class.fireCallback(_1=>"isc.Comm.performXmlTransactionReply(49,..."[ 57],  _2=>"xmlHttpRequest",  _3=>[object Array],  _4=>[object XPCCrossOriginWrapper],  _5=>true) @ sc/modules/ISC_Core.js:297
                Comm._fireXMLCallback([object XMLHttpRequest], "isc.Comm.performXmlTransactionReply(49,..."[ 57]) @ sc/modules/ISC_Core.js:1169
                unnamed([object Event]) @ sc/modules/ISC_Core.js:1181
                handleEvent([object Event]) @ :0
                SJOWContentBoundary() @ :0
                unnamed() @
            As liudis example code didn't "have enough information", could you please advice what kind of info you need to help us with this issue.

            Comment


              #7
              We understand some bugs can be difficult to reproduce, but that still does not help us reproduce them, leaving us unable to fix them.

              Until we have reproducible steps, all we can do is speculate: and again what this looks like is calling destroy() on a component at the wrong time, or possibly calling invalidateCache(). If you do have calls to invalidateCache(), this are usually not a good idea - see the FAQ item on grids not updating for details.

              Comment


                #8
                Thanks for the quick reply.

                I am not calling destroy nor invalidateCache. Removing the grouping from the listgrid seems to get rid of this problem.

                I found steps to reproduce the problem, but unfortunately extracting the needed code from our project is a bit time consuming. We'll see if I have the time to make simple standalone testcase.

                Comment


                  #9
                  Hi,

                  It seems that at least in my and sandman's case (we're working on the same project) the error was caused by putting a ListGrid and a bunch of forms with a common ValuesManager within the same tab in a tab layout. At first, everything worked just fine, but after closing and reopening the tab calling save() for the ValuesManager caused the error. SC seemed to try to update the grid, and broke.

                  I don't know, maybe we're doing something Fundamentally Wrong here. Anyway, creating a separate DataSource for the grid fixed the problem. I'll make a working (non-working :)) example of this if i'll ever have the time.

                  -PM

                  Comment


                    #10
                    SmartGwt 3.0p

                    Hi ...
                    We are getting this bug as well, again it was intermittent but we got it when sending an event to a ListGrid (via updateCaches on a DataSource).

                    After much, much testing ... we narrowed it down to windows with ListGrids where the groupBy is set. Eventually we were able to reproduce it consistently.

                    Steps to Reproduce:
                    1. Create a Listgrid in a window with a DataSource attached
                    2. Set the groupBy field (either via code or via the context menu in the gui).
                    3. Close the window.
                    4. Open it again.
                    5. Send an update via updateCaches ...

                    Result: you get a dialog with "(TypeError): this.data is undefined", and then ANY ListGrids associated with this DataSource are broken (i.e. the above dialog any time an update is sent) for good unless you refresh the application in the browser.

                    This is why it seemed intermittent, a simple ListGrid would work as expected and then stop.

                    Since we cache DataSource objects in the client once we create them I can only guess that when you close a window with a ListGrid that has groupBy set, the ListGrid somehow doesn't detach from the DataSource.

                    If the groupBy isn't set, everything works as expected.

                    A fix on this would be great ...
                    Last edited by mike_mac; 7 Mar 2012, 06:31.

                    Comment


                      #11
                      Please create a minimal, ready-to-run test case and fill in all the other information required by the forum, and we'll take a look.

                      Comment


                        #12
                        SmartGWT Power 3.0

                        I also don't have a test case ready to upload but am having the same issue -- the DSCallback passed to form.saveData() is never executing.

                        Comment


                          #13
                          Sorry, we still need some way to reproduce the problem in order to fix it. All the reports so far have been very vague, and we have several screens in various apps that are similar and do not exhibit such a problem. So we don't even know for sure there's a framework bug as opposed to just a subtle error being made by multiple people.

                          Comment


                            #14
                            OK - your were exactly right, I was destroying the reference to my callback when I destroyed the form immediately after form.saveData(callback). I changed that destroy() to hide(), made the dialog accessible to the class that owns the DSCallback and call destroyMyDialog() from the DSCallback.

                            Code:
                            saveButton.addClickHandler (new ClickHandler() 
                            {
                                public void onClick(ClickEvent event)
                                {
                                    theForm.saveData(theCallback);
                                    hide();
                                }
                            });
                            Thanks!

                            Comment


                              #15
                              Cannot read property 'isGroupedOutput' of undefined

                              Hi
                              This issue isn't resolved in the 3.1 build we have from the 6th of June. Again to remind you.

                              Create an instance of a smartClient "Window" with a ListGrid and attach a datasource to the ListGrid.
                              Set the groupBy for one of the fields.
                              Send an event to the ListGrid via updateCaches on the DataSource.
                              Event is received and ListGrid row is updated.

                              Close the "Window".
                              Open the "Window" again.
                              Enable groupBy on one of the fields.
                              Send an event to the ListGrid via the DataSource and update caches.
                              Event is not received and warning dialog is show with the information specified below.

                              1. SmartClient Version: SNAPSHOT_v8.3d_2012-06-06/LGPL Development Only (built 2012-06-06)

                              2. Chrome and Firefox (server push not implemented in IE yet).

                              5. Nothing logged in the browser trace, I get a warning dialog with the following:
                              In Chrome
                              (TypeError): Cannot read property 'isGroupedOutput' of undefined

                              In FireFox
                              (TypeError): this.data is undefined

                              I have added the trace from the debugger window below.

                              Sample code ... I have a datasource that receives an event from the client and when its receives calls the following call back.

                              The DomainObject List => RecordList method simply creates a new record and sets the values in the record as name value pairs. We set boolean, integer, float and date if received with the default being a String.
                              Code:
                                          notificationClient.subscribe(getID(), getMyID(), null, new NotificationClientCallback() 
                                          {
                                              @Override
                                              public void onNotification(String event, DomainObject object) {
                                                  if((event != null) && (object != null))
                                                  {
                                                      GWT.log("received "+event+" event for "+
                                                              object.getClassName()+" with name "+object.getName());
                                                     DSResponse response = createDSResponse(event, object);
                                                     updateCaches(response);                      
                                                  }
                                              }
                              
                                              private DSResponse createDSResponse(String event,DomainObject object)
                                              {
                                                  DSResponse response = new DSResponse();
                                                  List<DomainObject> listDo = new ArrayList<DomainObject>();
                                                  listDo.add(object);
                                                  Record[] records = createRecords(listDo);
                                                  response.setData(records);
                                                  if(event.equals(NotificationType.create.toString()))
                                                  {
                                                      response.setAttribute(OPERATION_TYPE, DSOperationType.ADD);
                                                  }
                                                  else if (event.equals(NotificationType.delete.toString()))
                                                  {
                                                      response.setAttribute(OPERATION_TYPE, DSOperationType.REMOVE);
                                                  }
                                                  else if (event.equals(NotificationType.update.toString()))
                                                      response.setAttribute(OPERATION_TYPE, DSOperationType.UPDATE);
                                                  return response;
                                              }	
                                          });

                              Code:
                              18:39:17.855:TMR1:INFO:ResultSet:isc_ResultSet_0 (created by: ASC_LISTINGWINDOW_1_LISTINGPANEL_BOUNDLIST):updating cache in place after operationType: update, allMatchingRowsCached true
                              18:39:17.855:TMR1:INFO:ResultSet:isc_ResultSet_0 (created by: ASC_LISTINGWINDOW_1_LISTINGPANEL_BOUNDLIST):Updating cache: operationType 'update' (no componentID) ,1 rows update data
                              18:39:17.858:TMR1:INFO:DataSource:Criteria object:{} not explicitly marked as AdvancedCriteriaAdvancedCriteria
                              18:39:17.861:TMR1:INFO:DataSource:Criteria object:{} not explicitly marked as AdvancedCriteriaAdvancedCriteria
                              18:39:17.863:TMR1:INFO:DataSource:Criteria object:{} not explicitly marked as AdvancedCriteriaAdvancedCriteria
                              18:39:17.866:TMR1:INFO:localFilter:isc_ResultSet_0 (created by: ASC_LISTINGWINDOW_1_LISTINGPANEL_BOUNDLIST):Local filter applied: 6 of 6 records matched filter:{
                              }
                              18:39:17.876:TMR1:INFO:destroys:isc_IButton_20:destroy()
                              18:39:17.889:TMR1:INFO:layout:isc_globalWarn_toolbar:adding newMembers: [IButton ID:isc_IButton_20] at position: 0
                              18:39:17.892:TMR1:INFO:clickMask:showing click mask, action: isc_globalWarn.flash(), autoHide false , ID: isc_globalWarn, focusCanvas: [GridBody ID:ASC_LISTINGWINDOW_2_LISTINGPANEL_BOUNDLIST_body]
                              18:39:17.895:TMR1:INFO:nativeFocus:ASC_LISTINGWINDOW_2_LISTINGPANEL_BOUNDLIST_body:about to call native blur()
                              18:39:17.921:TMR1:INFO:resize:isc_EH_screenSpan:resize of drawn component: new width/height: 1220,610, old width/height: 1,1, delta width/height: 1219,609
                              18:39:17.922:TMR1:INFO:sizing:isc_EH_screenSpan:Specified size: 1220x610, drawn scroll size: 3200x2400, border: 0x0, margin: 0x0, reason: resize
                              18:39:17.924:TMR1:INFO:draws:isc_globalWarn:draw(): drawing Dialog
                              18:39:17.926:TMR1:INFO:draws:isc_globalWarn_body:draw(): drawing Layout with parent: [Dialog ID:isc_globalWarn]
                              18:39:17.931:TMR1:INFO:drawing:isc_globalWarn_body:inserting HTML into parent: [Dialog ID:isc_globalWarn]
                              18:39:17.933:TMR1:INFO:draws:isc_globalWarn_messageStack:draw(): drawing HStack with parent: [Layout ID:isc_globalWarn_body]
                              18:39:17.935:TMR1:INFO:drawing:isc_globalWarn_messageStack:inserting HTML into parent: [Layout ID:isc_globalWarn_body]
                              18:39:17.937:TMR1:INFO:draws:isc_globalWarn_messageIcon:draw(): drawing Img with parent: [HStack ID:isc_globalWarn_messageStack]
                              18:39:17.940:TMR1:INFO:drawing:isc_globalWarn_messageIcon:inserting HTML into parent: [HStack ID:isc_globalWarn_messageStack]

                              Comment

                              Working...
                              X