Search in sources :

Example 1 with UPID

use of com.groupon.mesos.util.UPID in project jesos by groupon.

the class LocalSchedulerMessageProcessor method frameworkRescindOffer.

@Subscribe
public void frameworkRescindOffer(final RescindResourceOfferMessageEnvelope envelope) {
    checkState(envelope.getRecipient().equals(context.getDriverUPID()), "Received a remote message for local delivery");
    final UPID sender = envelope.getSender();
    if (!driverIsConnected(sender)) {
        return;
    }
    final RescindResourceOfferMessage rescindResourceOfferMessage = envelope.getMessage();
    context.removeAllOffers(rescindResourceOfferMessage.getOfferId());
    eventBus.post(new SchedulerCallback() {

        @Override
        public Runnable getCallback(final Scheduler scheduler, final SchedulerDriver schedulerDriver) {
            return new Runnable() {

                @Override
                public void run() {
                    scheduler.offerRescinded(schedulerDriver, rescindResourceOfferMessage.getOfferId());
                }
            };
        }
    });
}
Also used : UPID(com.groupon.mesos.util.UPID) Scheduler(org.apache.mesos.Scheduler) RescindResourceOfferMessage(mesos.internal.Messages.RescindResourceOfferMessage) SchedulerDriver(org.apache.mesos.SchedulerDriver) Subscribe(com.google.common.eventbus.Subscribe)

Example 2 with UPID

use of com.groupon.mesos.util.UPID in project jesos by groupon.

the class LocalSchedulerMessageProcessor method frameworkLostSlave.

@Subscribe
public void frameworkLostSlave(final LostSlaveMessageEnvelope envelope) {
    checkState(envelope.getRecipient().equals(context.getDriverUPID()), "Received a remote message for local delivery");
    final UPID sender = envelope.getSender();
    if (!driverIsConnected(sender)) {
        return;
    }
    final LostSlaveMessage lostSlaveMessage = envelope.getMessage();
    final SlaveID slaveId = lostSlaveMessage.getSlaveId();
    context.removeSlave(slaveId);
    eventBus.post(new SchedulerCallback() {

        @Override
        public Runnable getCallback(final Scheduler scheduler, final SchedulerDriver schedulerDriver) {
            return new Runnable() {

                @Override
                public void run() {
                    scheduler.slaveLost(schedulerDriver, slaveId);
                }
            };
        }
    });
}
Also used : UPID(com.groupon.mesos.util.UPID) Scheduler(org.apache.mesos.Scheduler) LostSlaveMessage(mesos.internal.Messages.LostSlaveMessage) SlaveID(org.apache.mesos.Protos.SlaveID) SchedulerDriver(org.apache.mesos.SchedulerDriver) Subscribe(com.google.common.eventbus.Subscribe)

Example 3 with UPID

use of com.groupon.mesos.util.UPID in project jesos by groupon.

the class LocalSchedulerMessageProcessor method frameworkFrameworkMessage.

@Subscribe
public void frameworkFrameworkMessage(final ExecutorToFrameworkMessageEnvelope envelope) {
    checkState(envelope.getRecipient().equals(context.getDriverUPID()), "Received a remote message for local delivery");
    final UPID sender = envelope.getSender();
    if (!driverIsConnected(sender)) {
        return;
    }
    final ExecutorToFrameworkMessage executorToFrameworkMessage = envelope.getMessage();
    eventBus.post(new SchedulerCallback() {

        @Override
        public Runnable getCallback(final Scheduler scheduler, final SchedulerDriver schedulerDriver) {
            return new Runnable() {

                @Override
                public void run() {
                    scheduler.frameworkMessage(schedulerDriver, executorToFrameworkMessage.getExecutorId(), executorToFrameworkMessage.getSlaveId(), executorToFrameworkMessage.getData().toByteArray());
                }
            };
        }
    });
}
Also used : UPID(com.groupon.mesos.util.UPID) ExecutorToFrameworkMessage(mesos.internal.Messages.ExecutorToFrameworkMessage) Scheduler(org.apache.mesos.Scheduler) SchedulerDriver(org.apache.mesos.SchedulerDriver) Subscribe(com.google.common.eventbus.Subscribe)

Example 4 with UPID

use of com.groupon.mesos.util.UPID in project jesos by groupon.

the class LocalSchedulerMessageProcessor method frameworkResourceOffers.

