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

Tomáš Procházka closed NETBEANS-63.
-----------------------------------

> Incorrect startup order
> -----------------------
>
>                 Key: NETBEANS-63
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-63
>             Project: NetBeans
>          Issue Type: Bug
>          Components: platform - Module System
>    Affects Versions: 8.2, 9.0
>         Environment: All
>            Reporter: phansson
>            Priority: Major
>         Attachments: NBStartup.pdf
>
>
> As part of analyzing the [freeze bug on 
> startup|https://issues.apache.org/jira/browse/NETBEANS-58], I've come across 
> something I see as a problem in NB startup sequence.
> Basically I see this sequence in the Platform's main startup thread:
> # @OnStart tasks from modules are spawned
> # ProxySelector is registered
> # WarmUp tasks are spawned
> # Authenticator is registered
> So clearly, tasks that may perform network operations are started _before_ 
> network infrastructure ({{ProxySelector}} and {{Authenticator}}) has been 
> initialized. In real-life it will be hit and miss which comes first.
> I've attached my analysis of the startup sequence as a PDF (in case anyone 
> disagrees).
> My idea for a fix is along these lines:
> * I want to continue to allow @Startup tasks and WarmUp tasks to be launched 
> early (as today), but a task must itself be aware if it needs network or UI 
> initialization or whatever.
> * I want to create a new {{RunLevel}}. Currently the RunLevel feature is 
> under-used in my experience. There's really only one RunLevel at the moment, 
> namely the {{GuiRunLevel}} which is always executed last. (despite the name 
> it applies both to GUI and headless scenario). So I would add an additional 
> RunLevel, {{NetworkRunLevel}}, where network infra will be initialized. The 
> new RunLevel will run before GuiRunLevel. This mimics what operating systems 
> does and I believe this was also the original idea of the RunLevel feature.
> * Currently RunLevels are found by Lookup so that anyone can install their 
> own RunLevel. I don't think this feature is used (it probably requires to be 
> Friend), but it is nice and we should of course still cater for it.
> * Create a public interface where a task can wait for a given RunLevel to 
> have executed. I'm thinking some kind of annotation or something.
> * Existing WarmUp tasks will need to be amended to clearly indicate at what 
> RunLevel they can execute. (default will be that all RunLevels have 
> executed). Module tasks (@OnStartup) will also need to be catered for.
> Ideas, comments, please. There may be simpler ways of solving the problem but 
> we should really keep an eye on allowing to start tasks as early as we allow 
> today (i.e. not make startup performance worse). 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to