[ 
https://issues.apache.org/jira/browse/CURATOR-4?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jordan Zimmerman updated CURATOR-4:
-----------------------------------

    Fix Version/s: TBD
    
> POST_INITIALIZED_EVENT race conditions / optimizations
> ------------------------------------------------------
>
>                 Key: CURATOR-4
>                 URL: https://issues.apache.org/jira/browse/CURATOR-4
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Recipes
>    Affects Versions: 2.0.0-incubating
>            Reporter: Jordan Zimmerman
>             Fix For: TBD
>
>
> From https://github.com/Netflix/curator/pull/261
> We've been running a data structure modeled after PathChildrenCache for a 
> while now on a path with ~2500 child nodes and using a async loading strategy 
> very similar to the new POST_INITIALIZED_EVENT startup mode. I noticed a 
> couple subtle race conditions that we've encountered in our own code - 
> thought I'd share them back.
> trun@5229c8c If a node is removed during startup (after getChildren() but 
> before getDataAndStat()) the INITIALIZED_EVENT will never fire. Handling 
> NONODE events fixes this.
> trun@fb94530 Though highly unlikely, I think it's possible for the initialSet 
> to appear to be fully initialized before all the getDataAndStat() calls have 
> even been issued? Constructing the initialSet before issuing any 
> getDataAndStat() calls eliminates this possibility.
> trun@e4ddc6c Each call to maybeOfferInitializedEvent() loops over the entire 
> initialSet, and since it's called after each updateInitialSet() this can get 
> pretty expensive ( O(n2) ) with thousands of children. There doesn't seem to 
> be much value in keeping the entire initialSet around so removing each node 
> after it's loaded simplifies this check a great deal.
> Also one simple bugfix (which may not even be necessary any more)...
> trun@3385adb initialSet is keyed on node, not fullPath so this call was just 
> a NOP before.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to