Announcement

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

    Possible Bug in ListGrid

    Hi,

    I am after a spurious bug in a complex ListGrid of my application.
    ***Sometimes*** (not data related), an update of the DS behind that Grid does not cause the ListGrid to be updated (via DS.updateData()) if grouping is enabled. If the grouping is disabled by the user, that grid instantly shows up-to-date data and freezes again, when the grouping is re-enabled. The column used for grouping does not matter.
    The issue happens in FF4 and Chrome12 (all browsers I tested) using GWT 2.3 and SGWT nightly as of 2011-06-13, both in dev-mode and in a prod-mode.
    While in dev-mode, setting some of the logging preferences in the debug console to debug (i.e. redraws, draws, resize, visualState) causes the same freezing in cases the grouping freezes the grid as well. However, if the grouping does not cause a freezing, then only setting the redraws and draws logging preferences to debug or sometimes just only redraws causes the freezing. Is there some explanation for this apparently "non-deterministic" behaviour?
    The log produced by setting all of the logging preferences (except of redraw) to debug differs in that the one produced with the ungrouped grids shows some additional information for each inserted record (roughly about 25 lines of styling information, e.g. ...scrollHeight: 464,...), so I don't think that this will be valuable debug information here. It is added for convenience, though.

    As I was not able to reproduce this with a stand-alone test case so far, I am looking for some ways to further drill down into this "sometimes grouping causes the grid not to update" issue. What would be good override points for the output of debug information? As far as my application is concerned, I cannot see any differences in the program flow between a case in which the ListGrid works as expected and a case in which it doesn't, so somehow the program flow in the SGWT components need to be intercepted to produce useful debug output.

    Thanks & regards,
    fatzopilot

    Debug output when grouped: http://pastebin.com/yNXM4PrW
    Debug output when ungrouped: http://pastebin.com/K6sFB3hZ
    There is no difference in debug output between a working update and non-working update when grouping is enabled.

    #2
    Can you clarify what you mean by "freezing" since you go on to describe taking other actions in the UI after the "freeze". If it's a temporary pause, how long is it in each browser in prod mode? And are you sure this isn't because your computer happens to be doing something unrelated right at that moment, such as finishing burning a CD?

    Comment


      #3
      It is not some kind of lag due to high workload but it can be controlled.
      Turning grouping on ***sometimes*** leads to a "freezed" grid in terms of record updates (DS.updateData()). I should mention that the update is triggered by the client and "client only". After ungrouping, the Grid updates as desired, i.e. immediately shows the most recent version of the record. Grouping again "freezes" the grid and so on.

      Comment


        #4
        OK, there's not much we can do with this information yet (and there are no similar reports), so if you can work toward a reproducible case that we can run, that would help.

        Comment


          #5
          Yeah I know. I already tried to generate a case from a showcase example but could not reproduce the issue. It may be entirely related to my application, and many parameters potentially come into play here. So I believe that trying to understand what goes wrong in my application is a better idea than sort of trying to reproduce my complex conditions in a testcase.
          Since you know much better than me where the cruicial parts of the application (I guess it somehow is related to a timing issue in component drawing) reside for that part, it would be nice if you could point me to some potentially valuable override points for intercepting the program flow in order to place some custom logging logic there. For example an onDraw() method of some component or similar.

          Comment


            #6
            Isomorphic, no hints from your side?

            Comment


              #7
              Since I was unable to boil down the issue, I am trying to redraw the gird every few seconds using an incremental command.
              What is the recommended way to redraw a gird in such cases? I tried with markForRedraw() but this did not update the grid. An ungrouping and re-grouping does the trick but this has side-effects (e.g. all collapsed groups are expanded), so should be avoided.

              Thanks
              fatzopilot

              Comment

              Working...
              X