@Subscribe
public void frameworkResourceOffers(final ResourceOffersMessageEnvelope envelope) {
    checkState(envelope.getRecipient().equals(context.getDriverUPID()), "Received a remote message for local delivery");
    final UPID sender = envelope.getSender();
    if (!driverIsConnected(sender)) {
        return;
    }
    final ResourceOffersMessage resourceOffersMessage = envelope.getMessage();
    final List<Offer> offers = resourceOffersMessage.getOffersList();
    final List<UPID> pids = ImmutableList.copyOf(Lists.transform(resourceOffersMessage.getPidsList(), UPID.getCreateFunction()));
    checkState(offers.size() == pids.size(), "Received %s offers but only %s pids!", offers.size(), pids.size());
    int pidIndex = 0;
    for (final Offer offer : offers) {
        context.addOffer(offer.getId(), offer.getSlaveId(), pids.get(pidIndex++));
    }
    eventBus.post(new SchedulerCallback() {

        @Override
        public Runnable getCallback(final Scheduler scheduler, final SchedulerDriver schedulerDriver) {
            return new Runnable() {

                @Override
                public void run() {
                    scheduler.resourceOffers(schedulerDriver, resourceOffersMessage.getOffersList());
                }
            };
        }
    });
}
Also used : UPID(com.groupon.mesos.util.UPID) Offer(org.apache.mesos.Protos.Offer) Scheduler(org.apache.mesos.Scheduler) ResourceOffersMessage(mesos.internal.Messages.ResourceOffersMessage) SchedulerDriver(org.apache.mesos.SchedulerDriver) Subscribe(com.google.common.eventbus.Subscribe)

Example 5 with UPID

use of com.groupon.mesos.util.UPID in project jesos by groupon.

the class InternalExecutorDriver method sendMessage.

/**
     * Remote message delivery. Called by the event bus on an event bus thread to transfer a message
     * to another mesos host. This must <b>not</b> called directly to ensure the thread separation between
     * caller threads, event bus threads and executor threads.
     */
@Subscribe
public void sendMessage(final RemoteMessageEnvelope envelope) throws Exception {
    final Message message = envelope.getMessage();
    final UPID recipient = envelope.getRecipient();
    checkState(!recipient.equals(context.getDriverUPID()), "Received a message with local recipient! (%s)", message);
    sender.sendHttpMessage(recipient, message);
}
Also used : UPID(com.groupon.mesos.util.UPID) ExecutorToFrameworkMessage(mesos.internal.Messages.ExecutorToFrameworkMessage) Message(com.google.protobuf.Message) RegisterExecutorMessage(mesos.internal.Messages.RegisterExecutorMessage) StatusUpdateMessage(mesos.internal.Messages.StatusUpdateMessage) Subscribe(com.google.common.eventbus.Subscribe)

Aggregations

UPID (com.groupon.mesos.util.UPID)10 Subscribe (com.google.common.eventbus.Subscribe)8 Scheduler (org.apache.mesos.Scheduler)6 SchedulerDriver (org.apache.mesos.SchedulerDriver)6 StatusUpdateMessage (mesos.internal.Messages.StatusUpdateMessage)3 Message (com.google.protobuf.Message)2 RemoteMessageEnvelope (com.groupon.mesos.scheduler.SchedulerMessageEnvelope.RemoteMessageEnvelope)2 ExecutorToFrameworkMessage (mesos.internal.Messages.ExecutorToFrameworkMessage)2 FrameworkToExecutorMessage (mesos.internal.Messages.FrameworkToExecutorMessage)2 StatusUpdateAcknowledgementMessage (mesos.internal.Messages.StatusUpdateAcknowledgementMessage)2 DeactivateFrameworkMessage (mesos.internal.Messages.DeactivateFrameworkMessage)1 FrameworkErrorMessage (mesos.internal.Messages.FrameworkErrorMessage)1 KillTaskMessage (mesos.internal.Messages.KillTaskMessage)1 LaunchTasksMessage (mesos.internal.Messages.LaunchTasksMessage)1 LostSlaveMessage (mesos.internal.Messages.LostSlaveMessage)1 ReconcileTasksMessage (mesos.internal.Messages.ReconcileTasksMessage)1 RegisterExecutorMessage (mesos.internal.Messages.RegisterExecutorMessage)1 RegisterFrameworkMessage (mesos.internal.Messages.RegisterFrameworkMessage)1 ReregisterFrameworkMessage (mesos.internal.Messages.ReregisterFrameworkMessage)1 RescindResourceOfferMessage (mesos.internal.Messages.RescindResourceOfferMessage)1