<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <br>
    <div class="moz-cite-prefix">Le 11/06/2015 18:52, Vilobh Meshram a
      écrit :<br>
    </div>
    <blockquote
cite="mid:CAPJ8RRXyveE=9ERX3Y2dBm_tYJ8hNtksosb_1T0WYsa=0DKAPQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><font face="georgia, serif">Few more places which can
            trigger inconsistent behaviour. </font></div>
        <div>
          <p class=""><span class=""><font face="georgia, serif">- <a
                  moz-do-not-send="true"
href="https://github.com/openstack/nova/blob/stable/kilo/nova/api/openstack/compute/contrib/services.py#L44">https://github.com/openstack/nova/blob/stable/kilo/nova/api/openstack/compute/contrib/services.py#L44</a></font></span></p>
          <p class=""><font face="georgia, serif">- <a
                moz-do-not-send="true"
href="https://github.com/openstack/nova/blob/stable/kilo/nova/api/openstack/compute/contrib/hypervisors.py#L98">https://github.com/openstack/nova/blob/stable/kilo/nova/api/openstack/compute/contrib/hypervisors.py#L98</a></font></p>
          <p class=""><span class=""><font face="georgia, serif">- <a
                  moz-do-not-send="true"
href="https://github.com/openstack/nova/blob/stable/kilo/nova/availability_zones.py#L130">https://github.com/openstack/nova/blob/stable/kilo/nova/availability_zones.py#L130</a></font></span></p>
          <p class=""><span class=""><font face="georgia, serif">- <a
                  moz-do-not-send="true"
href="https://github.com/openstack/nova/blob/stable/kilo/nova/api/openstack/compute/contrib/availability_zone.py#L68">https://github.com/openstack/nova/blob/stable/kilo/nova/api/openstack/compute/contrib/availability_zone.py#L68</a></font></span></p>
          <p class=""><span class=""><font face="georgia, serif">- <a
                  moz-do-not-send="true"
href="https://github.com/openstack/nova/blob/stable/kilo/nova/api/openstack/compute/contrib/hosts.py#L88-L89">https://github.com/openstack/nova/blob/stable/kilo/nova/api/openstack/compute/contrib/hosts.py#L88-L89</a></font></span></p>
          <p class=""><span class=""><font face="georgia, serif">- <a
                  moz-do-not-send="true"
href="https://github.com/openstack/nova/blob/stable/kilo/nova/compute/api.py#L3399-L3421">https://github.com/openstack/nova/blob/stable/kilo/nova/compute/api.py#L3399-L3421</a>.</font></span></p>
          <p class=""><span class=""><font face="georgia, serif"><br>
              </font></span></p>
          <p class=""><font face="georgia, serif">Blueprint which plans
              to fix this : <a moz-do-not-send="true"
