/** * @param evtType Event type. * @param msg Message. */ private void recordEvent(int evtType, @Nullable String msg) { assert ctx.event().isRecordable(evtType); assert !internal; JobEvent evt = new JobEvent(); evt.jobId(ses.getJobId()); evt.message(msg); evt.node(ctx.discovery().localNode()); evt.taskName(ses.getTaskName()); evt.taskClassName(ses.getTaskClassName()); evt.taskSessionId(ses.getId()); evt.type(evtType); evt.taskNode(taskNode); evt.taskSubjectId(ses.subjectId()); ctx.event().record(evt); }
/** * @param je Job event. * @param type Event's type. * @param id Event id. * @param name Event name. * @param nid Event node ID. * @param ts Event timestamp. * @param msg Event message. * @param shortDisplay Shortened version of {@code toString()} result. * @return Visor data transfer object for event. */ protected VisorGridEvent jobEvent(JobEvent je, int type, IgniteUuid id, String name, UUID nid, long ts, String msg, String shortDisplay) { return new VisorGridJobEvent(type, id, name, nid, ts, msg, shortDisplay, je.taskName(), je.taskClassName(), je.taskSessionId(), je.jobId()); }
ctx.writeEvent(writer, discoveryEvent); JobEvent jobEvent = new JobEvent(node, msg, evtType); jobEvent.jobId(igniteUuid); jobEvent.taskClassName("taskClsName"); jobEvent.taskName("taskName"); jobEvent.taskNode(node); jobEvent.taskSessionId(igniteUuid); jobEvent.taskSubjectId(uuid); ctx.writeEvent(writer, jobEvent);
/** * Filter events containing visor in it's name. * * @param e Event * @return {@code true} if not contains {@code visor} in task name. */ private boolean filterByTaskSessionId(Event e, IgniteUuid taskSesId) { if (e.getClass().equals(TaskEvent.class)) { TaskEvent te = (TaskEvent)e; return te.taskSessionId().equals(taskSesId); } if (e.getClass().equals(JobEvent.class)) { JobEvent je = (JobEvent)e; return je.taskSessionId().equals(taskSesId); } return true; }
/** * @throws Exception If test failed. */ @Test public void testCheckpointEvents() throws Exception { long tstamp = startTimestamp(); generateEvents(null, new GridAllCheckpointEventsTestJob()).get(); List<Event> evts = pullEvents(tstamp, 11); assertEvent(evts.get(0).type(), EVT_TASK_STARTED, evts); assertEvent(evts.get(1).type(), EVT_JOB_MAPPED, evts); assertEvent(evts.get(2).type(), EVT_JOB_QUEUED, evts); assertEvent(evts.get(3).type(), EVT_JOB_STARTED, evts); assertEvent(evts.get(4).type(), EVT_CHECKPOINT_SAVED, evts); assertEvent(evts.get(5).type(), EVT_CHECKPOINT_LOADED, evts); assertEvent(evts.get(6).type(), EVT_CHECKPOINT_REMOVED, evts); assertEvent(evts.get(7).type(), EVT_JOB_RESULTED, evts); assertEvent(evts.get(8).type(), EVT_TASK_REDUCED, evts); assertEvent(evts.get(9).type(), EVT_TASK_FINISHED, evts); assertEvent(evts.get(10).type(), EVT_JOB_FINISHED, evts); assertNotNull(((JobEvent)evts.get(7)).resultPolicy()); assertEquals(WAIT, ((JobEvent)evts.get(7)).resultPolicy()); }
@Override public boolean apply(UUID nodeId, JobEvent evt) { info("Event from " + nodeId + " [" + evt.shortDisplay() + ']'); assertEquals(EVT_JOB_STARTED, evt.type()); nodeIds.add(nodeId); cnt.incrementAndGet(); latch.countDown(); return true; } },
@Override public boolean apply(JobEvent evt) { return !"exclude".equals(evt.taskName()); } },
@Override public boolean apply(Event evt) { JobEvent evt0 = (JobEvent)evt; assert evtSubjId == null; evtSubjId = evt0.taskSubjectId(); return false; } }, EventType.EVT_JOB_STARTED);
writer.writeString(event0.taskName()); writer.writeString(event0.taskClassName()); writer.writeObject(event0.taskSessionId()); writer.writeObject(event0.jobId()); writeNode(writer, event0.taskNode()); writer.writeUuid(event0.taskSubjectId());
/** * @param je Job event. * @param type Event's type. * @param id Event id. * @param name Event name. * @param nid Event node ID. * @param ts Event timestamp. * @param msg Event message. * @param shortDisplay Shortened version of {@code toString()} result. * @return Visor data transfer object for event. */ protected VisorGridEvent jobEvent(JobEvent je, int type, IgniteUuid id, String name, UUID nid, long ts, String msg, String shortDisplay) { return new VisorGridJobEvent(type, id, name, nid, ts, msg, shortDisplay, je.taskName(), je.taskClassName(), je.taskSessionId(), je.jobId()); }
@Override public void onEvent(Event evt) { if (evt.type() == EVT_TASK_FAILED || evt.type() == EVT_TASK_FINISHED) perTaskBalancers.remove(((TaskEvent)evt).taskSessionId()); else if (evt.type() == EVT_JOB_MAPPED) { RoundRobinPerTaskLoadBalancer balancer = perTaskBalancers.get(((JobEvent)evt).taskSessionId()); if (balancer != null) balancer.onMapped(); } } };
/** * @throws Exception If test failed. */ @Test public void testSuccessTask() throws Exception { generateEvents(null, new GridAllEventsSuccessTestJob()).get(); long tstamp = startTimestamp(); generateEvents(null, new GridAllEventsSuccessTestJob()).get(); List<Event> evts = pullEvents(tstamp, 10); assertEvent(evts.get(0).type(), EVT_TASK_STARTED, evts); assertEvent(evts.get(1).type(), EVT_JOB_MAPPED, evts); assertEvent(evts.get(2).type(), EVT_JOB_QUEUED, evts); assertEvent(evts.get(3).type(), EVT_JOB_STARTED, evts); assertEvent(evts.get(4).type(), EVT_CHECKPOINT_SAVED, evts); assertEvent(evts.get(5).type(), EVT_CHECKPOINT_REMOVED, evts); assertEvent(evts.get(6).type(), EVT_JOB_RESULTED, evts); assertEvent(evts.get(7).type(), EVT_TASK_REDUCED, evts); assertEvent(evts.get(8).type(), EVT_TASK_FINISHED, evts); assertEvent(evts.get(9).type(), EVT_JOB_FINISHED, evts); assertNotNull(((JobEvent)evts.get(6)).resultPolicy()); assertEquals(WAIT, ((JobEvent)evts.get(6)).resultPolicy()); }
/** * Filter events containing visor in it's name. * * @param e Event * @param taskName Task name to filter of events. * @return {@code true} if not contains {@code visor} in task name. */ private boolean filterByTaskName(Event e, String taskName) { String compareTaskName = taskName.toLowerCase(); if (e.getClass().equals(TaskEvent.class)) { TaskEvent te = (TaskEvent)e; return containsInTaskName(te.taskName(), te.taskClassName(), compareTaskName); } if (e.getClass().equals(JobEvent.class)) { JobEvent je = (JobEvent)e; return containsInTaskName(je.taskName(), je.taskName(), compareTaskName); } if (e.getClass().equals(DeploymentEvent.class)) { DeploymentEvent de = (DeploymentEvent)e; return de.alias().toLowerCase().contains(compareTaskName); } return true; }
@Override public boolean apply(Event evt) { JobEvent evt0 = (JobEvent)evt; assert evtSubjId == null; evtSubjId = evt0.taskSubjectId(); return false; } }, EventType.EVT_JOB_STARTED);
/** * @param evtType Event type. * @param jobId Job ID. * @param evtNode Event node. * @param plc Job result policy. * @param msg Event message. */ private void recordJobEvent(int evtType, IgniteUuid jobId, ClusterNode evtNode, @Nullable ComputeJobResultPolicy plc, String msg) { if (!internal && ctx.event().isRecordable(evtType)) { JobEvent evt = new JobEvent(); evt.message(msg); evt.node(ctx.discovery().localNode()); evt.taskName(ses.getTaskName()); evt.taskClassName(ses.getTaskClassName()); evt.taskSessionId(ses.getId()); evt.taskNode(evtNode); evt.jobId(jobId); evt.type(evtType); evt.taskSubjectId(ses.subjectId()); evt.resultPolicy(plc); ctx.event().record(evt); } }
writer.writeString(event0.taskName()); writer.writeString(event0.taskClassName()); writer.writeObject(event0.taskSessionId()); writer.writeObject(event0.jobId()); writeNode(writer, event0.taskNode()); writer.writeUuid(event0.taskSubjectId());
IgniteBiTuple<Boolean, WeightedTopology> weightedTop = taskTops.get(jobEvt.taskSessionId()); log.debug("Job has been mapped. Ignore cache for session: " + jobEvt.taskSessionId());
/** * @throws Exception If test failed. */ @Test public void testFailTask() throws Exception { long tstamp = startTimestamp(); ComputeTaskFuture<?> fut = generateEvents(null, new GridAllEventsFailTestJob()); try { fut.get(); assert false : "Grid with locally executed job with timeout should throw ComputeTaskTimeoutException."; } catch (IgniteException e) { info("Expected exception caught [taskFuture=" + fut + ", exception=" + e + ']'); } List<Event> evts = pullEvents(tstamp, 7); assertEvent(evts.get(0).type(), EVT_TASK_STARTED, evts); assertEvent(evts.get(1).type(), EVT_JOB_MAPPED, evts); assertEvent(evts.get(2).type(), EVT_JOB_QUEUED, evts); assertEvent(evts.get(3).type(), EVT_JOB_STARTED, evts); assertEvent(evts.get(4).type(), EVT_JOB_RESULTED, evts); assertEvent(evts.get(5).type(), EVT_TASK_FAILED, evts); assertEvent(evts.get(6).type(), EVT_JOB_FAILED, evts); // Exception was thrown, so policy is null. assertNull(((JobEvent)evts.get(4)).resultPolicy()); }