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/06/14 23:29:00 UTC
svn commit: r1493254 - in /oozie/trunk: ./
core/src/main/java/org/apache/oozie/command/wf/
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/servlet/ core/src/main/jav...
Author: mona
Date: Fri Jun 14 21:29:00 2013
New Revision: 1493254
URL: http://svn.apache.org/r1493254
Log:
OOZIE-1418 Fix bugs around ActionKillX not setting end time, V2SLAServlet and exception handling for event threads (mona)
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/ActionKillXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLARegistrationGetJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/service/EventHandlerService.java
oozie/trunk/core/src/main/java/org/apache/oozie/servlet/SLAServlet.java
oozie/trunk/core/src/main/java/org/apache/oozie/servlet/V2SLAServlet.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLAOperations.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/service/SLAService.java
oozie/trunk/core/src/test/java/org/apache/oozie/event/TestEventGeneration.java
oozie/trunk/core/src/test/java/org/apache/oozie/servlet/TestV2SLAServlet.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java
oozie/trunk/release-log.txt
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/ActionKillXCommand.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/ActionKillXCommand.java?rev=1493254&r1=1493253&r2=1493254&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/ActionKillXCommand.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/ActionKillXCommand.java Fri Jun 14 21:29:00 2013
@@ -130,6 +130,7 @@ public class ActionKillXCommand extends
wfAction.resetPending();
wfAction.setStatus(WorkflowActionBean.Status.KILLED);
+ wfAction.setEndTime(new Date());
updateList.add(wfAction);
wfJob.setLastModifiedTime(new Date());
@@ -147,6 +148,8 @@ public class ActionKillXCommand extends
wfAction.setStatus(WorkflowActionBean.Status.FAILED);
wfAction.setErrorInfo(ex.getErrorCode().toString(),
"KILL COMMAND FAILED - exception while executing job kill");
+ wfAction.setEndTime(new Date());
+
wfJob.setStatus(WorkflowJobBean.Status.KILLED);
updateList.add(wfAction);
wfJob.setLastModifiedTime(new Date());
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLARegistrationGetJPAExecutor.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLARegistrationGetJPAExecutor.java?rev=1493254&r1=1493253&r2=1493254&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLARegistrationGetJPAExecutor.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/sla/SLARegistrationGetJPAExecutor.java Fri Jun 14 21:29:00 2013
@@ -17,6 +17,8 @@
*/
package org.apache.oozie.executor.jpa.sla;
+import java.util.List;
+
import javax.persistence.EntityManager;
import javax.persistence.Query;
@@ -41,18 +43,27 @@ public class SLARegistrationGetJPAExecut
return "SLARegistrationGetJPAExecutor";
}
+ @SuppressWarnings("unchecked")
@Override
public SLARegistrationBean execute(EntityManager em) throws JPAExecutorException {
+ List<SLARegistrationBean> regBeans;
try {
Query q = em.createNamedQuery("GET_SLA_REG_ALL");
q.setParameter("id", id);
- SLARegistrationBean slaRegBean= (SLARegistrationBean) q.getSingleResult();
- slaRegBean.setSlaConfig(slaRegBean.getSlaConfig());
- return slaRegBean;
+ regBeans = q.getResultList();
}
catch (Exception e) {
throw new JPAExecutorException(ErrorCode.E0603, e.getMessage(), e);
}
+ SLARegistrationBean slaRegBean;
+ if (regBeans != null && regBeans.size() > 0) {
+ slaRegBean = regBeans.get(0);
+ slaRegBean.setSlaConfig(slaRegBean.getSlaConfig());
+ return slaRegBean;
+ }
+ else {
+ throw new JPAExecutorException(ErrorCode.E0604, id);
+ }
}
}
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/service/EventHandlerService.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/service/EventHandlerService.java?rev=1493254&r1=1493253&r2=1493254&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/service/EventHandlerService.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/service/EventHandlerService.java Fri Jun 14 21:29:00 2013
@@ -222,27 +222,39 @@ public class EventHandlerService impleme
if (Thread.currentThread().isInterrupted()) {
return;
}
- if (!eventQueue.isEmpty()) {
- Set<Event> work = eventQueue.pollBatch();
- for (Event event : work) {
- MessageType msgType = event.getMsgType();
- List<?> listeners = listenerMap.get(msgType);
- if (listeners != null) {
- Iterator<?> iter = listeners.iterator();
- while (iter.hasNext()) {
- if (msgType == MessageType.JOB) {
- invokeJobEventListener((JobEventListener) iter.next(), (JobEvent) event);
- }
- else if (msgType == MessageType.SLA) {
- invokeSLAEventListener((SLAEventListener) iter.next(), (SLAEvent) event);
- }
- else {
- iter.next();
+ try {
+ if (!eventQueue.isEmpty()) {
+ Set<Event> work = eventQueue.pollBatch();
+ for (Event event : work) {
+ MessageType msgType = event.getMsgType();
+ List<?> listeners = listenerMap.get(msgType);
+ if (listeners != null) {
+ Iterator<?> iter = listeners.iterator();
+ while (iter.hasNext()) {
+ try {
+ if (msgType == MessageType.JOB) {
+ invokeJobEventListener((JobEventListener) iter.next(), (JobEvent) event);
+ }
+ else if (msgType == MessageType.SLA) {
+ invokeSLAEventListener((SLAEventListener) iter.next(), (SLAEvent) event);
+ }
+ else {
+ iter.next();
+ }
+ }
+ catch (Throwable error) {
+ XLog.getLog(EventHandlerService.class).debug("Throwable in EventWorker thread run : ",
+ error);
+ }
}
}
}
}
}
+ catch (Throwable error) {
+ XLog.getLog(EventHandlerService.class).debug("Throwable in EventWorker thread run : ",
+ error);
+ }
}
private void invokeJobEventListener(JobEventListener jobListener, JobEvent event) {
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/servlet/SLAServlet.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/servlet/SLAServlet.java?rev=1493254&r1=1493253&r2=1493254&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/servlet/SLAServlet.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/servlet/SLAServlet.java Fri Jun 14 21:29:00 2013
@@ -67,7 +67,7 @@ public class SLAServlet extends JsonRest
}
public SLAServlet(String instrumentationName, ResourceInfo... resourcesInfo) {
- super(INSTRUMENTATION_NAME, resourcesInfo);
+ super(instrumentationName, resourcesInfo);
}
/**
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/servlet/V2SLAServlet.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/servlet/V2SLAServlet.java?rev=1493254&r1=1493253&r2=1493254&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/servlet/V2SLAServlet.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/servlet/V2SLAServlet.java Fri Jun 14 21:29:00 2013
@@ -20,8 +20,8 @@ package org.apache.oozie.servlet;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
+import java.text.ParseException;
import java.util.Arrays;
-import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -40,6 +40,7 @@ import org.apache.oozie.executor.jpa.sla
import org.apache.oozie.service.JPAService;
import org.apache.oozie.service.Services;
import org.apache.oozie.sla.SLASummaryBean;
+import org.apache.oozie.util.DateUtils;
import org.apache.oozie.util.XLog;
import org.json.simple.JSONObject;
@@ -120,10 +121,10 @@ public class V2SLAServlet extends SLASer
filter.setAppName(filterList.get(OozieClient.FILTER_SLA_APPNAME).get(0));
}
if (filterList.containsKey(OozieClient.FILTER_SLA_NOMINAL_START)) {
- filter.setNominalStart(new Date(Long.parseLong(filterList.get(OozieClient.FILTER_SLA_NOMINAL_START).get(0))));
+ filter.setNominalStart(DateUtils.parseDateUTC(filterList.get(OozieClient.FILTER_SLA_NOMINAL_START).get(0)));
}
if (filterList.containsKey(OozieClient.FILTER_SLA_NOMINAL_END)) {
- filter.setNominalEnd(new Date(Long.parseLong(filterList.get(OozieClient.FILTER_SLA_NOMINAL_END).get(0))));
+ filter.setNominalEnd(DateUtils.parseDateUTC(filterList.get(OozieClient.FILTER_SLA_NOMINAL_END).get(0)));
}
if (filter.getAppName() == null && filter.getJobId() == null && filter.getParentId() == null) {
@@ -150,6 +151,11 @@ public class V2SLAServlet extends SLASer
throw new XServletException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, ErrorCode.E0307,
"Unsupported Encoding", e);
}
+ catch (ParseException e) {
+ throw new XServletException(HttpServletResponse.SC_BAD_REQUEST, ErrorCode.E0303,
+ filterString, e);
+ }
+
}
}
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLAOperations.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLAOperations.java?rev=1493254&r1=1493253&r2=1493254&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLAOperations.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLAOperations.java Fri Jun 14 21:29:00 2013
@@ -163,7 +163,10 @@ public class SLAOperations {
JPAService jpaService = Services.get().get(JPAService.class);
SLAService slaService = Services.get().get(SLAService.class);
try {
- slaService.updateRegistrationEvent(jpaService.execute(new SLARegistrationGetJPAExecutor(jobId)));
+ SLARegistrationBean reg = jpaService.execute(new SLARegistrationGetJPAExecutor(jobId));
+ if (reg != null) { //handle coord rerun with different config without sla
+ slaService.updateRegistrationEvent(reg);
+ }
}
catch (ServiceException e) {
throw new CommandException(ErrorCode.E1007, " id " + jobId, e.getMessage(), e);
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/sla/service/SLAService.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/sla/service/SLAService.java?rev=1493254&r1=1493253&r2=1493254&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/sla/service/SLAService.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/sla/service/SLAService.java Fri Jun 14 21:29:00 2013
@@ -112,7 +112,12 @@ public class SLAService implements Servi
if (Thread.currentThread().isInterrupted()) {
return;
}
- calc.updateAllSlaStatus();
+ try {
+ calc.updateAllSlaStatus();
+ }
+ catch (Throwable error) {
+ XLog.getLog(SLAService.class).debug("Throwable in SLAWorker thread run : ", error);
+ }
}
}
Modified: oozie/trunk/core/src/test/java/org/apache/oozie/event/TestEventGeneration.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/event/TestEventGeneration.java?rev=1493254&r1=1493253&r2=1493254&view=diff
==============================================================================
--- oozie/trunk/core/src/test/java/org/apache/oozie/event/TestEventGeneration.java (original)
+++ oozie/trunk/core/src/test/java/org/apache/oozie/event/TestEventGeneration.java Fri Jun 14 21:29:00 2013
@@ -380,6 +380,7 @@ public class TestEventGeneration extends
// Killing job
action.setStatus(WorkflowAction.Status.KILLED);
action.setPendingOnly();
+ action.setEndTime(null); //its already set by XTestCase add action record method above
jpaService.execute(new WorkflowActionUpdateJPAExecutor(action));
new ActionKillXCommand(action.getId()).call();
action = jpaService.execute(wfActionGetCmd);
@@ -393,6 +394,8 @@ public class TestEventGeneration extends
assertEquals(job.getUser(), event.getUser());
assertEquals(action.getName(), event.getAppName());
assertEquals(action.getStartTime(), event.getStartTime());
+ assertNotNull(action.getEndTime());
+ assertNotNull(event.getEndTime());
assertEquals(action.getEndTime(), event.getEndTime());
assertEquals(0, queue.size());
Modified: oozie/trunk/core/src/test/java/org/apache/oozie/servlet/TestV2SLAServlet.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/servlet/TestV2SLAServlet.java?rev=1493254&r1=1493253&r2=1493254&view=diff
==============================================================================
--- oozie/trunk/core/src/test/java/org/apache/oozie/servlet/TestV2SLAServlet.java (original)
+++ oozie/trunk/core/src/test/java/org/apache/oozie/servlet/TestV2SLAServlet.java Fri Jun 14 21:29:00 2013
@@ -90,16 +90,13 @@ public class TestV2SLAServlet extends Da
assertSLAJSONResponse(array, 2, 2, "2-", "-W", null, nominalTime2, "testapp-2", AppType.WORKFLOW_JOB,
currentTime);
- queryParams.put(RestConstants.JOBS_FILTER_PARAM, "app_name=testapp-3;nominal_start="
- + DateUtils.parseDateUTC("2012-06-03T016:00Z").getTime());
+ queryParams.put(RestConstants.JOBS_FILTER_PARAM, "app_name=testapp-3;nominal_start=2012-06-03T016:00Z");
array = getSLAJSONResponse(queryParams);
// Matches 3-6 elements - 3-3-W 3-4-W 3-5-W 3-6-W
assertSLAJSONResponse(array, 3, 6, "3-", "-W", "2-C", nominalTime3, "testapp-3", AppType.WORKFLOW_JOB,
currentTime);
- queryParams.put(RestConstants.JOBS_FILTER_PARAM, "parent_id=2-C;nominal_start="
- + DateUtils.parseDateUTC("2012-06-03T016:00Z").getTime() + ";nominal_end="
- + DateUtils.parseDateUTC("2012-06-03T017:00Z").getTime());
+ queryParams.put(RestConstants.JOBS_FILTER_PARAM, "parent_id=2-C;nominal_start=2012-06-03T016:00Z;nominal_end=2012-06-03T017:00Z");
array = getSLAJSONResponse(queryParams);
// Matches 3rd and 4th element - 3-3-W 3-4-W
assertSLAJSONResponse(array, 3, 4, "3-", "-W", "2-C", nominalTime3, "testapp-3", AppType.WORKFLOW_JOB,
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=1493254&r1=1493253&r2=1493254&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 Fri Jun 14 21:29:00 2013
@@ -26,15 +26,20 @@ import org.apache.hadoop.conf.Configurat
import org.apache.hadoop.fs.Path;
import org.apache.oozie.AppType;
import org.apache.oozie.CoordinatorActionBean;
+import org.apache.oozie.CoordinatorJobBean;
+import org.apache.oozie.ErrorCode;
import org.apache.oozie.WorkflowJobBean;
import org.apache.oozie.client.CoordinatorAction;
+import org.apache.oozie.client.CoordinatorJob;
import org.apache.oozie.client.OozieClient;
import org.apache.oozie.client.WorkflowJob;
import org.apache.oozie.client.event.SLAEvent.SLAStatus;
import org.apache.oozie.client.event.SLAEvent.EventStatus;
+import org.apache.oozie.client.rest.RestConstants;
import org.apache.oozie.command.CommandException;
import org.apache.oozie.command.coord.CoordActionStartXCommand;
import org.apache.oozie.command.coord.CoordKillXCommand;
+import org.apache.oozie.command.coord.CoordRerunXCommand;
import org.apache.oozie.command.coord.CoordSubmitXCommand;
import org.apache.oozie.command.wf.KillXCommand;
import org.apache.oozie.command.wf.ReRunXCommand;
@@ -282,6 +287,27 @@ public class TestSLAEventGeneration exte
}
+ /**
+ * Test coord rerun with no SLA config works as before
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testCoordRerunNoSLA() throws Exception {
+ CoordinatorJobBean job = this.addRecordToCoordJobTable(CoordinatorJob.Status.SUCCEEDED, false, false);
+ addRecordToCoordActionTable(job.getId(), 1, CoordinatorAction.Status.FAILED, "coord-rerun-action1.xml", 0);
+
+ try {
+ new CoordRerunXCommand(job.getId(), RestConstants.JOB_COORD_RERUN_DATE, "2009-12-15T01:00Z", false, true)
+ .call();
+ }
+ catch (CommandException ce) {
+ if (ce.getErrorCode() == ErrorCode.E0603) {
+ fail("Coord Rerun with no SLA should not throw 'no job found error' from SLA Summary table");
+ }
+ }
+ }
+
@Test
public void testSLASchema1BackwardCompatibility() throws Exception {
EventHandlerService ehs = services.get(EventHandlerService.class);
Modified: oozie/trunk/release-log.txt
URL: http://svn.apache.org/viewvc/oozie/trunk/release-log.txt?rev=1493254&r1=1493253&r2=1493254&view=diff
==============================================================================
--- oozie/trunk/release-log.txt (original)
+++ oozie/trunk/release-log.txt Fri Jun 14 21:29:00 2013
@@ -1,5 +1,6 @@
-- Oozie 4.1.0 release (trunk - unreleased)
+OOZIE-1418 Fix bugs around ActionKillX not setting end time, V2SLAServlet and exception handling for event threads (mona)
OOZIE-1365 The hive action popup in the web UI is broken when externalChildIDs is empty string (michalisk via rkanter)
OOZIE-1412 Webapp contains all sharedlib dependencies after launcher refactor (rohini)
OOZIE-1414 Configuring Oozie for HTTPS still allows HTTP connections to all resources (rkanter)