private void declineOffer(CachedOffer offer) { if (!schedulerClient.isRunning()) { LOG.error("No active scheduler driver present to handle expired offer {} - this should never happen", offer.offerId); return; } schedulerClient.decline(Collections.singletonList(offer.offer.getId())); LOG.debug("Declined cached offer {}", offer.offerId); }
List<CachedOffer> cachedOffersFromHolder = offerHolder.getOffers().stream().map((o) -> offerIdToCachedOffer.get(o.getId().getValue())).collect(Collectors.toList()); List<CachedOffer> unusedCachedOffers = unusedOffers.stream().map((o) -> offerIdToCachedOffer.get(o.getId().getValue())).collect(Collectors.toList()); unusedCachedOffers.forEach((cachedOffer) -> { offerIdToCachedOffer.remove(cachedOffer.getOfferId());
@Override public void cacheOffer(long timestamp, Offer offer) { schedulerClient.decline(Collections.singletonList(offer.getId())); }
LOG.debug("Received offer ID {} with roles {} from {} ({}) for {} cpu(s), {} memory, {} ports, and {} disk", offer.getId().getValue(), rolesInfo, offer.getHostname(), offer.getAgentId().getValue(), MesosUtils.getNumCpus(offer), MesosUtils.getMemory(offer), MesosUtils.getNumPorts(offer), MesosUtils.getDisk(offer)); mesosSchedulerClient.decline(Collections.singletonList(offer.getId())); offersToCheck.remove(offer); LOG.debug("Will decline offer {}, slave {} is not currently in a state to launch tasks", offer.getId().getValue(), offer.getHostname()); if (cachedOffers.containsKey(o.getId().getValue())) { offerCache.returnOffer(cachedOffers.remove(o.getId().getValue())); } else { offerCache.cacheOffer(start, o); offersAcceptedFromSlave.removeAll(leftoverOffers); offersAcceptedFromSlave.stream() .filter((offer) -> cachedOffers.containsKey(offer.getId().getValue())) .map((o) -> cachedOffers.remove(o.getId().getValue())) .forEach(offerCache::useOffer); acceptedOffers.addAll(offersAcceptedFromSlave.stream().map(Offer::getId).collect(Collectors.toList())); } else { offerHolder.getOffers().forEach((o) -> { if (cachedOffers.containsKey(o.getId().getValue())) { offerCache.returnOffer(cachedOffers.remove(o.getId().getValue())); } else { offerCache.cacheOffer(start, o); .filter((o) -> !acceptedOffers.contains(o.getId()) && !cachedOffers.containsKey(o.getId().getValue())) .map(Offer::getId) .collect(Collectors.toList()));
List<CachedOffer> cachedOffersFromHolder = offerHolder.getOffers().stream().map((o) -> offerIdToCachedOffer.get(o.getId().getValue())).collect(Collectors.toList()); List<CachedOffer> unusedCachedOffers = unusedOffers.stream().map((o) -> offerIdToCachedOffer.get(o.getId().getValue())).collect(Collectors.toList()); unusedCachedOffers.forEach((cachedOffer) -> { offerIdToCachedOffer.remove(cachedOffer.getOfferId());
final List<OfferID> ids = newArrayList(offer.getId());
taskIds.add(taskHolder.getTask().getTaskId()); toLaunch.add(taskHolder.getMesosTask()); LOG.debug("Launching {} with offer {}", taskHolder.getTask().getTaskId(), offers.get(0).getId()); LOG.trace("Launching {} mesos task: {}", taskHolder.getTask().getTaskId(), MesosUtils.formatForLogging(taskHolder.getMesosTask())); offer.getId().getValue(), offer.getHostname(), MesosUtils.getNumCpus(offer), MesosUtils.getMemory(offer), MesosUtils.getDisk(offer) ); currentResources = MesosUtils.subtractResources(currentResources, offer.getResourcesList());
@Test public void testOfferCacheRescindOffers() { configuration.setCacheOffers(true); configuration.setOfferCacheSize(2); List<Offer> offers2 = resourceOffers(); // cached as well sms.rescind(offers2.get(0).getId()); sms.rescind(offers2.get(1).getId()); initRequest(); initFirstDeploy(); requestResource.postRequest(request.toBuilder().setSlavePlacement(Optional.of(SlavePlacement.SEPARATE)).setInstances(Optional.of(2)).build(), singularityUser); schedulerPoller.runActionOnPoll(); Assert.assertEquals(0, taskManager.getActiveTasks().size()); resourceOffers(); int numTasks = taskManager.getActiveTasks().size(); Assert.assertEquals(2, numTasks); startAndDeploySecondRequest(); schedulerPoller.runActionOnPoll(); Assert.assertEquals(numTasks, taskManager.getActiveTasks().size()); resourceOffers(); Assert.assertTrue(taskManager.getActiveTasks().size() > numTasks); }
@Test public void testOfferCache() { configuration.setCacheOffers(true); configuration.setOfferCacheSize(2); List<Offer> offers2 = resourceOffers(); sms.rescind(offers2.get(0).getId()); initRequest(); initFirstDeploy(); requestResource.postRequest(request.toBuilder().setSlavePlacement(Optional.of(SlavePlacement.SEPARATE)).setInstances(Optional.of(2)).build(), singularityUser); schedulerPoller.runActionOnPoll(); Assert.assertEquals(1, taskManager.getActiveTasks().size()); resourceOffers(); Assert.assertEquals(2, taskManager.getActiveTasks().size()); }
@Override public void cacheOffer(long timestamp, Offer offer) { schedulerClient.decline(Collections.singletonList(offer.getId())); }
private void declineOffer(CachedOffer offer) { if (!schedulerClient.isRunning()) { LOG.error("No active scheduler driver present to handle expired offer {} - this should never happen", offer.offerId); return; } schedulerClient.decline(Collections.singletonList(offer.offer.getId())); LOG.debug("Declined cached offer {}", offer.offerId); }
public CachedOffer(Offer offer) { this.offerId = offer.getId().getValue(); this.offer = offer; this.offerState = OfferState.AVAILABLE; }
@Override public void cacheOffer(long timestamp, Offer offer) { if (!useOfferCache.get()) { schedulerClient.decline(Collections.singletonList(offer.getId())); return; } LOG.debug("Caching offer {} for {}", offer.getId().getValue(), JavaUtils.durationFromMillis(configuration.getCacheOffersForMillis())); offerCache.put(offer.getId().getValue(), new CachedOffer(offer)); }
LOG.debug("Received offer ID {} with roles {} from {} ({}) for {} cpu(s), {} memory, {} ports, and {} disk", offer.getId().getValue(), rolesInfo, offer.getHostname(), offer.getAgentId().getValue(), MesosUtils.getNumCpus(offer), MesosUtils.getMemory(offer), MesosUtils.getNumPorts(offer), MesosUtils.getDisk(offer)); mesosSchedulerClient.decline(Collections.singletonList(offer.getId())); offersToCheck.remove(offer); LOG.debug("Will decline offer {}, slave {} is not currently in a state to launch tasks", offer.getId().getValue(), offer.getHostname()); if (cachedOffers.containsKey(o.getId().getValue())) { offerCache.returnOffer(cachedOffers.remove(o.getId().getValue())); } else { offerCache.cacheOffer(start, o); offersAcceptedFromSlave.removeAll(leftoverOffers); offersAcceptedFromSlave.stream() .filter((offer) -> cachedOffers.containsKey(offer.getId().getValue())) .map((o) -> cachedOffers.remove(o.getId().getValue())) .forEach(offerCache::useOffer); acceptedOffers.addAll(offersAcceptedFromSlave.stream().map(Offer::getId).collect(Collectors.toList())); } else { offerHolder.getOffers().forEach((o) -> { if (cachedOffers.containsKey(o.getId().getValue())) { offerCache.returnOffer(cachedOffers.remove(o.getId().getValue())); } else { offerCache.cacheOffer(start, o); .filter((o) -> !acceptedOffers.contains(o.getId()) && !cachedOffers.containsKey(o.getId().getValue())) .map(Offer::getId) .collect(Collectors.toList()));
taskIds.add(taskHolder.getTask().getTaskId()); toLaunch.add(taskHolder.getMesosTask()); LOG.debug("Launching {} with offer {}", taskHolder.getTask().getTaskId(), offers.get(0).getId()); LOG.trace("Launching {} mesos task: {}", taskHolder.getTask().getTaskId(), MesosUtils.formatForLogging(taskHolder.getMesosTask())); offer.getId().getValue(), offer.getHostname(), MesosUtils.getNumCpus(offer), MesosUtils.getMemory(offer), MesosUtils.getDisk(offer) ); currentResources = MesosUtils.subtractResources(currentResources, offer.getResourcesList());
@Test public void testOfferCacheRescindOffers() { configuration.setCacheOffers(true); configuration.setOfferCacheSize(2); List<Offer> offers2 = resourceOffers(); // cached as well sms.rescind(offers2.get(0).getId()); sms.rescind(offers2.get(1).getId()); initRequest(); initFirstDeploy(); requestResource.postRequest(request.toBuilder().setSlavePlacement(Optional.of(SlavePlacement.SEPARATE)).setInstances(Optional.of(2)).build(), singularityUser); schedulerPoller.runActionOnPoll(); Assert.assertEquals(0, taskManager.getActiveTasks().size()); resourceOffers(); int numTasks = taskManager.getActiveTasks().size(); Assert.assertEquals(2, numTasks); startAndDeploySecondRequest(); schedulerPoller.runActionOnPoll(); Assert.assertEquals(numTasks, taskManager.getActiveTasks().size()); resourceOffers(); Assert.assertTrue(taskManager.getActiveTasks().size() > numTasks); }
@Test public void testOfferCache() { configuration.setCacheOffers(true); configuration.setOfferCacheSize(2); List<Offer> offers2 = resourceOffers(); sms.rescind(offers2.get(0).getId()); initRequest(); initFirstDeploy(); requestResource.postRequest(request.toBuilder().setSlavePlacement(Optional.of(SlavePlacement.SEPARATE)).setInstances(Optional.of(2)).build(), singularityUser); schedulerPoller.runActionOnPoll(); Assert.assertEquals(1, taskManager.getActiveTasks().size()); resourceOffers(); Assert.assertEquals(2, taskManager.getActiveTasks().size()); }
public CachedOffer(Offer offer) { this.offerId = offer.getId().getValue(); this.offer = offer; this.offerState = OfferState.AVAILABLE; }
@Override public void cacheOffer(long timestamp, Offer offer) { if (!useOfferCache.get()) { schedulerClient.decline(Collections.singletonList(offer.getId())); return; } LOG.debug("Caching offer {} for {}", offer.getId().getValue(), JavaUtils.durationFromMillis(configuration.getCacheOffersForMillis())); offerCache.put(offer.getId().getValue(), new CachedOffer(offer)); }