[ 
https://issues.apache.org/jira/browse/FLEX-34119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14248643#comment-14248643
 ] 

Mihai Chira commented on FLEX-34119:
------------------------------------

Hi Matthew,

What needed doing for the patch was changing "node" into "changingNode" and 
"parent" into "parentOfChangingNode" for 
mx/collections/HierarchicalCollectionView.as (as those variable names had 
changed since you created the patch). I'm attaching the new patch for you if 
it's useful.

I ran again all the unit tests for the bugs I fixed related to 
mx/collections/HierarchicalCollectionView[Cursor].as and here are the results:
* HierarchicalCollectionViewCursor_FLEX_34119_Test.as - fails in 134 
combinations, e.g.:
** testReproduce_FLEX_34119_Comprehensive (10,5,1)
** testReproduce_FLEX_34119_Comprehensive (11,9,1), etc.
* HierarchicalCollectionViewCursor_FLEX_34424_Test.as - all fail
* HierarchicalCollectionViewCursor_FLEX_34440_Test.as - passes
* HierarchicalCollectionViewCursor_FLEX_34456_Test.as - passes
* HierarchicalCollectionViewCursor_FLEX_34458_Test.as - passes

In other words, the patch introduces regressions in FLEX-34119 and FLEX-34424. 
Hope that helps.

FYI I ran all the tests with and without the patch, against Flex SDK 4.14 RC.

> mx.collections.HierarchicalCollectionViewCursor causes CursorError RTE from 
> ListCollectionView when the underlying collections change
> -------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: FLEX-34119
>                 URL: https://issues.apache.org/jira/browse/FLEX-34119
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Advanced Data Grid
>    Affects Versions: Apache Flex 4.12.1
>            Reporter: Mihai Chira
>            Assignee: Mihai Chira
>              Labels: collections, cursors, easytest
>             Fix For: Apache Flex 4.14.0
>
>         Attachments: BookmarkErrorScenarios.txt, 
> FLEX-33005VariablesRenamed.patch, _HierarchicalCollectionViewCursorBug.fxp
>
>
> *Steps to reproduce A*:
> # Run [the HierarchicalCollectionViewCursor_FLEX_34119_Test unit 
> test|https://git-wip-us.apache.org/repos/asf?p=flex-sdk.git;a=blob_plain;f=frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34119_Test.as;hb=develop].
>  You should see lots of "Bookmark no longer valid" errors.
> *Steps to reproduce B*:
> # Run the attached AIR project. (Avoid debug mode unless you want to press F8 
> MANY times). It will take around 10s.
> The unit test (HierarchicalCollectionViewCursorTest.as) shows many of the 
> ways in which HierarchicalCollectionViewCursor's state can make 
> ListCollectionView fail through a seek() operation on 
> ListCollectionViewCursor by allowing a CursorError to be thrown from 
> ListCollectionView.getBookmarkIndex() (I say 'allowing' because it could 
> easily prevent it).
> The trace output (also attached to this ticket as BookmarkErrorScenarios.txt) 
> shows all the configurations of the collection view that I constructed which 
> cause the RTE.
> *Notations in trace output*:
> * [SEL] - the currently selected item by the HierarchicalCollectionViewCursor 
> (cursor.current).
> * [INS] - the newly inserted item, which caused the RTE
> * [REPL] - the item which, when replaced, causes the RTE (notice there's only 
> one such instance - when the (selected) second stage is replaced with another 
> item).
> *NOTES*:
> * keep in mind that the attached AIR project is a raw, unrefined way to 
> reproduce this bug. For the code which reflects the understanding received 
> after investigating this bug, please run the unit test in *Steps to reproduce 
> A* above.
> * for us this has caused numerous, apparently mysterious bugs within 
> AdvancedDataGrids and Trees which boiled down to one or other of these 
> configurations.
> * The reproduceCursorErrorWithDisableAutoUpdate() test shows that the error 
> can also be thrown by not allowing the HierarchicalCollectionView (and, 
> implicitly, the HierarchicalCollectionViewCursor) to know about changes in 
> the underlying collections (by using disableAutoUpdate() in conjunction with 
> refresh() and enableAutoUpdate()). We were using these methods to optimise 
> expensive updates in the collections shown in the AdvancedDataGrids, without 
> realising they had a knock-on effect on the HierarchicalCollectionView used 
> by the grids. This part of the error-generation scenario is controlled by the 
> programmers, of course, but it might be worth documenting, so that others can 
> avoid these issues.
> * FLEX-33054 reports a limited scenario of this bug too. When this is fixed, 
> so should FLEX-33054.
> *The RTE that's usually thrown*:
> Main Thread (Suspended: Error: Bookmark no longer valid.)     
>       
> mx.collections::HierarchicalCollectionViewCursor/collectionChangeHandler      
>   
>       flash.events::EventDispatcher/dispatchEventFunction [no source] 
>       flash.events::EventDispatcher/dispatchEvent [no source] 
>       
> mx.collections::HierarchicalCollectionView/nestedCollectionChangeHandler      
>   
>       flash.events::EventDispatcher/dispatchEventFunction [no source] 
>       flash.events::EventDispatcher/dispatchEvent [no source] 
>       mx.collections::ListCollectionView/dispatchEvent        
>       mx.collections::ListCollectionView/addItemsToView       
>       mx.collections::ListCollectionView/listChangeHandler    
>       flash.events::EventDispatcher/dispatchEventFunction [no source] 
>       flash.events::EventDispatcher/dispatchEvent [no source] 
>       mx.collections::ArrayList/internalDispatchEvent 
>       mx.collections::ArrayList/addItemAt     
>       mx.collections::ListCollectionView/addItemAt



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to