<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="EN-CA" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I think option #3 is the most desired choice in performance’s point of view, because magnum is going to support multiple conductors and all conductors share
 the same DB. However, if each conductor runs its own thread for periodic task, we will end up to have multiple instances of tasks for doing the same job (syncing heat’s state to magnum’s DB). I think magnum should have only one instance of periodic task since
 the replicated instance of tasks will stress the computing and networking resources.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hongbin  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext"> Qiao,Liyong [mailto:liyong.qiao@intel.com]
<br>
<b>Sent:</b> June-14-15 9:38 PM<br>
<b>To:</b> openstack-dev@lists.openstack.org<br>
<b>Cc:</b> qiaoliyong@gmail.com<br>
<b>Subject:</b> [openstack-dev] [Magnum] Add periodic task threading for conductor server<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">hi magnum team,<br>
<br>
I am planing to add periodic task for magnum conductor service, it will be good<br>
to sync task status with heat and container service. and I have already have a WIP<br>
patch[1], I'd like to start a discussion on the implement.<br>
<br>
Currently, conductor service is an rpc server, and it has several handlers<br>
    endpoints = [<br>
        docker_conductor.Handler(),<br>
        k8s_conductor.Handler(),<br>
        bay_conductor.Handler(),<br>
        conductor_listener.Handler(),<br>
    ]<br>
all handler runs in the rpc server.<br>
<br>
1. my patch [1] is to add periodic task functions in each handlers (if it requires such tasks)<br>
and setup these functions when start rpc server, add them to a thread group.<br>
so for example:<br>
<br>
if we have task in bay_conductor.Handler() and docker_conductor.Handler(),<br>
then adding 2 threads to current service's tg. each thread run it own periodic tasks.<br>
<br>
the advantage is we separate each handler's task job to separate thread.<br>
but hongbin's concern is if it will has some impacts on horizontally scalability.
<br>
<br>
2. another implement is put all tasks in a thread, this thread will run all<br>
tasks(for bay,k8s, docker etc), just like sahara does see [2]<br>
<br>
3 last one is start a new service in a separate process to run tasks.( I think this<br>
will be too heavy/wasteful)<br>
<br>
I'd like to get what's your suggestion, thanks in advance.<br>
<br>
[1] <a href="https://review.openstack.org/#/c/187090/4">https://review.openstack.org/#/c/187090/4</a><br>
[2] <a href="https://github.com/openstack/sahara/blob/master/sahara/service/periodic.py#L118">
https://github.com/openstack/sahara/blob/master/sahara/service/periodic.py#L118</a><br>
<br>
<o:p></o:p></p>
<pre>-- <o:p></o:p></pre>
<pre>BR, Eli(Li Yong)Qiao<o:p></o:p></pre>
</div>
</body>
</html>