Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi
I was wondering if anyone could help me. Is it possible to end a task using a EDX commnad?
We are currently testing Qlikview 11 using a SSIS package system and we are encountering problems where the
EDX executable file quits unexpectedly but the Qlikview Task remains running on the Qlikview Server.
Would anyone know in anyway in how to overcome this issue?
Any help would be much appreiciated.
Kind Regards
Eamonn
Hi
Just to let anybody who has this issue know that I found a solution.
I have now coded an Error Handler within the QMSEDX.exe that has successfully neutralized that Process Error Code 255. When the error now occurs, the Error Handler successfully catches the error and retries the polling process.
Let me know if ye have any queries.
Please see below the C# Code needed to implement this
----------------Code ---------------------------------------------------------
try
{
TraceMessage(TraceLevel.Info, String.Format("Successfully started task with id/name={0}", _taskIdOrName));
EDXStatus mainTaskResult = PollSingleTask(client, triggerResult.ExecId, _pollIntervall, _timeout);
List<EDXStatus> triggeredEDXStatuses = MonitorTriggeredTasks(client, mainTaskResult.TriggeredTasksId);
totalResult = AnalyseResult(mainTaskResult, triggeredEDXStatuses);
}
catch (Exception ex)
{
Console.WriteLine("An error occured: " + ex.Message);
Console.WriteLine("An error occured: " + ex.Source);
Console.WriteLine("An error occured: " + ex.InnerException);
Console.WriteLine("An error occured: " + ex.HelpLink);
Console.WriteLine("Trying Again");
TraceMessage(TraceLevel.Info, String.Format("Re-Initialised Communication With id/name={0}", _taskIdOrName));
EDXStatus mainTaskResult = PollSingleTask(client, triggerResult.ExecId, _pollIntervall, _timeout);
Console.WriteLine("Polling Complete");
List<EDXStatus> triggeredEDXStatuses = MonitorTriggeredTasks(client, mainTaskResult.TriggeredTasksId);
Console.WriteLine("Monitored Trigger Tasks Complete");
totalResult = AnalyseResult(mainTaskResult, triggeredEDXStatuses);
}
What version of QlikView are you running?
Bill
Hi Bill
I am running Qlikview 11 SR 1.
Eamonn
I have seen this issue in some cases, and not solved it yet.
But i thougt about a solution, that might helps.
If you are using a SSIS execute process task and execute the QMSEDX.exe file you could try to add a timeout parameter that is longer that the expected total reload time of your QlikView task.
Something like this:
QMSEDX.exe
-qms="http://localhost:4799/qms/service"
-task="taskname"
-timeout=600
Please let me know if it works, cause i
/Henrik
Hi Henrik
Thanks for getting back to me on this. The issue lies in that the SISS executes the EDX with a Timeout setting of 3 hours. What happens is that the EDX quits unexpectedly and returns a process error code of 255 to SSIS but the Qlikview Console contines to run the Job until it has completed.
Is there a Job Kill command that we could use that if SSIS recieves that 255 process error, it could execute another process Task that that would end that job?
Please let me know what you think?
Kind Regards
Eamonn
As I see it, you can do either, in your SSIS environment:
1) Set FailTaskIfReturnCodeIsNotSuccesValue=False and then accept the error.
2) Set FailTaskIfReturnCodeIsNotSuccesValue=False and catch the return code in a variable and the create your own error-handling in SSIS, where you specific handle code 255
3) Make a add to your Qlikview script, where you tell the SQL server ETL job that QlikView has finish ok. You can create a store procedure for this an use this in a load statement in QlikView. In this case you should also set FailTaskIfReturnCodeIsNotSuccesValue=False
/Henrik
Hi Henrik
This is a very good workaround but ideally we would love to be able to kill the job from SISS either through a direct command or an executable file. The reason for this is that the SSIS packages needs to log other parameters that the QVW would not be aware of.
Could this be done?
Chees
Eamonn
Hi
Just to let anybody who has this issue know that I found a solution.
I have now coded an Error Handler within the QMSEDX.exe that has successfully neutralized that Process Error Code 255. When the error now occurs, the Error Handler successfully catches the error and retries the polling process.
Let me know if ye have any queries.
Please see below the C# Code needed to implement this
----------------Code ---------------------------------------------------------
try
{
TraceMessage(TraceLevel.Info, String.Format("Successfully started task with id/name={0}", _taskIdOrName));
EDXStatus mainTaskResult = PollSingleTask(client, triggerResult.ExecId, _pollIntervall, _timeout);
List<EDXStatus> triggeredEDXStatuses = MonitorTriggeredTasks(client, mainTaskResult.TriggeredTasksId);
totalResult = AnalyseResult(mainTaskResult, triggeredEDXStatuses);
}
catch (Exception ex)
{
Console.WriteLine("An error occured: " + ex.Message);
Console.WriteLine("An error occured: " + ex.Source);
Console.WriteLine("An error occured: " + ex.InnerException);
Console.WriteLine("An error occured: " + ex.HelpLink);
Console.WriteLine("Trying Again");
TraceMessage(TraceLevel.Info, String.Format("Re-Initialised Communication With id/name={0}", _taskIdOrName));
EDXStatus mainTaskResult = PollSingleTask(client, triggerResult.ExecId, _pollIntervall, _timeout);
Console.WriteLine("Polling Complete");
List<EDXStatus> triggeredEDXStatuses = MonitorTriggeredTasks(client, mainTaskResult.TriggeredTasksId);
Console.WriteLine("Monitored Trigger Tasks Complete");
totalResult = AnalyseResult(mainTaskResult, triggeredEDXStatuses);
}
Hello I have the Process Error Code 255 is sent to the scheduler whenever there is aa long QVD reload , and this blocks the launch of the other tasks from the scheduler however for the other qvw document that are less time consuming when launched the error dooesn't reproduce, where do i need to implement your C# code ? thanks in advance