You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by mo...@apache.org on 2013/05/28 20:44:17 UTC
svn commit: r1487035 - in /oozie/trunk: ./
client/src/main/java/org/apache/oozie/client/event/
core/src/main/java/org/apache/oozie/executor/jpa/sla/
core/src/main/java/org/apache/oozie/service/
core/src/main/java/org/apache/oozie/sla/ core/src/test/jav...
Author: mona
Date: Tue May 28 18:44:17 2013
New Revision: 1487035
URL: http://svn.apache.org/r1487035
Log:
OOZIE-1361 Remove SLACalculatorBean and add columns to SummaryBean indicating events processed and sla processed (mona)
Modified:
oozie/trunk/client/src/main/java/org/apache/oozie/client/event/SLAEvent.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLACalculatorGetJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/service/JPAService.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalcStatus.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculationJPAExecutor.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAJobEventListener.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAService.java
oozie/trunk/core/src/test/java/org/apache/oozie/test/XTestCase.java
oozie/trunk/release-log.txt
oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java
Modified: oozie/trunk/client/src/main/java/org/apache/oozie/client/event/SLAEvent.java
URL: http://svn.apache.org/viewvc/oozie/trunk/client/src/main/java/org/apache/oozie/client/event/SLAEvent.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/client/src/main/java/org/apache/oozie/client/event/SLAEvent.java (original)
+++ oozie/trunk/client/src/main/java/org/apache/oozie/client/event/SLAEvent.java Tue May 28 18:44:17 2013
@@ -27,7 +27,7 @@ import org.apache.oozie.AppType;
public abstract class SLAEvent extends Event {
public static enum EventStatus {
- START_MET, START_MISS, END_MET, END_MISS, DURATION_MET, DURATION_MISS
+ START_MET, START_MISS, DURATION_MET, DURATION_MISS, END_MET, END_MISS
}
public static enum SLAStatus {
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLACalculatorGetJPAExecutor.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLACalculatorGetJPAExecutor.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLACalculatorGetJPAExecutor.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLACalculatorGetJPAExecutor.java Tue May 28 18:44:17 2013
@@ -1,59 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.oozie.executor.jpa.sla;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import org.apache.oozie.ErrorCode;
-import org.apache.oozie.executor.jpa.JPAExecutor;
-import org.apache.oozie.executor.jpa.JPAExecutorException;
-import org.apache.oozie.sla.SLACalculatorBean;
-
-/**
- * Load the list of SLACalculatorBean and return the list.
- */
-public class SLACalculatorGetJPAExecutor implements JPAExecutor<SLACalculatorBean> {
-
- private String id = null;
-
- public SLACalculatorGetJPAExecutor(String id) {
- this.id = id;
- }
-
- @Override
- public String getName() {
- return "SLACalculatorGetJPAExecutor";
- }
-
- @Override
- public SLACalculatorBean execute(EntityManager em) throws JPAExecutorException {
- SLACalculatorBean scBean;
- Query q;
- try {
- q = em.createNamedQuery("GET_SLA_CALC");
- q.setParameter("id", id);
- scBean = (SLACalculatorBean) q.getSingleResult();
- }
- catch (Exception e) {
- throw new JPAExecutorException(ErrorCode.E0603, e.getMessage(), e);
- }
- return scBean;
- }
-
-}
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/service/JPAService.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/service/JPAService.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/service/JPAService.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/service/JPAService.java Tue May 28 18:44:17 2013
@@ -44,7 +44,6 @@ import org.apache.oozie.client.rest.Json
import org.apache.oozie.client.rest.sla.JsonSLARegistrationEvent;
import org.apache.oozie.executor.jpa.JPAExecutor;
import org.apache.oozie.executor.jpa.JPAExecutorException;
-import org.apache.oozie.sla.SLACalculatorBean;
import org.apache.oozie.sla.SLARegistrationBean;
import org.apache.oozie.sla.SLASummaryBean;
import org.apache.oozie.util.IOUtils;
@@ -56,6 +55,7 @@ import org.apache.openjpa.persistence.Op
/**
* Service that manages JPA and executes {@link JPAExecutor}.
*/
+@SuppressWarnings("deprecation")
public class JPAService implements Service, Instrumentable {
private static final String INSTRUMENTATION_GROUP = "jpa";
@@ -175,7 +175,6 @@ public class JPAService implements Servi
entityManager.find(BundleActionBean.class, 1);
entityManager.find(SLARegistrationBean.class, 1);
entityManager.find(JsonSLARegistrationEvent.class, 1);
- entityManager.find(SLACalculatorBean.class, 1);
entityManager.find(SLASummaryBean.class, 1);
LOG.info(XLog.STD, "All entities initialized");
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalcStatus.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalcStatus.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalcStatus.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalcStatus.java Tue May 28 18:44:17 2013
@@ -29,32 +29,23 @@ import org.apache.oozie.client.event.SLA
public class SLACalcStatus extends SLAEvent {
private SLARegistrationBean regBean;
- private SLACalculatorBean calcBean;
private String jobStatus;
private SLAStatus slaStatus;
private EventStatus eventStatus;
private Date actualStart;
private Date actualEnd;
private long actualDuration;
-
- public SLACalcStatus(SLARegistrationBean reg, String jobStatus, EventStatus eventStatus) {
- setSLARegistrationBean(reg);
- calcBean = new SLACalculatorBean();
- setJobId(reg.getJobId());
- setJobStatus(jobStatus);
- setEventStatus(eventStatus);
- }
-
- public SLACalcStatus(SLARegistrationBean reg, SLACalculatorBean calcBean) {
- setSLARegistrationBean(reg);
- setSLACalculatorBean(calcBean);
- }
+ private Date lastModifiedTime;
+ private byte slaProcessed;
+ private byte eventProcessed;
public SLACalcStatus(SLARegistrationBean reg) {
- this(reg, null, null);
+ this();
+ setSLARegistrationBean(reg);
}
public SLACalcStatus(SLASummaryBean summary) {
+ this();
SLARegistrationBean reg = new SLARegistrationBean();
reg.setUser(summary.getUser());
reg.setAppName(summary.getAppName());
@@ -68,29 +59,38 @@ public class SLACalcStatus extends SLAEv
setActualDuration(summary.getActualDuration());
setSLAStatus(summary.getSLAStatus());
setSLARegistrationBean(reg);
- calcBean = new SLACalculatorBean();
setJobId(reg.getJobId());
setJobStatus(summary.getJobStatus());
setEventStatus(summary.getEventStatus());
+ setLastModifiedTime(summary.getLastModifiedTime());
+ setSlaProcessed(summary.getSlaProcessed());
+ setEventProcessed((byte) summary.getEventStatus().ordinal());
}
/**
* copy constructor
- * @return
+ * @return SLACalcStatus
*/
public SLACalcStatus(SLACalcStatus a) {
- this.setSLARegistrationBean(a.getSLARegistrationBean());
- this.setSLACalculatorBean(a.getSLACalculatorBean());
- this.setJobStatus(a.getJobStatus());
- this.setSLAStatus(a.getSLAStatus());
- this.setEventStatus(a.getEventStatus());
- this.setActualStart(a.getActualStart());
- this.setActualEnd(a.getActualEnd());
- this.setActualDuration(a.getActualDuration());
+ this();
+ setSLARegistrationBean(a.getSLARegistrationBean());
+ setJobStatus(a.getJobStatus());
+ setSLAStatus(a.getSLAStatus());
+ setEventStatus(a.getEventStatus());
+ setActualStart(a.getActualStart());
+ setActualEnd(a.getActualEnd());
+ setActualDuration(a.getActualDuration());
+ setLastModifiedTime(a.getLastModifiedTime());
+ setSlaProcessed(a.getSlaProcessed());
+ setEventProcessed(a.getEventProcessed());
}
public SLACalcStatus() {
setMsgType(MessageType.SLA);
+ setSlaProcessed((byte) 0);
+ setEventProcessed((byte) 0);
+ setActualDuration(-1);
+ setLastModifiedTime(new Date());
}
public SLARegistrationBean getSLARegistrationBean() {
@@ -101,14 +101,6 @@ public class SLACalcStatus extends SLAEv
this.regBean = slaBean;
}
- public SLACalculatorBean getSLACalculatorBean() {
- return calcBean;
- }
-
- public void setSLACalculatorBean(SLACalculatorBean calcBean) {
- this.calcBean = calcBean;
- }
-
@Override
public String getJobId() {
return regBean.getJobId();
@@ -116,7 +108,6 @@ public class SLACalcStatus extends SLAEv
public void setJobId(String id) {
regBean.setJobId(id);
- calcBean.setJobId(id);
}
@Override
@@ -173,28 +164,44 @@ public class SLACalcStatus extends SLAEv
this.eventStatus = es;
}
- public boolean isStartProcessed() {
- return calcBean.isStartProcessed();
+ public Date getLastModifiedTime() {
+ return lastModifiedTime;
}
- public void setStartProcessed(boolean startProcessed) {
- calcBean.setStartProcessed(startProcessed);
+ public void setLastModifiedTime(Date lastModifiedTime) {
+ this.lastModifiedTime = lastModifiedTime;
}
- public boolean isEndProcessed() {
- return calcBean.isEndProcessed();
+ /**
+ * Get whether sla has been processed
+ * and actual times stored for this job
+ *
+ * @return 0 = sla not processed
+ * 1 = sla processed but actual times not stored
+ * 2 = sla processed as well as actual times stored
+ */
+ public byte getSlaProcessed() {
+ return slaProcessed;
}
- public void setEndProcessed(boolean endProcessed) {
- calcBean.setEndProcessed(endProcessed);
+ public void setSlaProcessed(int slaProcessed) {
+ this.slaProcessed = (byte) slaProcessed;
}
- public boolean isDurationProcessed() {
- return calcBean.isDurationProcessed();
+ /**
+ * Get which type of sla event has been processed needed when calculator
+ * periodically loops to update all jobs' sla
+ *
+ * @return byte 1st bit set (from LSB) = start processed
+ * 2nd bit set = duration processed
+ * 3rd bit set = end processed
+ */
+ public byte getEventProcessed() {
+ return eventProcessed;
}
- public void setDurationProcessed(boolean durationProcessed) {
- calcBean.setDurationProcessed(durationProcessed);
+ public void setEventProcessed(int eventProcessed) {
+ this.eventProcessed = (byte) eventProcessed;
}
@Override
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorBean.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorBean.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorBean.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorBean.java Tue May 28 18:44:17 2013
@@ -1,100 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.oozie.sla;
-
-import javax.persistence.Basic;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-
-import org.apache.oozie.client.rest.JsonBean;
-import org.json.simple.JSONObject;
-
-@Entity
-@Table(name = "SLA_CALCULATOR")
-@NamedQueries({ @NamedQuery(name = "GET_SLA_CALC", query = "select OBJECT(w) from SLACalculatorBean w where w.jobId = :id") })
-public class SLACalculatorBean implements JsonBean {
-
- @Id
- @Basic
- @Column(name = "job_id")
- private String jobId;
-
- @Basic
- @Column(name = "start_processed")
- private boolean startProcessed = false;
-
- @Basic
- @Column(name = "end_processed")
- private boolean endProcessed = false;
-
- @Basic
- @Column(name = "duration_processed")
- private boolean durationProcessed = false;
-
- public SLACalculatorBean() {
- }
-
- public String getJobId() {
- return jobId;
- }
-
- public void setJobId(String jobId) {
- this.jobId = jobId;
- }
-
- public boolean isStartProcessed() {
- return startProcessed;
- }
-
- public void setStartProcessed(boolean startProcessed) {
- this.startProcessed = startProcessed;
- }
-
- public boolean isEndProcessed() {
- return endProcessed;
- }
-
- public void setEndProcessed(boolean endProcessed) {
- this.endProcessed = endProcessed;
- }
-
- public boolean isDurationProcessed() {
- return durationProcessed;
- }
-
- public void setDurationProcessed(boolean durationProcessed) {
- this.durationProcessed = durationProcessed;
- }
-
- @Override
- public JSONObject toJSONObject() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public JSONObject toJSONObject(String timeZoneId) {
- // TODO Auto-generated method stub
- return null;
- }
-
-}
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java Tue May 28 18:44:17 2013
@@ -104,49 +104,52 @@ public class SLACalculatorMemory impleme
List<JsonBean> updateList = new ArrayList<JsonBean>();
synchronized (slaCalc) {
boolean change = false;
+ byte eventProc = slaCalc.getEventProcessed();
SLARegistrationBean reg = slaCalc.getSLARegistrationBean();
// calculation w.r.t current time and status
- if (reg.getExpectedStart() == null) {
- slaCalc.setStartProcessed(true); //disable further processing
- }
- if (!slaCalc.isStartProcessed()) {
- if (reg.getExpectedStart().getTime() < Calendar.getInstance(TimeZone.getTimeZone("UTC"))
- .getTimeInMillis()) {
- slaCalc.setEventStatus(EventStatus.START_MISS);
- slaCalc.setStartProcessed(true);
- change = true;
- eventHandler.queueEvent(new SLACalcStatus(slaCalc));
+ if ((eventProc & 1) == 0) { // first bit (start-processed) unset
+ if (reg.getExpectedStart() != null) {
+ if (reg.getExpectedStart().getTime() < Calendar.getInstance(TimeZone.getTimeZone("UTC"))
+ .getTimeInMillis()) {
+ slaCalc.setEventStatus(EventStatus.START_MISS);
+ change = true;
+ eventHandler.queueEvent(new SLACalcStatus(slaCalc));
+ eventProc++;
+ }
+ }
+ else {
+ eventProc++; //disable further processing for optional start sla condition
}
}
- if (!slaCalc.isDurationProcessed()) {
+ byte eventProcCopy = eventProc;
+ if (((eventProcCopy >> 1) & 1) == 0) { // check if second bit (duration-processed) is unset
if (slaCalc.getActualStart() != null) {
if (reg.getExpectedDuration() < Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTimeInMillis()
- slaCalc.getActualStart().getTime()) {
slaCalc.setEventStatus(EventStatus.DURATION_MISS);
- slaCalc.setDurationProcessed(true);
change = true;
eventHandler.queueEvent(new SLACalcStatus(slaCalc));
+ eventProc += 2;
}
}
}
- if (!slaCalc.isEndProcessed()) {
+ if (eventProc < 5) {
if (reg.getExpectedEnd().getTime() < Calendar.getInstance(TimeZone.getTimeZone("UTC"))
.getTimeInMillis()) {
slaCalc.setEventStatus(EventStatus.END_MISS);
slaCalc.setSLAStatus(SLAStatus.MISS);
- slaCalc.setEndProcessed(true);
+ slaCalc.setSlaProcessed(1);
change = true;
eventHandler.queueEvent(new SLACalcStatus(slaCalc));
+ eventProc += 4;
}
}
if (change) {
- // TODO:Future enhancement - priority queue implementation for
- // calculation, update lastmodified to after every run, so
- // service can prioritize on checking LRU style
- updateList.add(slaCalc.getSLACalculatorBean());
+ slaCalc.setEventProcessed(eventProc);
+ slaCalc.setLastModifiedTime(new Date());
updateList.add(new SLASummaryBean(slaCalc));
jpa.execute(new SLACalculationInsertUpdateJPAExecutor(null, updateList));
- if (slaCalc.isEndProcessed()) {
+ if (slaCalc.getEventProcessed() == 7 && slaCalc.getSlaProcessed() != 2) {
historySet.add(jobId);
slaMap.remove(jobId);
XLog.getLog(SLAService.class).trace("Removed Job [{0}] from map after End-processed", jobId);
@@ -156,8 +159,8 @@ public class SLACalculatorMemory impleme
}
/**
- * Periodically run by the SLAService worker threads to update SLA status
- * by iterating through all the jobs in the map
+ * Periodically run by the SLAService worker threads to update SLA status by
+ * iterating through all the jobs in the map
*/
@Override
public void updateAllSlaStatus() {
@@ -185,7 +188,6 @@ public class SLACalculatorMemory impleme
slaCalc.setSLAStatus(SLAStatus.NOT_STARTED);
slaMap.put(jobId, slaCalc);
insertList.add(reg);
- insertList.add(slaCalc.getSLACalculatorBean());
insertList.add(new SLASummaryBean(slaCalc));
jpa.execute(new SLACalculationInsertUpdateJPAExecutor(insertList, null));
XLog.getLog(SLAService.class).trace("SLA Registration Event - Job:" + jobId);
@@ -216,23 +218,30 @@ public class SLACalculatorMemory impleme
boolean ret = false;
if (slaCalc != null) {
synchronized (slaCalc) {
+ byte eventProc = slaCalc.getEventProcessed();
slaCalc.setJobStatus(jobStatus);
switch (jobEventStatus) {
case STARTED:
slaInfo = processJobStartSLA(slaCalc, startTime);
+ eventProc += 1;
break;
case SUCCESS:
slaInfo = processJobEndSuccessSLA(slaCalc, startTime, endTime);
+ slaInfo.setSlaProcessed(2);
+ eventProc += 6;
break;
case FAILURE:
slaInfo = processJobEndFailureSLA(slaCalc, startTime, endTime);
+ slaInfo.setSlaProcessed(2);
+ eventProc += 6;
break;
default:
XLog.getLog(SLAService.class).debug("Unknown Job Status [{0}]", jobEventStatus);
return false;
}
- updateList.add(slaCalc.getSLACalculatorBean());
- if (slaCalc.isEndProcessed()) {
+ slaCalc.setEventProcessed(eventProc);
+ slaInfo.setLastModifiedTime(new Date());
+ if (slaInfo.getSlaProcessed() == 2) {
slaMap.remove(jobId);
}
ret = true;
@@ -246,9 +255,11 @@ public class SLACalculatorMemory impleme
if (endTime != null) {
slaInfo.setActualDuration(endTime.getTime() - startTime.getTime());
}
+ slaInfo.setSlaProcessed(2);
historySet.remove(jobId);
ret = true;
}
+ slaInfo.setLastModifiedTime(new Date());
updateList.add(slaInfo);
if (jpa != null) {
jpa.execute(new SLACalculationInsertUpdateJPAExecutor(null, updateList));
@@ -270,14 +281,14 @@ public class SLACalculatorMemory impleme
slaCalc.setSLAStatus(SLAStatus.IN_PROCESS);
SLARegistrationBean reg = slaCalc.getSLARegistrationBean();
Date expecStart = reg.getExpectedStart();
- if (!slaCalc.isStartProcessed() && expecStart != null) {
+ byte eventProc = slaCalc.getEventProcessed();
+ if (((eventProc & 1) == 0) && expecStart != null) {
if (actualStart.getTime() > expecStart.getTime()) {
slaCalc.setEventStatus(EventStatus.START_MISS);
}
else {
slaCalc.setEventStatus(EventStatus.START_MET);
}
- slaCalc.setStartProcessed(true);
eventHandler.queueEvent(new SLACalcStatus(slaCalc));
}
return new SLASummaryBean(slaCalc);
@@ -305,7 +316,6 @@ public class SLACalculatorMemory impleme
else {
slaCalc.setEventStatus(EventStatus.DURATION_MET);
}
- slaCalc.setDurationProcessed(true);
eventHandler.queueEvent(new SLACalcStatus(slaCalc));
Date expectedEnd = reg.getExpectedEnd();
@@ -317,7 +327,6 @@ public class SLACalculatorMemory impleme
slaCalc.setEventStatus(EventStatus.END_MET);
slaCalc.setSLAStatus(SLAStatus.MET);
}
- slaCalc.setEndProcessed(true);
eventHandler.queueEvent(new SLACalcStatus(slaCalc));
return new SLASummaryBean(slaCalc);
}
@@ -346,10 +355,8 @@ public class SLACalculatorMemory impleme
else {
slaCalc.setEventStatus(EventStatus.DURATION_MET);
}
- slaCalc.setDurationProcessed(true);
slaCalc.setEventStatus(EventStatus.END_MISS);
slaCalc.setSLAStatus(SLAStatus.MISS);
- slaCalc.setEndProcessed(true);
eventHandler.queueEvent(new SLACalcStatus(slaCalc));
summ = new SLASummaryBean(slaCalc);
return summ;
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java Tue May 28 18:44:17 2013
@@ -31,12 +31,16 @@ import javax.persistence.Table;
import org.apache.oozie.client.event.SLAEvent;
import org.apache.oozie.client.rest.JsonBean;
import org.apache.oozie.util.DateUtils;
+import org.apache.openjpa.persistence.jdbc.Index;
import org.json.simple.JSONObject;
@Entity
@Table(name = "SLA_SUMMARY")
@NamedQueries({
@NamedQuery(name = "GET_SLA_SUMMARY", query = "select OBJECT(w) from SLASummaryBean w where w.jobId = :id") })
+/**
+ * Class to store all the SLA related details (summary) per job
+ */
public class SLASummaryBean implements JsonBean {
@Id
@@ -49,14 +53,17 @@ public class SLASummaryBean implements J
private String user;
@Basic
+ @Index
@Column(name = "app_name")
private String appName;
@Basic
+ @Index
@Column(name = "parent_id")
private String parentId;
@Basic
+ @Index
@Column(name = "nominal_time")
private Timestamp nominalTimeTS = null;
@@ -82,7 +89,7 @@ public class SLASummaryBean implements J
@Basic
@Column(name = "actual_duration")
- private long actualDuration;
+ private long actualDuration = -1;
@Basic
@Column(name = "job_status")
@@ -96,6 +103,16 @@ public class SLASummaryBean implements J
@Column(name = "sla_status")
private String slaStatus;
+ @Basic
+ @Index
+ @Column(name = "sla_processed")
+ private byte slaProcessed = 0;
+
+ @Basic
+ @Index
+ @Column(name = "last_modified")
+ private Timestamp lastModifiedTS = null;
+
public SLASummaryBean() {
}
@@ -109,6 +126,8 @@ public class SLASummaryBean implements J
setJobStatus(slaCalc.getJobStatus());
setSLAStatus(slaCalc.getSLAStatus());
setEventStatus(slaCalc.getEventStatus());
+ setSlaProcessed(slaCalc.getSlaProcessed());
+ setLastModifiedTime(slaCalc.getLastModifiedTime());
setUser(reg.getUser());
setParentId(reg.getParentId());
}
@@ -226,6 +245,22 @@ public class SLASummaryBean implements J
this.appName = appName;
}
+ public byte getSlaProcessed() {
+ return slaProcessed;
+ }
+
+ public void setSlaProcessed(int slaProcessed) {
+ this.slaProcessed = (byte) slaProcessed;
+ }
+
+ public Date getLastModifiedTime() {
+ return DateUtils.toDate(lastModifiedTS);
+ }
+
+ public void setLastModifiedTime(Date lastModified) {
+ this.lastModifiedTS = DateUtils.convertDateToTimestamp(lastModified);
+ }
+
@Override
public JSONObject toJSONObject() {
// TODO Auto-generated method stub
Modified: oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculationJPAExecutor.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculationJPAExecutor.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculationJPAExecutor.java (original)
+++ oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculationJPAExecutor.java Tue May 28 18:44:17 2013
@@ -29,7 +29,6 @@ import org.apache.oozie.client.rest.Json
import org.apache.oozie.command.SkipCommitFaultInjection;
import org.apache.oozie.executor.jpa.JPAExecutorException;
import org.apache.oozie.executor.jpa.sla.SLACalculationInsertUpdateJPAExecutor;
-import org.apache.oozie.executor.jpa.sla.SLACalculatorGetJPAExecutor;
import org.apache.oozie.executor.jpa.sla.SLASummaryGetJPAExecutor;
import org.apache.oozie.service.JPAService;
import org.apache.oozie.service.Services;
@@ -39,7 +38,7 @@ import org.junit.Before;
import org.junit.Test;
/**
- * Testcase to check db operations on tables SLA_CALCULATOR and SLA_SUMMARY
+ * Testcase to check db operations on SLA_SUMMARY table
*/
public class TestSLACalculationJPAExecutor extends XDataTestCase {
Services services;
@@ -73,7 +72,6 @@ public class TestSLACalculationJPAExecut
assertNotNull(jpaService);
String wfId = "workflow-1";
- SLACalculatorBean bean1 = _createSLACalcBean(wfId, false, false);
cal.setTime(new Date());
cal.add(Calendar.DAY_OF_MONTH, -2);
@@ -84,33 +82,27 @@ public class TestSLACalculationJPAExecut
cal.add(Calendar.DAY_OF_MONTH, 2);
Date actEnd = cal.getTime();
SLASummaryBean bean2 = _createSLASummaryBean(wfId, "RUNNING", EventStatus.START_MISS, expStart, expEnd, 1000,
- actStart, actEnd, 2000);
+ actStart, actEnd, 2000, (byte) 1, actEnd);
List<JsonBean> list = new ArrayList<JsonBean>();
- list.add(bean1);
list.add(bean2);
SLACalculationInsertUpdateJPAExecutor writeCmd = new SLACalculationInsertUpdateJPAExecutor();
writeCmd.setInsertList(list);
jpaService.execute(writeCmd);
- SLACalculatorGetJPAExecutor readCmd1 = new SLACalculatorGetJPAExecutor(wfId);
- SLACalculatorBean scBean = jpaService.execute(readCmd1);
- assertNotNull(scBean);
- assertEquals(wfId, scBean.getJobId());
- assertFalse(scBean.isStartProcessed());
- assertFalse(scBean.isEndProcessed());
-
SLASummaryGetJPAExecutor readCmd2 = new SLASummaryGetJPAExecutor(wfId);
- SLASummaryBean ssBean = jpaService.execute(readCmd2);
- assertEquals(wfId, ssBean.getJobId());
- assertEquals("RUNNING", ssBean.getJobStatus());
- assertEquals(EventStatus.START_MISS, ssBean.getEventStatus());
- assertEquals(expStart, ssBean.getExpectedStart());
- assertEquals(expEnd, ssBean.getExpectedEnd());
- assertEquals(1000, ssBean.getExpectedDuration());
- assertEquals(actStart, ssBean.getActualStart());
- assertEquals(actEnd, ssBean.getActualEnd());
- assertEquals(2000, ssBean.getActualDuration());
+ SLASummaryBean sBean = jpaService.execute(readCmd2);
+ assertEquals(wfId, sBean.getJobId());
+ assertEquals("RUNNING", sBean.getJobStatus());
+ assertEquals(EventStatus.START_MISS, sBean.getEventStatus());
+ assertEquals(expStart, sBean.getExpectedStart());
+ assertEquals(expEnd, sBean.getExpectedEnd());
+ assertEquals(1000, sBean.getExpectedDuration());
+ assertEquals(actStart, sBean.getActualStart());
+ assertEquals(actEnd, sBean.getActualEnd());
+ assertEquals(2000, sBean.getActualDuration());
+ assertEquals(1, sBean.getSlaProcessed());
+ assertEquals(actEnd, sBean.getLastModifiedTime());
}
@@ -126,8 +118,6 @@ public class TestSLACalculationJPAExecut
String wfId = "workflow-1";
// initial insert
- SLACalculatorBean bean1 = _createSLACalcBean(wfId, false, false);
-
cal.setTime(new Date());
cal.add(Calendar.DAY_OF_MONTH, -2);
Date expStart = cal.getTime();
@@ -135,9 +125,8 @@ public class TestSLACalculationJPAExecut
Date expEnd = cal.getTime();
Date actStart = new Date();
SLASummaryBean bean2 = _createSLASummaryBean(wfId, "RUNNING", EventStatus.START_MISS, expStart, expEnd, 1000,
- actStart, null, 2000);
+ actStart, null, 2000, (byte) 0, actStart);
List<JsonBean> list = new ArrayList<JsonBean>();
- list.add(bean1);
list.add(bean2);
SLACalculationInsertUpdateJPAExecutor writeCmd = new SLACalculationInsertUpdateJPAExecutor();
writeCmd.setInsertList(list);
@@ -145,34 +134,27 @@ public class TestSLACalculationJPAExecut
// update existing record
Date newDate = new Date();
- bean1 = _createSLACalcBean(wfId, true, true);
bean2 = _createSLASummaryBean(wfId, "RUNNING", EventStatus.DURATION_MISS, expStart, expEnd, 1000, actStart,
- newDate, 2000);
+ newDate, 2000, (byte) 1, newDate);
list = new ArrayList<JsonBean>();
- list.add(bean1);
list.add(bean2);
writeCmd.setUpdateList(list);
writeCmd.setInsertList(null);
jpaService.execute(writeCmd);
- SLACalculatorGetJPAExecutor readCmd1 = new SLACalculatorGetJPAExecutor(wfId);
- SLACalculatorBean scBean = jpaService.execute(readCmd1);
- assertNotNull(scBean);
- assertEquals(wfId, scBean.getJobId());
- assertTrue(scBean.isStartProcessed());
- assertTrue(scBean.isEndProcessed());
-
SLASummaryGetJPAExecutor readCmd2 = new SLASummaryGetJPAExecutor(wfId);
- SLASummaryBean sdBean = jpaService.execute(readCmd2);
+ SLASummaryBean sBean = jpaService.execute(readCmd2);
// check updated + original fields
- assertEquals(wfId, sdBean.getJobId());
- assertEquals(EventStatus.DURATION_MISS, sdBean.getEventStatus());
- assertEquals(expStart, sdBean.getExpectedStart());
- assertEquals(expEnd, sdBean.getExpectedEnd());
- assertEquals(1000, sdBean.getExpectedDuration());
- assertEquals(actStart, sdBean.getActualStart());
- assertEquals(newDate, sdBean.getActualEnd());
- assertEquals(2000, sdBean.getActualDuration());
+ assertEquals(wfId, sBean.getJobId());
+ assertEquals(EventStatus.DURATION_MISS, sBean.getEventStatus());
+ assertEquals(expStart, sBean.getExpectedStart());
+ assertEquals(expEnd, sBean.getExpectedEnd());
+ assertEquals(1000, sBean.getExpectedDuration());
+ assertEquals(actStart, sBean.getActualStart());
+ assertEquals(newDate, sBean.getActualEnd());
+ assertEquals(2000, sBean.getActualDuration());
+ assertEquals(1, sBean.getSlaProcessed());
+ assertEquals(newDate, sBean.getLastModifiedTime());
}
@@ -189,31 +171,26 @@ public class TestSLACalculationJPAExecut
String wfId1 = "workflow-1";
String wfId2 = "workflow-2";
// initial insert
- SLACalculatorBean bean1 = _createSLACalcBean(wfId1, false, false);
- SLASummaryBean bean2 = _createSLASummaryBean(wfId1, "RUNNING", EventStatus.START_MISS, new Date(), new Date(),
- 1000, null, null, 2000);
+ SLASummaryBean bean1 = _createSLASummaryBean(wfId1, "RUNNING", EventStatus.START_MISS, new Date(), new Date(),
+ 1000, null, null, 2000, 0, null);
List<JsonBean> list = new ArrayList<JsonBean>();
list.add(bean1);
- list.add(bean2);
SLACalculationInsertUpdateJPAExecutor writeCmd = new SLACalculationInsertUpdateJPAExecutor(list, null);
jpaService.execute(writeCmd);
// update existing record and insert another
Date newDate = new Date();
- bean1 = _createSLACalcBean(wfId1, true, true);
- bean2 = new SLASummaryBean();
- bean2.setJobId(wfId1);
- bean2.setActualEnd(newDate);
+ bean1 = new SLASummaryBean();
+ bean1.setJobId(wfId1);
+ bean1.setActualEnd(newDate);
+ bean1.setSlaProcessed(1);
List<JsonBean> updateList = new ArrayList<JsonBean>();
updateList.add(bean1);
- updateList.add(bean2);
- SLACalculatorBean bean3 = _createSLACalcBean(wfId2, false, false);
- SLASummaryBean bean4 = _createSLASummaryBean(wfId2, "RUNNING", EventStatus.END_MISS, new Date(), new Date(),
- 1000, null, null, 2000);
+ SLASummaryBean bean2 = _createSLASummaryBean(wfId2, "RUNNING", EventStatus.END_MISS, new Date(), new Date(),
+ 1000, null, null, 2000, 0, null);
List<JsonBean> insertList = new ArrayList<JsonBean>();
- insertList.add(bean3);
- insertList.add(bean4);
+ insertList.add(bean2);
writeCmd = new SLACalculationInsertUpdateJPAExecutor(insertList, updateList);
// set fault injection to true, so transaction is roll backed
@@ -228,35 +205,25 @@ public class TestSLACalculationJPAExecut
FaultInjection.deactivate("org.apache.oozie.command.SkipCommitFaultInjection");
// Check whether transactions are rolled back or not
- SLACalculatorGetJPAExecutor readCmd1 = new SLACalculatorGetJPAExecutor(wfId1);
- SLACalculatorBean scBean = jpaService.execute(readCmd1);
- // isStartProcessed should NOT be toggled to true
- assertFalse(scBean.isStartProcessed());
- SLASummaryGetJPAExecutor readCmd2 = new SLASummaryGetJPAExecutor(wfId1);
- SLASummaryBean sdBean = jpaService.execute(readCmd2);
+ SLASummaryGetJPAExecutor readCmd = new SLASummaryGetJPAExecutor(wfId1);
+ SLASummaryBean sBean = jpaService.execute(readCmd);
+ // isSlaProcessed should NOT be changed to 1
+ assertFalse(sBean.getSlaProcessed() == 1);
// actualEnd should be null as before
- assertNull(sdBean.getActualEnd());
+ assertNull(sBean.getActualEnd());
- readCmd1 = new SLACalculatorGetJPAExecutor(wfId2);
+ SLASummaryGetJPAExecutor readCmd1 = new SLASummaryGetJPAExecutor(wfId2);
try {
- scBean = jpaService.execute(readCmd1);
- fail("Expected exception but didnt get any");
+ sBean = jpaService.execute(readCmd1);
+ fail("Expected not found exception but didnt get any");
}
catch (JPAExecutorException jpaee) {
assertEquals(ErrorCode.E0603, jpaee.getErrorCode());
}
}
- private SLACalculatorBean _createSLACalcBean(String jobId, boolean startProc, boolean endProc) {
- SLACalculatorBean bean = new SLACalculatorBean();
- bean.setJobId(jobId);
- bean.setStartProcessed(startProc);
- bean.setEndProcessed(endProc);
- return bean;
- }
-
private SLASummaryBean _createSLASummaryBean(String jobId, String status, EventStatus slaType, Date eStart,
- Date eEnd, long eDur, Date aStart, Date aEnd, long aDur) {
+ Date eEnd, long eDur, Date aStart, Date aEnd, long aDur, int slaProc, Date lastMod) {
SLASummaryBean bean = new SLASummaryBean();
bean.setJobId(jobId);
bean.setJobStatus(status);
@@ -267,6 +234,9 @@ public class TestSLACalculationJPAExecut
bean.setActualStart(aStart);
bean.setActualEnd(aEnd);
bean.setActualDuration(aDur);
+ bean.setSlaProcessed((byte) slaProc);
+ bean.setLastModifiedTime(lastMod);
return bean;
}
+
}
Modified: oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java (original)
+++ oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java Tue May 28 18:44:17 2013
@@ -177,7 +177,7 @@ public class TestSLAEventGeneration exte
// test that sla processes the Job Event from Start command
new StartXCommand(jobId).call();
slaEvent = slas.getSLACalculator().get(jobId);
- slaEvent.setStartProcessed(false); //resetting flag for testing sla event
+ slaEvent.setEventProcessed(0); //resetting to receive sla events
ehs.new EventWorker().run();
Thread.sleep(300); //time for event listeners to run
slaEvent = (SLACalcStatus) ehs.getEventQueue().poll();
@@ -237,7 +237,7 @@ public class TestSLAEventGeneration exte
String expectedEnd = DateUtils.formatDateOozieTZ(cal.getTime());
String appName = "test-coord-sla";
- // testing creation of new sla registration via Submit+Materialize
+ // testing creation of new sla registration via Submit + Materialize
// command
CoordSubmitXCommand sc = new CoordSubmitXCommand(conf, "UNIT_TESTING");
String jobId = sc.call();
@@ -266,7 +266,7 @@ public class TestSLAEventGeneration exte
jpa.execute(writeCmd);
new CoordActionStartXCommand(actionId, getTestUser(), appName, "authtoken", jobId).call();
slaEvent = slas.getSLACalculator().get(actionId);
- slaEvent.setStartProcessed(false); //resetting flag for testing sla event
+ slaEvent.setEventProcessed(0); //resetting for testing sla event
ehs.new EventWorker().run();
Thread.sleep(300); //time for event listeners to run
slaEvent = (SLACalcStatus) ehs.getEventQueue().poll();
Modified: oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAJobEventListener.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAJobEventListener.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAJobEventListener.java (original)
+++ oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAJobEventListener.java Tue May 28 18:44:17 2013
@@ -30,7 +30,6 @@ import org.apache.oozie.event.Coordinato
import org.apache.oozie.event.CoordinatorJobEvent;
import org.apache.oozie.event.WorkflowActionEvent;
import org.apache.oozie.event.WorkflowJobEvent;
-import org.apache.oozie.executor.jpa.sla.SLACalculatorGetJPAExecutor;
import org.apache.oozie.executor.jpa.sla.SLASummaryGetJPAExecutor;
import org.apache.oozie.service.EventHandlerService;
import org.apache.oozie.service.JPAService;
@@ -89,8 +88,9 @@ public class TestSLAJobEventListener ext
listener.onWorkflowJobEvent(wfe);
SLACalcStatus serviceObj = slas.getSLACalculator().get("wf1");
// check that start sla has been calculated
- assertTrue(serviceObj.isStartProcessed());
assertEquals(EventStatus.START_MISS, serviceObj.getEventStatus());
+ assertEquals(0, serviceObj.getSlaProcessed()); //Job switching to running is only partially
+ //sla processed. so state = zero
job = _createSLARegBean("wa1", AppType.WORKFLOW_ACTION);
slas.addRegistrationEvent(job);
@@ -101,7 +101,6 @@ public class TestSLAJobEventListener ext
listener.onWorkflowActionEvent(wae);
serviceObj = slas.getSLACalculator().get("wa1");
// check that start sla has been calculated
- assertTrue(serviceObj.isStartProcessed());
assertEquals(EventStatus.START_MISS, serviceObj.getEventStatus());
job = _createSLARegBean("cj1", AppType.COORDINATOR_JOB);
@@ -114,10 +113,10 @@ public class TestSLAJobEventListener ext
listener.onCoordinatorJobEvent(cje);
// Since serviceObj is removed from memory after END stage
- SLACalculatorBean calc = Services.get().get(JPAService.class).execute(new SLACalculatorGetJPAExecutor("cj1"));
SLASummaryBean summary = Services.get().get(JPAService.class).execute(new SLASummaryGetJPAExecutor("cj1"));
// check that end sla has been calculated
- assertTrue(calc.isEndProcessed());
+ assertEquals(2, summary.getSlaProcessed()); //Job in terminal state has finished
+ //sla processing. so state = 2
assertEquals(EventStatus.END_MET, summary.getEventStatus());
job = _createSLARegBean("ca1", AppType.COORDINATOR_ACTION);
@@ -127,10 +126,9 @@ public class TestSLAJobEventListener ext
CoordinatorActionEvent cae = new CoordinatorActionEvent("ca1", "cj1", CoordinatorAction.Status.KILLED, "user1",
"coord-app-name1", null, actualEnd, null);
listener.onCoordinatorActionEvent(cae);
- calc = Services.get().get(JPAService.class).execute(new SLACalculatorGetJPAExecutor("ca1"));
summary = Services.get().get(JPAService.class).execute(new SLASummaryGetJPAExecutor("ca1"));
// check that start sla has been calculated
- assertTrue(calc.isEndProcessed());
+ assertEquals(2, summary.getSlaProcessed());
assertEquals(EventStatus.END_MISS, summary.getEventStatus());
}
Modified: oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAService.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAService.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAService.java (original)
+++ oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAService.java Tue May 28 18:44:17 2013
@@ -102,14 +102,19 @@ public class TestSLAService extends XDat
SLARegistrationBean sla2 = _createSLARegistration("job-3", AppType.COORDINATOR_JOB);
sla2.setExpectedStart(new Date(System.currentTimeMillis() + 1 * 3600 * 1000)); //1 hour ahead only for testing
sla2.setExpectedEnd(new Date(System.currentTimeMillis() - 2 * 3600 * 1000)); //2 hours back
+ sla2.setExpectedDuration(10); //to process duration too
slas.addRegistrationEvent(sla2);
assertEquals(3, slas.getSLACalculator().size());
- slas.addStatusEvent(sla2.getJobId(), CoordinatorJob.Status.SUCCEEDED.name(), EventStatus.SUCCESS, new Date(),
+ Date startTime = new Date();
+ slas.addStatusEvent(sla2.getJobId(), CoordinatorJob.Status.RUNNING.name(), EventStatus.STARTED, startTime,
+ null);
+ slas.addStatusEvent(sla2.getJobId(), CoordinatorJob.Status.SUCCEEDED.name(), EventStatus.SUCCESS, startTime,
new Date());
slas.runSLAWorker();
ehs.new EventWorker().run();
assertTrue(output.toString().contains(sla1.getJobId() + " Sla START - MET!!!"));
assertTrue(output.toString().contains(sla2.getJobId() + " Sla END - MISS!!!"));
+ assertTrue(output.toString().contains(sla2.getJobId() + " Sla DURATION - MET!!!"));
output.setLength(0);
// test same job multiple events (start-miss, end-miss) through regular check
@@ -117,10 +122,8 @@ public class TestSLAService extends XDat
sla2.setExpectedStart(new Date(System.currentTimeMillis() - 2 * 3600 * 1000)); //2 hours back
sla2.setExpectedEnd(new Date(System.currentTimeMillis() - 1 * 3600 * 1000)); //1 hour back
slas.addRegistrationEvent(sla2);
- assertEquals(3, slas.getSLACalculator().size()); // remains same as before since
- // sla-END stage job is removed from map
+ assertEquals(3, slas.getSLACalculator().size()); // tests job slaProcessed == 7 removed from map
slas.runSLAWorker();
- assertEquals(2, ehs.getEventQueue().size());
ehs.new EventWorker().run();
System.out.println(output);
assertTrue(output.toString().contains(sla2.getJobId() + " Sla START - MISS!!!"));
@@ -132,7 +135,7 @@ public class TestSLAService extends XDat
sla1.setExpectedStart(new Date(System.currentTimeMillis() + 1 * 3600 * 1000)); //1 hour ahead
sla1.setExpectedEnd(new Date(System.currentTimeMillis() + 2 * 3600 * 1000)); //2 hours ahead
slas.addRegistrationEvent(sla1);
- assertEquals(3, slas.getSLACalculator().size());
+ assertEquals(4, slas.getSLACalculator().size());
slas.addStatusEvent(sla1.getJobId(), CoordinatorAction.Status.RUNNING.name(), EventStatus.STARTED, new Date(),
new Date());
slas.addStatusEvent(sla1.getJobId(), CoordinatorAction.Status.SUCCEEDED.name(), EventStatus.SUCCESS,
Modified: oozie/trunk/core/src/test/java/org/apache/oozie/test/XTestCase.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/test/XTestCase.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/core/src/test/java/org/apache/oozie/test/XTestCase.java (original)
+++ oozie/trunk/core/src/test/java/org/apache/oozie/test/XTestCase.java Tue May 28 18:44:17 2013
@@ -65,7 +65,6 @@ import org.apache.oozie.service.Partitio
import org.apache.oozie.service.ServiceException;
import org.apache.oozie.service.Services;
import org.apache.oozie.service.URIHandlerService;
-import org.apache.oozie.sla.SLACalculatorBean;
import org.apache.oozie.sla.SLARegistrationBean;
import org.apache.oozie.sla.SLASummaryBean;
import org.apache.oozie.store.CoordinatorStore;
@@ -722,13 +721,6 @@ public abstract class XTestCase extends
entityManager.remove(w);
}
- q = entityManager.createQuery("select OBJECT(w) from SLACalculatorBean w");
- List<SLACalculatorBean> scBeans = q.getResultList();
- int scSize = scBeans.size();
- for (SLACalculatorBean w : scBeans) {
- entityManager.remove(w);
- }
-
q = entityManager.createQuery("select OBJECT(w) from SLASummaryBean w");
List<SLASummaryBean> sdBeans = q.getResultList();
int ssSize = sdBeans.size();
@@ -746,7 +738,6 @@ public abstract class XTestCase extends
log.info(baSize + " entries in BUNDLE_ACTIONS removed from DB!");
log.info(slaSize + " entries in SLA_EVENTS removed from DB!");
log.info(slaRegSize + " entries in SLA_REGISTRATION removed from DB!");
- log.info(scSize + " entries in SLA_CALCULATOR removed from DB!");
log.info(ssSize + " entries in SLA_SUMMARY removed from DB!");
}
Modified: oozie/trunk/release-log.txt
URL: http://svn.apache.org/viewvc/oozie/trunk/release-log.txt?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/release-log.txt (original)
+++ oozie/trunk/release-log.txt Tue May 28 18:44:17 2013
@@ -1,5 +1,6 @@
-- Oozie 4.1.0 release (trunk - unreleased)
+OOZIE-1361 Remove SLACalculatorBean and add columns to SummaryBean indicating events processed and sla processed (mona)
OOZIE-674 resolveInstanceRange doesn't work for EL extensions (shwethags via mona)
OOZIE-1384 Make Uber Mode not the default (rkanter via virag)
OOZIE-1386 NPE in XOozieClient if fs.default.name is not defined but fs.defaultFS is (wypoon via rkanter)
Modified: oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java
URL: http://svn.apache.org/viewvc/oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java?rev=1487035&r1=1487034&r2=1487035&view=diff
==============================================================================
--- oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java (original)
+++ oozie/trunk/tools/src/main/java/org/apache/oozie/tools/OozieDBCLI.java Tue May 28 18:44:17 2013
@@ -793,7 +793,6 @@ public class OozieDBCLI {
args.add("org.apache.oozie.client.rest.JsonBundleJob");
args.add("org.apache.oozie.BundleJobBean");
args.add("org.apache.oozie.BundleActionBean");
- args.add("org.apache.oozie.sla.SLACalculatorBean");
args.add("org.apache.oozie.sla.SLASummaryBean");
args.add("org.apache.oozie.util.db.ValidateConnectionBean");
return args.toArray(new String[args.size()]);