diff --git a/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosSchedulerImpl.java b/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosSchedulerImpl.java index 6eeec20cb3..b6286fa5cb 100644 --- a/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosSchedulerImpl.java +++ b/SingularityService/src/main/java/com/hubspot/singularity/mesos/SingularityMesosSchedulerImpl.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; @@ -11,7 +12,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; -import java.util.function.Function; import java.util.stream.Collectors; import javax.inject.Singleton; @@ -186,8 +186,14 @@ public void resourceOffers(List offers) { } List offersToCheck = new ArrayList<>(offers); - Map cachedOffers = offerCache.checkoutOffers().stream().collect(Collectors.toMap(CachedOffer::getOfferId, Function.identity())); - offersToCheck.addAll(cachedOffers.values().stream().map(CachedOffer::getOffer).collect(Collectors.toList())); + + List cachedOfferList = offerCache.checkoutOffers(); + Map cachedOffers = new HashMap<>(); + for (CachedOffer cachedOffer : cachedOfferList) { + cachedOffers.put(cachedOffer.getOfferId(), cachedOffer); + offersToCheck.add(cachedOffer.getOffer()); + } + offers.parallelStream().forEach((offer) -> { String rolesInfo = MesosUtils.getRoles(offer).toString(); 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),