/** {@inheritDoc} */ @Override public synchronized void resourceOffers(SchedulerDriver schedulerDriver, List<Protos.Offer> offers) { log.log(Level.FINE, "Offers resources: {0}", offers.size()); for (Protos.Offer offer : offers) { IgniteTask igniteTask = checkOffer(offer); // Decline offer which doesn't match by mem or cpu. if (igniteTask == null) { schedulerDriver.declineOffer(offer.getId()); continue; } // Generate a unique task ID. Protos.TaskID taskId = Protos.TaskID.newBuilder() .setValue(Integer.toString(taskIdGenerator.incrementAndGet())).build(); log.log(Level.INFO, "Launching task: {0}", igniteTask); // Create task to run. Protos.TaskInfo task = createTask(offer, igniteTask, taskId); try { schedulerDriver.launchTasks(Collections.singletonList(offer.getId()), Collections.singletonList(task), Protos.Filters.newBuilder().setRefuseSeconds(1).build()); } catch (RuntimeException e) { log.log(Level.SEVERE, "Failed launch task. Task id: {0}. Task info: {1}", new Object[]{taskId, task, e}); throw e; } tasks.put(taskId.getValue(), igniteTask); } }
_driver.launchTasks(offerIDList, taskInfoList); for (OfferID offerID: offerIDList) { _offers.remove(offerID);
@Override public void resourceOffers(SchedulerDriver schedulerDriver, List<Protos.Offer> offers) { logger.info("Initiating new offer round of " + offers.size() + " offers"); AtomicInteger acceptedOffers = new AtomicInteger(0); AtomicInteger rejectedOffers = new AtomicInteger(0); offers.stream() .peek(offer -> logger.debug("Received offerId=" + offer.getId().getValue() + " for slaveId=" + offer.getSlaveId().getValue())) .map(offer -> offerStrategyFilter.evaluate(uuidSupplier.get().toString(), offer)) .peek(offerEvaluation -> (offerEvaluation.isValid() ? acceptedOffers : rejectedOffers).incrementAndGet()) .filter(StreamHelper.onNegative( OfferEvaluation::isValid, offerEvaluation -> schedulerDriver.declineOffer(offerEvaluation.getOffer().getId()))) .peek(offerEvaluation -> logger.info("Accepting offer offerId=" + offerEvaluation.getOffer().getId().getValue() + " on slaveId=" + offerEvaluation.getOffer().getSlaveId().getValue())) .map(taskMaterializer::createProposal) // .peek(taskProposal -> logger.debug("Launching task " + taskProposal.getTaskInfo().toString())) .forEach(taskProposal -> { schedulerDriver.launchTasks(Collections.singleton(taskProposal.getOfferId()), Collections.singleton(taskProposal.getTaskInfo())); stateRepository.store(taskProposal.taskInfo); }); logger.info("Finished evaluating " + offers.size() + " offers. Accepted " + acceptedOffers.get() + " offers and rejected " + rejectedOffers.get()); }
@Test public void testResourceOffers_launchTasks() { final Protos.Offer offer = newOffer("host3").build(); when(offerStrategy.evaluate(offer)).thenReturn(OfferStrategy.OfferResult.accept()); when(frameworkState.isRegistered()).thenReturn(true); Protos.TaskInfo taskInfo = ProtoTestUtil.getDefaultTaskInfo(); when(taskInfoFactory.createTask(any(), any(), any(), any())).thenReturn(taskInfo); scheduler.resourceOffers(driver, singletonList(offer)); verify(driver).launchTasks(singleton(offer.getId()), singleton(taskInfo)); }
schedulerDriver.launchTasks(each.getKey(), each.getValue());
driver.launchTasks(offer.getId(), tasks, filters);
_driver.launchTasks(offerIDList, logviewerTask); for (OfferID offerID : offerIDList) { _offers.remove(offerID);
.get(0).intValue()); schedulerDriver.launchTasks(offer.offer.getId(), Arrays.asList(info));
schedulerDriver.launchTasks(offer.getId(), tasks, filters);
schedulerDriver.launchTasks(Arrays.asList(offer.getId()), Arrays.asList(trackerTaskInfo));
mesosMaster.launchTasks(Collections.singleton(offer.getId()), tasksToLaunch, filters); } else { mesosMaster.declineOffer(offer.getId());