<html 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;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-AU link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Thanks for the update Ken!</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>From: </b><a href="mailto:kgaillot@redhat.com">Ken Gaillot</a><br><b>Sent: </b>Saturday, 21 October 2017 7:06 AM<br><b>To: </b><a href="mailto:users@clusterlabs.org">Cluster Labs - All topics related to open-source clustering welcomed</a><br><b>Subject: </b>Re: [ClusterLabs] crm_resource --wait</p></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>I've narrowed down the cause.</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>When the &quot;standby&quot; transition completes, vm2 has more remaining</p><p class=MsoNormal>utilization capacity than vm1, so the cluster wants to run sv-fencer</p><p class=MsoNormal>there. That should be taken into account in the same transition, but it</p><p class=MsoNormal>isn't, so a second transition is needed to make it happen.</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Still investigating a fix. A workaround is to assign some stickiness or</p><p class=MsoNormal>utilization to sv-fencer.</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>On Wed, 2017-10-11 at 14:01 +1000, Leon Steffens wrote:</p><p class=MsoNormal>&gt; I've attached two files:</p><p class=MsoNormal>&gt; 314 = after standby step</p><p class=MsoNormal>&gt; 315 = after resource update</p><p class=MsoNormal>&gt; </p><p class=MsoNormal>&gt; On Wed, Oct 11, 2017 at 12:22 AM, Ken Gaillot &lt;kgaillot@redhat.com&gt;</p><p class=MsoNormal>&gt; wrote:</p><p class=MsoNormal>&gt; &gt; On Tue, 2017-10-10 at 15:19 +1000, Leon Steffens wrote:</p><p class=MsoNormal>&gt; &gt; &gt; Hi Ken,</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; I managed to reproduce this on a simplified version of the</p><p class=MsoNormal>&gt; &gt; cluster,</p><p class=MsoNormal>&gt; &gt; &gt; and on Pacemaker 1.1.15, 1.1.16, as well as 1.1.18-rc1</p><p class=MsoNormal>&gt; &gt; </p><p class=MsoNormal>&gt; &gt; &gt; The steps to create the cluster are:</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; pcs property set stonith-enabled=false</p><p class=MsoNormal>&gt; &gt; &gt; pcs property set placement-strategy=balanced</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; pcs node utilization vm1 cpu=100</p><p class=MsoNormal>&gt; &gt; &gt; pcs node utilization vm2 cpu=100</p><p class=MsoNormal>&gt; &gt; &gt; pcs node utilization vm3 cpu=100</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; pcs property set maintenance-mode=true</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; pcs resource create sv-fencer ocf:pacemaker:Dummy</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; pcs resource create sv ocf:pacemaker:Dummy clone notify=false</p><p class=MsoNormal>&gt; &gt; &gt; pcs resource create std ocf:pacemaker:Dummy meta resource-</p><p class=MsoNormal>&gt; &gt; &gt; stickiness=100</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; pcs resource create partition1 ocf:pacemaker:Dummy meta resource-</p><p class=MsoNormal>&gt; &gt; &gt; stickiness=100</p><p class=MsoNormal>&gt; &gt; &gt; pcs resource create partition2 ocf:pacemaker:Dummy meta resource-</p><p class=MsoNormal>&gt; &gt; &gt; stickiness=100</p><p class=MsoNormal>&gt; &gt; &gt; pcs resource create partition3 ocf:pacemaker:Dummy meta resource-</p><p class=MsoNormal>&gt; &gt; &gt; stickiness=100</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; pcs resource utilization partition1 cpu=5</p><p class=MsoNormal>&gt; &gt; &gt; pcs resource utilization partition2 cpu=5</p><p class=MsoNormal>&gt; &gt; &gt; pcs resource utilization partition3 cpu=5</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; pcs constraint colocation add std with sv-clone INFINITY</p><p class=MsoNormal>&gt; &gt; &gt; pcs constraint colocation add partition1 with sv-clone INFINITY</p><p class=MsoNormal>&gt; &gt; &gt; pcs constraint colocation add partition2 with sv-clone INFINITY</p><p class=MsoNormal>&gt; &gt; &gt; pcs constraint colocation add partition3 with sv-clone INFINITY</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; pcs property set maintenance-mode=false</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; I can then reproduce the issues in the following way:</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; $ pcs resource</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;sv-fencer&nbsp; &nbsp; &nbsp; (ocf::pacemaker:Dummy): Started vm1</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;Clone Set: sv-clone [sv]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp; &nbsp; &nbsp;Started: [ vm1 vm2 vm3 ]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;std&nbsp; &nbsp; (ocf::pacemaker:Dummy): Started vm2</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition1&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm3</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition2&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm1</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition3&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm2</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; $ pcs cluster standby vm3</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; # Check that all resources have moved off vm3</p><p class=MsoNormal>&gt; &gt; &gt; $ pcs resource</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;sv-fencer&nbsp; &nbsp; &nbsp; (ocf::pacemaker:Dummy): Started vm1</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;Clone Set: sv-clone [sv]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp; &nbsp; &nbsp;Started: [ vm1 vm2 ]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp; &nbsp; &nbsp;Stopped: [ vm3 ]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;std&nbsp; &nbsp; (ocf::pacemaker:Dummy): Started vm2</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition1&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm1</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition2&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm1</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition3&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm2</p><p class=MsoNormal>&gt; &gt; </p><p class=MsoNormal>&gt; &gt; Thanks for the detailed information, this should help me get to the</p><p class=MsoNormal>&gt; &gt; bottom of it. From this description, it sounds like a new</p><p class=MsoNormal>&gt; &gt; transition</p><p class=MsoNormal>&gt; &gt; isn't being triggered when it should.</p><p class=MsoNormal>&gt; &gt; </p><p class=MsoNormal>&gt; &gt; Could you please attach the DC's pe-input file that is listed in</p><p class=MsoNormal>&gt; &gt; the</p><p class=MsoNormal>&gt; &gt; logs after the standby step above? That would simplify analysis.</p><p class=MsoNormal>&gt; &gt; </p><p class=MsoNormal>&gt; &gt; &gt; # Wait for any outstanding actions to complete.</p><p class=MsoNormal>&gt; &gt; &gt; $ crm_resource --wait --timeout 300</p><p class=MsoNormal>&gt; &gt; &gt; Pending actions:</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; Action 22: sv-fencer_monitor_10000&nbsp; &nbsp; &nbsp; on vm2</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; Action 21: sv-fencer_start_0&nbsp; &nbsp; on vm2</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp; Action 20: sv-fencer_stop_0&nbsp; &nbsp; &nbsp;on vm1</p><p class=MsoNormal>&gt; &gt; &gt; Error performing operation: Timer expired</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; # Check the resources again - sv-fencer is still on vm1</p><p class=MsoNormal>&gt; &gt; &gt; $ pcs resource</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;sv-fencer&nbsp; &nbsp; &nbsp; (ocf::pacemaker:Dummy): Started vm1</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;Clone Set: sv-clone [sv]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp; &nbsp; &nbsp;Started: [ vm1 vm2 ]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp; &nbsp; &nbsp;Stopped: [ vm3 ]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;std&nbsp; &nbsp; (ocf::pacemaker:Dummy): Started vm2</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition1&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm1</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition2&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm1</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition3&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm2</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; # Perform a random update to the CIB.</p><p class=MsoNormal>&gt; &gt; &gt; $ pcs resource update std op monitor interval=20 timeout=20</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; # Check resource status again - sv_fencer has now moved to vm2</p><p class=MsoNormal>&gt; &gt; (the</p><p class=MsoNormal>&gt; &gt; &gt; action crm_resource was waiting for)</p><p class=MsoNormal>&gt; &gt; &gt; $ pcs resource</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;sv-fencer&nbsp; &nbsp; &nbsp; (ocf::pacemaker:Dummy): Started vm2&nbsp;</p><p class=MsoNormal>&gt; &gt; &lt;&lt;&lt;============</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;Clone Set: sv-clone [sv]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp; &nbsp; &nbsp;Started: [ vm1 vm2 ]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp; &nbsp; &nbsp;Stopped: [ vm3 ]</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;std&nbsp; &nbsp; (ocf::pacemaker:Dummy): Started vm2</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition1&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm1</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition2&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm1</p><p class=MsoNormal>&gt; &gt; &gt; &nbsp;partition3&nbsp; &nbsp; &nbsp;(ocf::pacemaker:Dummy): Started vm2</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; I do not get the problem if I:</p><p class=MsoNormal>&gt; &gt; &gt; 1) remove the &quot;std&quot; resource; or</p><p class=MsoNormal>&gt; &gt; &gt; 2) remove the co-location constraints; or</p><p class=MsoNormal>&gt; &gt; &gt; 3) remove the utilization attributes for the partition resources.</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; In these cases the sv-fencer resource is happy to stay on vm1,</p><p class=MsoNormal>&gt; &gt; and</p><p class=MsoNormal>&gt; &gt; &gt; crm_resource --wait returns immediately.</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; It looks like the pcs cluster standby call is</p><p class=MsoNormal>&gt; &gt; creating/registering</p><p class=MsoNormal>&gt; &gt; &gt; the actions to move the sv-fencer resource to vm2, but it doesn't</p><p class=MsoNormal>&gt; &gt; &gt; include it in the cluster transition.&nbsp; When the CIB is later</p><p class=MsoNormal>&gt; &gt; updated</p><p class=MsoNormal>&gt; &gt; &gt; by something else, the action is included in that transition.</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt;</p><p class=MsoNormal>&gt; &gt; &gt; Regards,</p><p class=MsoNormal>&gt; &gt; &gt; Leon</p><p class=MsoNormal>&gt; &gt; </p><p class=MsoNormal>&gt; &gt; _______________________________________________</p><p class=MsoNormal>&gt; &gt; Users mailing list: Users@clusterlabs.org</p><p class=MsoNormal>&gt; &gt; http://lists.clusterlabs.org/mailman/listinfo/users</p><p class=MsoNormal>&gt; &gt; </p><p class=MsoNormal>&gt; &gt; Project Home: http://www.clusterlabs.org</p><p class=MsoNormal>&gt; &gt; Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratc</p><p class=MsoNormal>&gt; &gt; h.pdf</p><p class=MsoNormal>&gt; &gt; Bugs: http://bugs.clusterlabs.org</p><p class=MsoNormal>&gt; &gt; </p><p class=MsoNormal>&gt; </p><p class=MsoNormal>&gt; _______________________________________________</p><p class=MsoNormal>&gt; Users mailing list: Users@clusterlabs.org</p><p class=MsoNormal>&gt; http://lists.clusterlabs.org/mailman/listinfo/users</p><p class=MsoNormal>&gt; </p><p class=MsoNormal>&gt; Project Home: http://www.clusterlabs.org</p><p class=MsoNormal>&gt; Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.</p><p class=MsoNormal>&gt; pdf</p><p class=MsoNormal>&gt; Bugs: http://bugs.clusterlabs.org</p><p class=MsoNormal>-- </p><p class=MsoNormal>Ken Gaillot &lt;kgaillot@redhat.com&gt;</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>_______________________________________________</p><p class=MsoNormal>Users mailing list: Users@clusterlabs.org</p><p class=MsoNormal>http://lists.clusterlabs.org/mailman/listinfo/users</p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Project Home: http://www.clusterlabs.org</p><p class=MsoNormal>Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf</p><p class=MsoNormal>Bugs: http://bugs.clusterlabs.org</p><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></body></html>