Uploaded image for project: 'Mesos'
  1. Mesos
  2. MESOS-3012

Support existing message passing optimization with Event/Call.

    XMLWordPrintableJSON

Details

    • Task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 0.24.0
    • None

    Description

      See the thread here:
      http://markmail.org/thread/wvapc7vkbv7z6gbx

      The scheduler driver currently sends framework messages directly to the slave, when possible:

                        (through master)
          Scheduler  —————> Master  —————>  Slave ————>  Executor
           Driver    ————————————————————>                Driver
                         (skip master)
      

      The slave always sends messages directly to the scheduler driver:

          Scheduler         Master          Slave <————  Executor
           Driver    <————————————————————                Driver
                         (skip master)
      

      In order for the scheduler driver to receive Events from the master, it needs enough information to continue directly sending messages to slaves. This was previously accomplished by sending the slave's pid inside the offer message:

      message ResourceOffersMessage {
        repeated Offer offers = 1;
        repeated string pids = 2;
      }
      

      We could add an 'Address' to the Offer protobuf to provide the scheduler driver with the same information:

      message Address {
        required string ip;
        required string hostname;
        required uint32_t port;
      
        // All HTTP requests to this address must begin with this prefix.
        required string path_prefix;
      }
      
      message Offer {
        required OfferID id = 1;
        required FrameworkID framework_id = 2;
        required SlaveID slave_id = 3;
        required string hostname = 4;   // Deprecated in favor of 'address'.
        optional Address address = 8;  // Obviates 'hostname'.
        ...
      }
      

      The path prefix is required for testing purposes, where we can have multiple slaves within a process (e.g. localhost:5051/slave(1)/state.json vs. localhost:5051/slave(2)/state.json).

      This provides enough information to allow the scheduler driver to continue to directly send messages to the slaves, which unblocks MESOS-2910.

      Attachments

        Issue Links

          Activity

            People

              bmahler Benjamin Mahler
              bmahler Benjamin Mahler
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: