<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 15 (filtered medium)"><style><!--
/* Font Definitions */
@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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:2.0cm 42.5pt 2.0cm 3.0cm;}
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 lang=RU link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Hi Klaus,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Thanks great for idea with alerts. I think about it too, the question is how to reach target state and know it’s reached for sure. Our process is daemon, so theoretically it can take cluster/resource state on start and then keep cluster’s “alter-ego” actual by alerts. But there always some risks of async updates: some message lost, e.t.c.. In practical meaning, it seems to build a list of resource ids send to stop and then ask </span><span lang=EN-US style='font-family:"Courier New";mso-fareast-language:EN-US'>crm_mon --output-as xml,</span><span lang=EN-US style='mso-fareast-language:EN-US'> say, each 20ms, for checking “if all the ids for the list are stopped”. As everything stopped, we are here! It will round delay to 20ms chunks, but it should be better then simple 100ms delay without checking I deployed. 100ms delay works well so far.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>It seems like there no other options.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'><div><div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><p class=MsoNormal><span lang=EN-US>Is there any way to get a list of unfinished start/stop tasks? For sure, I can build the list of resource to be stopped and just check with crm_mon about its status unless everyone stopped or error, I can catch resource events and watch for every planned stop finished, but it looks simpler and more reliable to get active stop task list, if available.<o:p></o:p></span></p></blockquote><div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div><div><p class=MsoNormal>Don't know if there is a way to acquire such a list in an (easy) way using public api.<o:p></o:p></p></div><div><p class=MsoNormal>Basically you might consider making your API asynchronous in that aspect.<o:p></o:p></p></div><div><p class=MsoNormal>Did you explore what alerts might give you? You might get notification about successful<o:p></o:p></p></div><div><p class=MsoNormal>stops / respectably failed stops more quickly and collect them to be used either by<o:p></o:p></p></div><div><p class=MsoNormal>the synchronous API or an asynchronous version.<o:p></o:p></p></div><div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></div></div></div></div></body></html>