Added more logging when a monitor script cannot be executed.

This commit is contained in:
Markus Makela 2015-05-20 16:16:49 +03:00
parent b815a79628
commit 7dbc021149
6 changed files with 67 additions and 7 deletions

View File

@ -97,6 +97,23 @@ EXTERNCMD* externcmd_allocate(char* argstr)
free(cmd);
return NULL;
}
if(access(cmd->parameters[0],F_OK) != 0)
{
skygw_log_write(LE,
"Error: Cannot find file: %s",
cmd->parameters[0]);
externcmd_free(cmd);
return NULL;
}
if(access(cmd->parameters[0],X_OK) != 0)
{
skygw_log_write(LE,
"Error: Cannot execute file: %s",
cmd->parameters[0]);
externcmd_free(cmd);
return NULL;
}
}
return cmd;
}
@ -138,7 +155,7 @@ int externcmd_execute(EXTERNCMD* cmd)
{
/** Child process, execute command */
execvp(cmd->parameters[0],cmd->parameters);
exit(1);
_exit(1);
}
else
{

View File

@ -156,7 +156,17 @@ startMonitor(void *arg,void* opt)
{
if(handle->script)
free(handle->script);
handle->script = strdup(params->value);
if(access(params->value,X_OK) == 0)
{
handle->script = strdup(params->value);
}
else
{
skygw_log_write(LE,
"Error: The file cannot be executed: %s",
params->value);
handle->script = NULL;
}
}
else if(!strcmp(params->name,"events"))
{

View File

@ -142,8 +142,17 @@ startMonitor(void *arg,void* opt)
{
free(handle->script);
}
handle->script = strdup(params->value);
if(access(params->value,X_OK) == 0)
{
handle->script = strdup(params->value);
}
else
{
skygw_log_write(LE,
"Error: The file cannot be executed: %s",
params->value);
handle->script = NULL;
}
}
else if(!strcmp(params->name,"events"))
{

View File

@ -303,7 +303,11 @@ void monitor_launch_script(MONITOR* mon,MONITOR_SERVERS* ptr, char* script)
ptr->server->unique_name);
mon_append_node_names(mon->databases,argstr,PATH_MAX + MON_ARG_MAX + 1);
cmd = externcmd_allocate(argstr);
if((cmd = externcmd_allocate(argstr)) == NULL)
{
skygw_log_write(LE,"Failed to execute script: %s",script);
return;
}
if(externcmd_execute(cmd))
{

View File

@ -170,7 +170,17 @@ startMonitor(void *arg, void* opt)
{
if(handle->script)
free(handle->script);
handle->script = strdup(params->value);
if(access(params->value,X_OK) == 0)
{
handle->script = strdup(params->value);
}
else
{
skygw_log_write(LE,
"Error: The file cannot be executed: %s",
params->value);
handle->script = NULL;
}
}
else if(!strcmp(params->name,"events"))
{

View File

@ -132,7 +132,17 @@ startMonitor(void *arg,void* opt)
{
if(handle->script)
free(handle->script);
handle->script = strdup(params->value);
if(access(params->value,X_OK) == 0)
{
handle->script = strdup(params->value);
}
else
{
skygw_log_write(LE,
"Error: The file cannot be executed: %s",
params->value);
handle->script = NULL;
}
}
else if(!strcmp(params->name,"events"))
{