This is an automated email from the ASF dual-hosted git repository.
duke8253 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new 109f058 move the cv outside of the if, also move the back door
startup to avoid health check issues due to the delay
109f058 is described below
commit 109f0585ca8e732d5e3e2fa71926a138c43e93f7
Author: Fei Deng <[email protected]>
AuthorDate: Mon Mar 26 09:58:13 2018 -0500
move the cv outside of the if, also move the back door startup to avoid
health check issues due to the delay
---
proxy/Main.cc | 20 ++++++++++++++++----
proxy/http/HttpProxyServerMain.cc | 8 --------
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/proxy/Main.cc b/proxy/Main.cc
index 1d07788..e58b6d0 100644
--- a/proxy/Main.cc
+++ b/proxy/Main.cc
@@ -1802,6 +1802,8 @@ main(int /* argc ATS_UNUSED */, const char **argv)
netProcessor.init();
prep_HttpProxyServer();
+ // If num_accept_threads == 0, let the ET_NET threads to set the condition
variable,
+ // Else we set it here so when checking the condition variable later it
returns immediately.
if (num_accept_threads == 0) {
eventProcessor.schedule_spawn(&init_HttpProxyServer, ET_NET);
} else {
@@ -1943,17 +1945,27 @@ main(int /* argc ATS_UNUSED */, const char **argv)
int delay_p = 0;
REC_ReadConfigInteger(delay_p, "proxy.config.http.wait_for_cache");
+ // Check the condition variable.
+ {
+ std::unique_lock<std::mutex> lock(proxyServerMutex);
+ proxyServerCheck.wait(lock, [] { return et_net_threads_ready; });
+ }
+
// Delay only if config value set and flag value is zero
// (-1 => cache already initialized)
if (delay_p && ink_atomic_cas(&delay_listen_for_cache_p, 0, 1)) {
Debug("http_listen", "Delaying listen, waiting for cache
initialization");
} else {
- // Use a condition variable to check if we are ready to call
- // start_HttpProxyServer() when num_accept_threads is set to 0.
- std::unique_lock<std::mutex> lock(proxyServerMutex);
- proxyServerCheck.wait(lock, [] { return et_net_threads_ready; });
start_HttpProxyServer(); // PORTS_READY_HOOK called from in here
}
+
+ // Start the back door, since it's just a special HttpProxyServer,
+ // the requirements to start it have been met if we got here.
+ int back_door_port = NO_FD;
+ REC_ReadConfigInteger(back_door_port,
"proxy.config.process_manager.mgmt_port");
+ if (back_door_port != NO_FD) {
+ start_HttpProxyServerBackDoor(back_door_port, !!num_accept_threads);
// One accept thread is enough
+ }
}
SNIConfig::cloneProtoSet();
// Plugins can register their own configuration names so now after they've
done that
diff --git a/proxy/http/HttpProxyServerMain.cc
b/proxy/http/HttpProxyServerMain.cc
index e4dce2d..56ea50a 100644
--- a/proxy/http/HttpProxyServerMain.cc
+++ b/proxy/http/HttpProxyServerMain.cc
@@ -347,14 +347,6 @@ start_HttpProxyServer()
hook->invoke(TS_EVENT_LIFECYCLE_PORTS_READY, nullptr);
hook = hook->next();
}
-
- // Start the back door, since it's just a special HttpProxyServer,
- // the requirements to start it has been met if we got here.
- int back_door_port = NO_FD;
- REC_ReadConfigInteger(back_door_port,
"proxy.config.process_manager.mgmt_port");
- if (back_door_port != NO_FD) {
- start_HttpProxyServerBackDoor(back_door_port, !!num_accept_threads); //
One accept thread is enough
- }
}
void
--
To stop receiving notification emails like this one, please contact
[email protected].