Announcement

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

    ISC_DataBinding crashes

    Hello,

    using: Isomorphic SmartClient Framework (v8.2p_2012-07-30/PowerEdition Deployment 2012-07-30)

    I have a listgrid in my system, and it has the fetch operation: joinEverythingExceptPresence (see below)

    When I do the following:
    1. Set a filter in one of the headings
    2. Update any field in the filtered record (inline)
    Then ==> The stacktrace on bottom of this page shows. This doesnt happen in all grids in my system (i have multiple 'similar' setup grids).

    The data is correctly saved to the server, but continuing editing other rows, or changing the filter gives all kinds of strange things. Effectively, refreshing the page is the only solution for the end user.

    I tried without the cacheSyncOperation, to no avail (since the stacktrace appears to be related to cache updating).

    I know this is not a standalone test case (pretty hard to create one at the moment), but could you already say something about this ? Could you give any hints to what to do next to pinpoint this problem further?

    Oh yes, it happens both in Dev mode, as well in production mode on all browsers.

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    
    <DataSource ID="Lecture" serverType="sql" tableName="Lecture"> 
      <fields> 
        <field name="Lecture_id" type="sequence" primaryKey="true"/>  
        <field name="SaasCustomer_id" type="integer" foreignKey="saasCustomers.SaasCustomer_id"/>  
        <field name="lectureName" type="text" required="false" length="128"> 
          <title>lectureName</title>  
          <validators></validators> 
        </field>  
        <field name="startDate" type="datetime" required="false"> 
          <title>startDate</title>  
          <validators></validators> 
        </field>  
        <field name="endDate" type="datetime" required="false"> 
          <title>endDate</title>  
          <validators></validators> 
        </field>  
        <field name="presenceList" type="text" required="false" length="128"> 
          <title>presenceList</title>  
          <validators></validators> 
        </field>  
        <field name="presenceListMarkOff" type="text" required="false" length="128"> 
          <title>presenceListMarkOff</title>  
          <validators></validators> 
        </field>  
        <field name="lectureStatus" type="enum" required="false"> 
          <title>lectureStatus</title>  
          <valueMap> 
            <value>definitief</value>  
            <value>geannuleerd</value>  
            <value>optioneel</value>  
            <value>uitgesteld</value> 
          </valueMap>  
          <validators></validators> 
        </field>  
        <field name="catering" type="enum" required="false"> 
          <title>catering</title>  
          <valueMap> 
            <value>geen</value>  
            <value>koffie/thee</value>  
            <value>koffie/thee/lunch</value>  
            <value>catering volgens afspraak</value>  
            <value>lunch/diner/fris</value>  
            <value>lunch/fris</value> 
          </valueMap>  
          <validators></validators> 
        </field>  
        <field name="projectId" type="text" required="false" length="128"> 
          <title>projectId</title>  
          <validators></validators> 
        </field>  
        <field name="CourseEdition_id" type="integer" foreignKey="CourseEdition.CourseEdition_id" required="true"> 
          <validators></validators> 
        </field>  
        <field name="Teacher_id" type="integer" foreignKey="Teacher.Teacher_id"> 
          <validators></validators> 
        </field>  
        <field name="Location_id" type="integer" foreignKey="Location.Location_id"> 
          <validators></validators> 
        </field>  
        <field name="courseName" type="text" tableName="Course"/>  
        <field name="editionName" type="text" tableName="CourseEdition"/>  
        <field name="surname" type="text" tableName="Teacher"/>  
        <field name="tussenvoegsel" type="text" tableName="Teacher"/>  
        <field name="firstname" type="text" tableName="Teacher"/>  
        <field name="companyName" type="text" tableName="Teacher"/>  
        <field name="projectNumber" type="text" tableName="Project"/>  
        <field name="locationName" type="text" tableName="Location"/>  
        <field name="locationDisplayName" type="text" tableName="Location"/>  
        <field name="locationLink" type="text" tableName="Location"/>  
        <field name="street" type="text" tableName="Location"/>  
        <field name="number" type="text" tableName="Location"/>  
        <field name="number_addition" type="text" tableName="Location"/>  
        <field name="postcode" type="text" tableName="Location"/>  
        <field name="city" type="text" tableName="Location"/>  
        <field name="country" type="text" tableName="Location"/>  
      </fields> 
    <operationBindings>
     <operationBinding operationType="fetch" requiresAuthentication="true" requiresRole="CAN_READ_LECTURE" operationId="joinEverythingExceptPresence"> 
          <tableClause> <![CDATA[ 
    	      	Lecture 
    	      	INNER JOIN CourseEdition ON Lecture.CourseEdition_id = CourseEdition.CourseEdition_id
    	      	INNER JOIN Course 		 ON CourseEdition.Course_id = Course.Course_id
    	      	INNER JOIN Project		 ON CourseEdition.Project_id = Project.Project_id
    	      	LEFT OUTER JOIN Teacher  ON Teacher.Teacher_id = Lecture.Teacher_id 
    		    LEFT OUTER JOIN Location ON Location.Location_id = Lecture.Location_id 
          ]]> </tableClause>  
     </operationBinding>  
     <operationBinding operationType="update" requiresAuthentication="true" requiresRole="CAN_UPDATE_LECTURE"> 
          <cacheSyncOperation>joinEverythingExceptPresence</cacheSyncOperation>  
     </operationBinding> 
    </operationBindings>
    </DataSource



    Code:
    13:00:02.391 [ERROR] [generatedcode] 13:00:02.385:XRP7:WARN:Log:TypeError: _2 is null
        DataSource.findByKeys(_1=&gt;{Obj},  _2=&gt;null) @ generatedcode/sc/modules/ISC_DataBinding.js:856
        ResultSet.updateCacheData(_1=&gt;[object Array],  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1523
        ResultSet.updateCache(_1=&gt;&quot;update&quot;,  _2=&gt;[object Array],  _3=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1518
        ResultSet.handleUpdate(_1=&gt;&quot;update&quot;,  _2=&gt;[object Array],  _3=&gt;false,  _4=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1513
        ResultSet.dataSourceDataChanged(_1=&gt;{Obj},  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1509
        anonymous({Obj}, {Obj}) @ generatedcode/sc/modules/ISC_Core.js:68
        DataSource.updateCaches(_1=&gt;{Obj},  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:378
        [c]DataSource.handleUpdate(_1=&gt;{Obj},  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:286
        DataSource.fireResponseCallbacks({Obj}, {Obj}, {Obj}, {Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:585
        DataSource._completeResponseProcessing([object Array], {Obj}, {Obj}, {Obj}, {Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:584
        DataSource._handleSCServerReply({Obj}, [object Array], {Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1890
        [c]Class.fireCallback(_1=&gt;{Obj},  _2=&gt;&quot;rpcResponse,data,rpcRequest&quot;,  _3=&gt;[object Array],  _4=&gt;{Obj},  _5=&gt;undef) @ generatedcode/sc/modules/ISC_Core.js:333
        [c]Class.fireCallback(_1=&gt;{Obj},  _2=&gt;&quot;rpcResponse,data,rpcRequest&quot;,  _3=&gt;[object Array]) @ generatedcode/sc/modules/ISC_Core.js:431
        anonymous(callback=&gt;{Obj},  request=&gt;{Obj},  response=&gt;{Obj},  data=&gt;[object Array]) @ generatedcode/sc/modules/ISC_DataBinding.js:1335
        unnamed({Obj}, {Obj}, {Obj}, [object Array]) @ :188
        [c]RPCManager.fireReplyCallbacks(_1=&gt;{Obj},  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1340
        [c]RPCManager.performOperationReply(_1=&gt;{Obj},  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1334
        RPCManager._performTransactionReply(50) @ generatedcode/sc/modules/ISC_DataBinding.js:1328
        [c]RPCManager.performTransactionReply(_1=&gt;50,  _2=&gt;&quot;//isc_RPCResponseStart--&gt;[{data:[{start...&quot;[ 775],  _3=&gt;undef) @ generatedcode/sc/modules/ISC_DataBinding.js:1285
        anonymous(50, [object XMLHttpRequest]) @ generatedcode/sc/modules/ISC_Core.js:62
        [c]Class.fireCallback(_1=&gt;&quot;isc.RPCManager.performTransactionReply(...&quot;[ 67],  _2=&gt;&quot;transactionNum,results,wd&quot;,  _3=&gt;[object Array]) @ generatedcode/sc/modules/ISC_Core.js:333
        [c]Comm.performXmlTransactionReply(_1=&gt;50,  _2=&gt;[object XMLHttpRequest]) @ generatedcode/sc/modules/ISC_Core.js:1308
        anonymous([object XMLHttpRequest]) @ generatedcode/sc/modules/ISC_Core.js:62
        [c]Class.fireCallback(_1=&gt;&quot;isc.Comm.performXmlTransactionReply(50,...&quot;[ 57],  _2=&gt;&quot;xmlHttpRequest&quot;,  _3=&gt;[object Array],  _4=&gt;[object Proxy],  _5=&gt;true) @ generatedcode/sc/modules/ISC_Core.js:333
        Comm._fireXMLCallback([object XMLHttpRequest], &quot;isc.Comm.performXmlTransactionReply(50,...&quot;[ 57]) @ generatedcode/sc/modules/ISC_Core.js:1282
        unnamed([object Event]) @ generatedcode/sc/modules/ISC_Core.js:1294
        unnamed() @ 
    
    
    
    com.smartgwt.client.core.JsObject$SGWT_WARN: 13:00:02.385:XRP7:WARN:Log:TypeError: _2 is null
        DataSource.findByKeys(_1=&gt;{Obj},  _2=&gt;null) @ generatedcode/sc/modules/ISC_DataBinding.js:856
        ResultSet.updateCacheData(_1=&gt;[object Array],  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1523
        ResultSet.updateCache(_1=&gt;&quot;update&quot;,  _2=&gt;[object Array],  _3=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1518
        ResultSet.handleUpdate(_1=&gt;&quot;update&quot;,  _2=&gt;[object Array],  _3=&gt;false,  _4=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1513
        ResultSet.dataSourceDataChanged(_1=&gt;{Obj},  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1509
        anonymous({Obj}, {Obj}) @ generatedcode/sc/modules/ISC_Core.js:68
        DataSource.updateCaches(_1=&gt;{Obj},  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:378
        [c]DataSource.handleUpdate(_1=&gt;{Obj},  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:286
        DataSource.fireResponseCallbacks({Obj}, {Obj}, {Obj}, {Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:585
        DataSource._completeResponseProcessing([object Array], {Obj}, {Obj}, {Obj}, {Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:584
        DataSource._handleSCServerReply({Obj}, [object Array], {Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1890
        [c]Class.fireCallback(_1=&gt;{Obj},  _2=&gt;&quot;rpcResponse,data,rpcRequest&quot;,  _3=&gt;[object Array],  _4=&gt;{Obj},  _5=&gt;undef) @ generatedcode/sc/modules/ISC_Core.js:333
        [c]Class.fireCallback(_1=&gt;{Obj},  _2=&gt;&quot;rpcResponse,data,rpcRequest&quot;,  _3=&gt;[object Array]) @ generatedcode/sc/modules/ISC_Core.js:431
        anonymous(callback=&gt;{Obj},  request=&gt;{Obj},  response=&gt;{Obj},  data=&gt;[object Array]) @ generatedcode/sc/modules/ISC_DataBinding.js:1335
        unnamed({Obj}, {Obj}, {Obj}, [object Array]) @ :188
        [c]RPCManager.fireReplyCallbacks(_1=&gt;{Obj},  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1340
        [c]RPCManager.performOperationReply(_1=&gt;{Obj},  _2=&gt;{Obj}) @ generatedcode/sc/modules/ISC_DataBinding.js:1334
        RPCManager._performTransactionReply(50) @ generatedcode/sc/modules/ISC_DataBinding.js:1328
        [c]RPCManager.performTransactionReply(_1=&gt;50,  _2=&gt;&quot;//isc_RPCResponseStart--&gt;[{data:[{start...&quot;[ 775],  _3=&gt;undef) @ generatedcode/sc/modules/ISC_DataBinding.js:1285
        anonymous(50, [object XMLHttpRequest]) @ generatedcode/sc/modules/ISC_Core.js:62
        [c]Class.fireCallback(_1=&gt;&quot;isc.RPCManager.performTransactionReply(...&quot;[ 67],  _2=&gt;&quot;transactionNum,results,wd&quot;,  _3=&gt;[object Array]) @ generatedcode/sc/modules/ISC_Core.js:333
        [c]Comm.performXmlTransactionReply(_1=&gt;50,  _2=&gt;[object XMLHttpRequest]) @ generatedcode/sc/modules/ISC_Core.js:1308
        anonymous([object XMLHttpRequest]) @ generatedcode/sc/modules/ISC_Core.js:62
        [c]Class.fireCallback(_1=&gt;&quot;isc.Comm.performXmlTransactionReply(50,...&quot;[ 57],  _2=&gt;&quot;xmlHttpRequest&quot;,  _3=&gt;[object Array],  _4=&gt;[object Proxy],  _5=&gt;true) @ generatedcode/sc/modules/ISC_Core.js:333
        Comm._fireXMLCallback([object XMLHttpRequest], &quot;isc.Comm.performXmlTransactionReply(50,...&quot;[ 57]) @ generatedcode/sc/modules/ISC_Core.js:1282
        unnamed([object Event]) @ generatedcode/sc/modules/ISC_Core.js:1294
        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:172)
        at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
        at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
        at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
        at java.lang.Thread.run(Thread.java:680)

    #2
    Update: it seems that a filter is not even necessary to trigger the problem.

    I'm currently stripping the grid from fields etc. in a test version to see if i can isolate the problem.

    Comment


      #3
      I found it.

      There was some external cellSavedHandler that called invalidateCache(); on the same datasource as the grid.

      This caused these caching conflicts i think. Will look for solution on the matter, since it seems the invalidateCache was abused to refresh another widget.

      Comment


        #4
        hi Sytematic,

        I am using Smart-gwt version 2.4 and smart-gwt 2.5. I am facing the same error. Can you tell me the solution over this problem?

        Comment


          #5
          Hello. As a way of debugging this, I would suggest, make sure you out-comment/remove all the invalidateCache() calls that act on that datasource through your whole application.

          It's hard to say 'this is wrong' with your information, but invalidateCache() can break things if you misuse it (as I did).

          Hope that helps.

          Comment

          Working...
          X