You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@oozie.apache.org by "Satish Subhashrao Saley (JIRA)" <ji...@apache.org> on 2016/06/14 22:00:31 UTC
[jira] [Comment Edited] (OOZIE-2572) SLA DURATION miss not shown
when job is running for longer than expected time
[ https://issues.apache.org/jira/browse/OOZIE-2572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15330710#comment-15330710 ]
Satish Subhashrao Saley edited comment on OOZIE-2572 at 6/14/16 9:59 PM:
-------------------------------------------------------------------------
We are unable to see DURATION_MISS for IN_PROCESS job because the times which we are comparing have different time units.
I had look at a coord job while it was running:
{code}
{
slaSummaryList: [
{
nominalTime: 1465930800000,
jobStatus: "RUNNING",
expectedEnd: 1465948800000,
appName: "meow",
actualEnd: null,
actualDuration: 55, <==It is in minutes
expectedDuration: 3600000, <== It is in milliseconds
}
{code}
The java script code is doing comparison based on these values
{code}
oozie-sla-table.js
if (slaSummary.actualDuration != -1 && slaSummary.expectedDuration != -1) {
slaSummary.durDiff = slaSummary.actualDuration - slaSummary.expectedDuration;
if (slaSummary.actualDuration > slaSummary.expectedDuration) {
slaMisses += "DURATION_MISS, ";
}
}
{code}
The comparison happens correctly if job has ended, because we update the time in milliseconds and prepare the json string correctly.
{code}
org.apache.oozie.command.sla.SLAJobEventXCommand.processForEnd()
slaCalc.setActualDuration(slaCalc.getActualEnd().getTime() - slaCalc.getActualStart().getTime());
{code}
For the job which is running, we just do comparison in correct time units but does not update actualDuration.
We need to change the logic for preparation of json string
{code}
org.apache.oozie.command.sla.SLAJobEventXCommand.processForRunning()
else if (slaCalc.getActualStart() != null && slaCalc.getExpectedDuration() != -1) {
if (System.currentTimeMillis() - slaCalc.getActualStart().getTime() > slaCalc.getExpectedDuration()) {
slaCalc.setEventStatus(EventStatus.DURATION_MISS);
if (shouldAlert(slaCalc)) {
queueEvent(new SLACalcStatus(slaCalc));
}
eventProc += 2;
}
}
{code}
{code}
JSONObject org.apache.oozie.sla.SLASummaryBean.toJSONObject(String timeZoneId)
json.put(JsonTags.SLA_SUMMARY_EXPECTED_DURATION, expectedDuration);
if (actualDuration == -1 && expectedDuration != -1 && actualStartTS != null) {
long currentDur = (new Date().getTime() - actualStartTS.getTime()) / (1000 * 60);
json.put(JsonTags.SLA_SUMMARY_ACTUAL_DURATION, currentDur);
}
else {
json.put(JsonTags.SLA_SUMMARY_ACTUAL_DURATION, actualDuration);
}
{code}
was (Author: satishsaley):
1. Have you received email notification?
2. We are unable to see DURATION_MISS for IN_PROCESS job because the times which we are comparing have different time units.
I had look at 1464144-160602055743812-oozie_PR-C@100 while it was running:
{code}
{
slaSummaryList: [
{
nominalTime: 1465930800000,
jobStatus: "RUNNING",
expectedEnd: 1465948800000,
appName: "cdw_cow_complete_1h",
actualEnd: null,
actualDuration: 55, <==It is in minutes
expectedDuration: 3600000, <== It is in milliseconds
}
{code}
The java script code is doing comparison based on these values
{code}
oozie-sla-table.js
if (slaSummary.actualDuration != -1 && slaSummary.expectedDuration != -1) {
slaSummary.durDiff = slaSummary.actualDuration - slaSummary.expectedDuration;
if (slaSummary.actualDuration > slaSummary.expectedDuration) {
slaMisses += "DURATION_MISS, ";
}
}
{code}
The comparison happens correctly if job has ended, because we update the time in milliseconds and prepare the json string correctly.
{code}
org.apache.oozie.command.sla.SLAJobEventXCommand.processForEnd()
slaCalc.setActualDuration(slaCalc.getActualEnd().getTime() - slaCalc.getActualStart().getTime());
{code}
For the job which is running, we just do comparison in correct time units but does not update actualDuration.
We need to change the logic for preparation of json string
{code}
org.apache.oozie.command.sla.SLAJobEventXCommand.processForRunning()
else if (slaCalc.getActualStart() != null && slaCalc.getExpectedDuration() != -1) {
if (System.currentTimeMillis() - slaCalc.getActualStart().getTime() > slaCalc.getExpectedDuration()) {
slaCalc.setEventStatus(EventStatus.DURATION_MISS);
if (shouldAlert(slaCalc)) {
queueEvent(new SLACalcStatus(slaCalc));
}
eventProc += 2;
}
}
{code}
{code}
JSONObject org.apache.oozie.sla.SLASummaryBean.toJSONObject(String timeZoneId)
json.put(JsonTags.SLA_SUMMARY_EXPECTED_DURATION, expectedDuration);
if (actualDuration == -1 && expectedDuration != -1 && actualStartTS != null) {
long currentDur = (new Date().getTime() - actualStartTS.getTime()) / (1000 * 60);
json.put(JsonTags.SLA_SUMMARY_ACTUAL_DURATION, currentDur);
}
else {
json.put(JsonTags.SLA_SUMMARY_ACTUAL_DURATION, actualDuration);
}
{code}
> SLA DURATION miss not shown when job is running for longer than expected time
> -----------------------------------------------------------------------------
>
> Key: OOZIE-2572
> URL: https://issues.apache.org/jira/browse/OOZIE-2572
> Project: Oozie
> Issue Type: Bug
> Reporter: Satish Subhashrao Saley
> Assignee: Satish Subhashrao Saley
>
> If job is running for beyond expected duration, Oozie UI is not slowing SLA for duration miss.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)