If startup ordering is so sensitive, is there a way to write unit tests for it, or some judicious assertions we can apply?
On Jul 26, 2013, at 2:50 PM, a...@apache.org wrote: > Updated Branches: > refs/heads/master 95c8f3893 -> 6a70e5abf > > > TS-1487: More startup order tweaking, based on reported crash. > > > Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo > Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/6a70e5ab > Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/6a70e5ab > Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/6a70e5ab > > Branch: refs/heads/master > Commit: 6a70e5abf4de28636414896f97312c645625fdae > Parents: 95c8f38 > Author: Alan M. Carroll <a...@network-geographics.com> > Authored: Fri Jul 26 16:49:44 2013 -0500 > Committer: Alan M. Carroll <a...@network-geographics.com> > Committed: Fri Jul 26 16:49:44 2013 -0500 > > ---------------------------------------------------------------------- > proxy/Main.cc | 26 +++++++++++++------------- > 1 file changed, 13 insertions(+), 13 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6a70e5ab/proxy/Main.cc > ---------------------------------------------------------------------- > diff --git a/proxy/Main.cc b/proxy/Main.cc > index e9c281c..438242e 100644 > --- a/proxy/Main.cc > +++ b/proxy/Main.cc > @@ -1559,12 +1559,19 @@ main(int /* argc ATS_UNUSED */, char **argv) > SplitDNSConfig::startup(); > #endif > > + // Load HTTP port data. getNumSSLThreads depends on this. > + if (!HttpProxyPort::loadValue(http_accept_port_descriptor)) > + HttpProxyPort::loadConfig(); > + HttpProxyPort::loadDefaultIfEmpty(); > > if (!accept_mss) > TS_ReadConfigInteger(accept_mss, "proxy.config.net.sock_mss_in"); > > NetProcessor::accept_mss = accept_mss; > netProcessor.start(0, stacksize); > + > + sslNetProcessor.start(getNumSSLThreads(), stacksize); > + > #ifndef INK_NO_HOSTDB > dnsProcessor.start(0, stacksize); > if (hostDBProcessor.start() < 0) > @@ -1575,15 +1582,15 @@ main(int /* argc ATS_UNUSED */, char **argv) > clusterProcessor.init(); > #endif > > - // Plugins can get callbacks for very early events, so initialize even > earlier. > +#ifndef INK_NO_LOG > + // initialize logging (after event and net processor) > + Log::init(remote_management_flag ? 0 : Log::NO_REMOTE_MANAGEMENT); > +#endif > + > + // Init plugins as soon as logging is ready. > plugin_init(system_config_directory); // plugin.config > pmgmt->registerPluginCallbacks(global_config_cbs); > > - // Load HTTP port data. getNumSSLThreads depends on this. > - if (!HttpProxyPort::loadValue(http_accept_port_descriptor)) > - HttpProxyPort::loadConfig(); > - HttpProxyPort::loadDefaultIfEmpty(); > - > cacheProcessor.set_after_init_callback(&CB_After_Cache_Init); > cacheProcessor.start(); > > @@ -1593,13 +1600,6 @@ main(int /* argc ATS_UNUSED */, char **argv) > if (num_of_udp_threads) > udpNet.start(num_of_udp_threads, stacksize); > > - sslNetProcessor.start(getNumSSLThreads(), stacksize); > - > -#ifndef INK_NO_LOG > - // initialize logging (after event and net processor) > - Log::init(remote_management_flag ? 0 : Log::NO_REMOTE_MANAGEMENT); > -#endif > - > //acc.init(); > //if (auto_clear_authdb_flag) > // acc.clear_cache(); >