public static String genErrorMessage(JobSpec aJob, String error) { String jobName = aJob.getName(); String aMessage = String.format("Error when running script %s: %s", jobName, error); return aMessage; }
private void doStep(JobSpec jobSpec, String query, Statement statement) throws SQLException { try { LOG.info("doing job...:" + jobSpec.getName()); LOG.debug("Executing query...:" + query); boolean isResultSet = statement.execute(query); if (isResultSet) { LOG.debug("Query returned result set."); } else { LOG.debug(String.format("Query updated %d items", statement.getUpdateCount())); } } catch (SQLException ex) { LOG.error("Attempted query: " + query); throw ex; } }
public void updateJob(JobSpec jobSpec) { try { super.updateJob(jobSpec); LOG.info("Updated job:" + jobSpec.getName()); } catch (BackendException e) { throw new RuntimeException("Exception when updating job:" + e.getMessage()); } }
public void begin() { String jobName = plannedJob.getJobSpec().getName(); reporting.mark("chronos.query." + jobName + "." + "launched"); start.set(System.currentTimeMillis()); dao.updateJobRun(this); }
public void addToQueue(PlannedJob aJob) { try { super.addToQueue(aJob); LOG.info("Queued job:" + aJob.getJobSpec().getName()); } catch (BackendException e) { throw new RuntimeException("Exception when queueing job:" + e.getMessage()); } }
public long createJob(JobSpec jobSpec) { long id = -1L; try { id = super.createJob(jobSpec); jobSpec.setId(id); LOG.info("Created job:" + jobSpec.getName() + " with id: " + jobSpec.getId()); } catch (BackendException e) { throw new RuntimeException("Exception when creating job:" + e.getMessage()); } return id; }
message.setSubject("Chronos " + currJob.getName()); Multipart multipart = new MimeMultipart(); attachmentPart.setDataHandler(new DataHandler(attachment)); String fileName = String.format("%s-%s.tsv", currJob.getName(), DT_FMT.print(plannedJob.getReplaceTime())); attachmentPart.setFileName(fileName); multipart.addBodyPart(attachmentPart);
public void updateJobRun(DateTime dt, CallableJob cj) throws BackendException { Connection conn = null; PreparedStatement stat = null; try { conn = newConnection(); stat = conn.prepareStatement( String.format("UPDATE %s SET dt = ?, callable_job = ?, name = ?, `code` = ?, status = ?, exception = ?," + " start = ?, finish = ? WHERE id = ?", jobRunTableName)); int i = 1; stat.setTimestamp(i++, new Timestamp(dt.getMillis())); stat.setString(i++, objToString(cj)); stat.setString(i++, cj.getPlannedJob().getJobSpec().getName()); stat.setString(i++, cj.getPlannedJob().getJobSpec().getCode()); stat.setInt(i++, cj.getStatus().get()); stat.setString(i++, cj.getExceptionMessage() != null ? cj.getExceptionMessage().get() : ""); stat.setTimestamp(i++, new Timestamp(cj.getStart().get())); stat.setTimestamp(i++, new Timestamp(cj.getFinish().get())); stat.setLong(i++, cj.getJobId()); int rows = stat.executeUpdate(); LOG.info(String.format("Rows updated: %d", rows)); } catch (SQLException | IOException ex) { throw new BackendException(ex); } finally { closeConnections(conn, stat); } }
protected void end() { String jobName = plannedJob.getJobSpec().getName(); finish.set(System.currentTimeMillis()); reporting.histogram("chronos.query." + jobName + "." + "querytime", finish.get() - start.get()); dao.updateJobRun(this); final Long jobId = plannedJob.getJobSpec().getId(); List<JobSpec> children = dao.getChildren(jobId); for (JobSpec aChild : children) { dao.addToQueue(new PlannedJob(aChild, plannedJob.getReplaceTime())); } }
stat.setTimestamp(i++, new Timestamp(dt.getMillis())); stat.setString(i++, objToString(cj)); stat.setString(i++, cj.getPlannedJob().getJobSpec().getName()); stat.setString(i++, cj.getPlannedJob().getJobSpec().getCode()); stat.setInt(i++, cj.getStatus().get());
stat.setString(i++, job.getUser()); stat.setString(i++, job.getPassword()); stat.setString(i++, job.getName()); stat.setString(i++, job.getDescription()); stat.setString(i++, job.getType().toString());
protected void handleException(Exception ex) { String jobName = plannedJob.getJobSpec().getName(); LOG.error(ex); setExceptionMessage(ex.getMessage()); JobSpec spec = plannedJob.getJobSpec(); if (spec.getStatusEmail() != null && spec.getStatusEmail().size() > 0 && !spec.getStatusEmail().get(0).equals("")) { for (String statusEmail : spec.getStatusEmail()) { MailInfo errMailInfo = new MailInfo(mailInfo.from, mailInfo.fromName, statusEmail, String.format("%s creator", jobName)); AgentConsumer.sendErrorReport(spec, replacedCode, ex, jobId, hostname, errMailInfo, session, attemptNumber); } } else { AgentConsumer.sendErrorReport(spec, replacedCode, ex, jobId, hostname, mailInfo, session, attemptNumber); } reporting.mark("chronos.query." + jobName + "." + "failed"); setStatus(1); }
final String jobName = pj.getJobSpec().getName(); if (!pj.getJobSpec().getShouldRerun()) { continue;
@Override protected void callInternal() throws BackendException { JobSpec currJob = plannedJob.getJobSpec(); String jobName = currJob.getName(); try (Connection conn = getConnectionForJobSpec(currJob)) { int step = 0; try (Statement statement = conn.createStatement()) { while (step < parts.length) { doStep(currJob, parts[step], statement); step++; } } catch (SQLException ex) { throw new BackendException(ex); } if (replacedReportQuery != null && !replacedReportQuery.isEmpty()) { PersistentResultSet results = doReportStep(conn, replacedReportQuery); String content = createMessageContent (results, currJob, this.getReplacedReportQuery()); DataSource attachment = createAttachment(results); if (reportRootPath != null) { writeReportToLocal(results, reportRootPath, plannedJob); } sendEmail(mailInfo, attachment, content, currJob); } } catch (Exception ex) { throw new RuntimeException(ex); } reporting.mark("chronos.query." + jobName + "." + "passed"); setStatus(0); }
@Override protected void callInternal() throws BackendException { String jobName = plannedJob.getJobSpec().getName(); String aCommand = replacedCode; try { int exitCode = runner.exec(aCommand); if (exitCode == BashRunner.SUCCESS) { reporting.mark("chronos.query." + jobName + "." + "passed"); setStatus(0); } else { String error = runner.getError(); String aMessage = genErrorMessage(plannedJob.getJobSpec(), error); handleException(new Exception(aMessage)); } } catch (BackendException ex) { handleException(ex); } finally { runner.clean(); } }
} catch (Exception ex) { ex.printStackTrace(); } JobNode expected = new JobNode(parent.getName(), null); JobNode eChild = new JobNode(childJob.getName(), parent.getName()); expected.getChildren().add(eChild); JobNode eChild2 = new JobNode(childJob2.getName(), parent.getName()); expected.getChildren().add(eChild2); JobNode eChildChild = new JobNode(childChildJob.getName(), childJob.getName()); eChild.getChildren().add(eChildChild); assertEquals(expected, actual); expected = new JobNode(childJob.getName(), null); expected.getChildren().add(eChildChild); actual = dao.getTree(childJob.getId(), null);