href="https://blueprints.launchpad.net/nova/+spec/servicegroup-api-control-plane">https://blueprints.launchpad.net/nova/+spec/servicegroup-api-control-plane</a></font></p>
          <p class=""><font face="georgia, serif">Related Spec : 1) <a
                moz-do-not-send="true"
                href="https://review.openstack.org/#/c/190322/">https://review.openstack.org/#/c/190322/</a></font></p>
          <p class=""><font face="georgia, serif">                     
                   2) <a moz-do-not-send="true"
                href="https://review.openstack.org/#/c/138607/">https://review.openstack.org/#/c/138607/</a></font></p>
          <p class=""><font face="georgia, serif">-Vilobh</font></p>
        </div>
        <div>
          <div><span style="font-size:12.8000001907349px"><br>
            </span></div>
        </div>
      </div>
    </blockquote>
    <br>
    tl,dr: checking a Service (is_up) should only be for making sure we
    can send a message to it, but not for checking if the related
    hypervisor(s) is/are up. Having a reference in the services table
    mapping 1:1 to a reference in a separate datastore is fine by me.<br>
    <br>
    <br>
    So, I'm going to review the specs above and leave my comments there.<br>
    That said, I want to also point out some humble opinion about what
    should be the relationship between a Service and what could be
    called the "ServiceGroup API" (badly named IMHO since it only checks
    a service, not a group ;-) )<br>
    <br>
    From my perspective, the Service object is related to the AMQP
    service tied to the queue and... that's it.<br>
    That has nothing to do related to an hypervisor (since hypervisors
    can be distributed for a single service). That only represents the
    single point of failure for messages sent to a nova-compute service
    (and not a compute node, remember the distributed stuff) and since
    this is the only way to communicate with the related hypervisor(s),
    we have to know its status.<br>
    <br>
    Again, that doesn't necessarly imply that if the service (who
    listens to the AMQP queue) is up, the hypervisors will be up as
    well, but that's enough strong to say that if it's down, we are sure
    that the hypervisor(s) won't receive messages.<br>
    Whether if the hypervisor is still continuing to work while the
    service is down is a corner case that the service status should not
    provide IMHO.<br>
    <br>
    That's exactly why we need to consider that the service is a
    reference which can be used as it is for any relationship with a
    list of hypervisors (call that ComputeNode now) and checking its
    state (using any driver for it) should just be used for knowing if
    the message can be sent to it - *and not for checking if the related
    hypervisor(s) are running or not*<br>
    <br>
    Given that disclaimer (which implies that we need to be very clear
    about when to wonder if is_up(service) ), I'm fine with considering
    the reference stored in DB (ie. the services table) as only a list
    of references pointing to a separate object which can be stored in
    any datastore (DB/Memcache/ZK/pick your favorite)<br>
    <br>
    The only thing we need to make sure is that there is a 1:1 mapping
    between the 2 objects (eg. the DB "service" item and the
    "datastored" object) which can only be done logically.<br>
    <br>
    My 2 cts,<br>
    -Sylvain<br>
    <br>
    <br>
    <blockquote
cite="mid:CAPJ8RRXyveE=9ERX3Y2dBm_tYJ8hNtksosb_1T0WYsa=0DKAPQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div>
            <div class="gmail_extra"><br>
              <div class="gmail_quote">On Mon, May 11, 2015 at 8:08 AM,
                Chris Friesen <span dir="ltr"><<a
                    moz-do-not-send="true"
                    href="mailto:chris.friesen@windriver.com"
                    target="_blank">chris.friesen@windriver.com</a>></span>
                wrote:<br>
                <blockquote class="gmail_quote" style="margin:0px 0px
                  0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">On
                  05/11/2015 07:13 AM, Attila Fazekas wrote:<br>
                  <blockquote class="gmail_quote" style="margin:0px 0px
                    0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                    <blockquote class="gmail_quote" style="margin:0px
                      0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">From:
                      "John Garbutt" <<a moz-do-not-send="true"
                        href="mailto:john@johngarbutt.com"
                        target="_blank">john@johngarbutt.com</a>><br>
                    </blockquote>
                  </blockquote>
                  <span>
                    <br>
                    <blockquote class="gmail_quote" style="margin:0px
                      0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                      <blockquote class="gmail_quote" style="margin:0px
                        0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">*
                        From the RPC api point of view, do we want to
                        send a cast to<br>
                        something that we know is dead, maybe we want
                        to? Should we wait for<br>
                        calls to timeout, or give up quicker?<br>
                      </blockquote>
                      <br>
                      How to fail sooner:<br>
                      <a moz-do-not-send="true"
                        href="https://bugs.launchpad.net/oslo.messaging/+bug/1437955"
                        target="_blank">https://bugs.launchpad.net/oslo.messaging/+bug/1437955</a><br>
                      <br>
                      We do not need a dedicated is_up just for this.<br>
                    </blockquote>
                    <br>
                  </span>
                  Is that really going to help?  As I understand it if
                  nova-compute dies (or is isolated) then the queue
                  remains present on the server but nothing will process
                  messages from it.<span><font color="#888888"><br>
                      <br>
                      Chris</font></span>
                  <div>
                    <div><br>
                      <br>
                      __________________________________________________________________________<br>
                      OpenStack Development Mailing List (not for usage
                      questions)<br>
                      Unsubscribe: <a moz-do-not-send="true"
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
                        target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
                      <a moz-do-not-send="true"
                        href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
                        target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                    </div>
                  </div>
                </blockquote>
              </div>
              <br>
            </div>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: <a class="moz-txt-link-abbreviated" href="mailto:OpenStack-dev-request@lists.openstack.org?subject:unsubscribe">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a>
<a class="moz-txt-link-freetext" href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>