[ 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