Fix for router instance creation failure

This commit is contained in:
Mark Riddoch
2014-12-09 09:54:04 +00:00
parent 8fed527ac9
commit 26e3486966
2 changed files with 31 additions and 3 deletions

View File

@ -349,8 +349,15 @@ serviceStart(SERVICE *service)
SERV_PROTOCOL *port;
int listeners = 0;
service->router_instance = service->router->createInstance(service,
service->routerOptions);
if ((service->router_instance = service->router->createInstance(service,
service->routerOptions)) == NULL)
{
LOGIF(LE, (skygw_log_write_flush(LOGFILE_ERROR,
"%s: Failed to create router instance for service. Service not started.",
service->name)));
service->state = SERVICE_STATE_FAILED;
return NULL;
}
port = service->ports;
while (port)
@ -359,7 +366,10 @@ int listeners = 0;
port = port->next;
}
if (listeners)
{
service->state = SERVICE_STATE_STARTED;
service->stats.started = time(0);
}
return listeners;
}
@ -429,6 +439,7 @@ int listeners = 0;
port = port->next;
}
service->state = SERVICE_STATE_STOPPED;
return listeners;
}
@ -900,7 +911,22 @@ int i;
service->name);
dcb_printf(dcb, "\tRouter: %s (%p)\n",
service->routerModule, service->router);
if (service->router)
switch (service->state)
{
case SERVICE_STATE_STARTED:
dcb_printf(dcb, "\tState: Started\n");
break;
case SERVICE_STATE_STOPPED:
dcb_printf(dcb, "\tState: Stopped\n");
break;
case SERVICE_STATE_FAILED:
dcb_printf(dcb, "\tState: Failed\n");
break;
case SERVICE_STATE_ALLOC:
dcb_printf(dcb, "\tState: Allocated\n");
break;
}
if (service->router && service->router_instance)
service->router->diagnostics(service->router_instance, dcb);
dcb_printf(dcb, "\tStarted: %s",
asctime_r(localtime_r(&service->stats.started, &result), timebuf));