MXS-2196: Fix removal of failed listeners
When a listener was created at runtime but it failed to start, it would not be automatically removed from the system. This caused the MaxCtrl cluster sync test to fail.
This commit is contained in:
parent
ceb6094623
commit
711fbd4f19
@ -995,7 +995,15 @@ bool runtime_create_listener(Service* service,
|
||||
|
||||
std::lock_guard<std::mutex> guard(crt_lock);
|
||||
|
||||
if (!listener_find(name) && !service_find_listener(service, "", addr, u_port))
|
||||
if (listener_find(name))
|
||||
{
|
||||
config_runtime_error("Listener '%s' already exists", name);
|
||||
}
|
||||
else if (SListener l = service_find_listener(service, "", addr, u_port))
|
||||
{
|
||||
config_runtime_error("Listener '%s' already listens on [%s]:%u", l->name(), addr, u_port);
|
||||
}
|
||||
else
|
||||
{
|
||||
SSL_LISTENER* ssl = NULL;
|
||||
|
||||
@ -1030,6 +1038,8 @@ bool runtime_create_listener(Service* service,
|
||||
{
|
||||
MXS_ERROR("Listener '%s' was created but failed to start it.", name);
|
||||
config_runtime_error("Listener '%s' was created but failed to start it.", name);
|
||||
Listener::destroy(listener);
|
||||
mxb_assert(!listener_find(name));
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1039,10 +1049,6 @@ bool runtime_create_listener(Service* service,
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
config_runtime_error("Listener '%s' already exists", name);
|
||||
}
|
||||
|
||||
return rval;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user