{"action":"created","issue":{"url":"https://api.github.com/repos/crowbar/barclamp-nova/issues/496","repository_url":"https://api.github.com/repos/crowbar/barclamp-nova","labels_url":"https://api.github.com/repos/crowbar/barclamp-nova/issues/496/labels{/name}","comments_url":"https://api.github.com/repos/crowbar/barclamp-nova/issues/496/comments","events_url":"https://api.github.com/repos/crowbar/barclamp-nova/issues/496/events","html_url":"https://github.com/crowbar/barclamp-nova/pull/496","id":143216048,"number":496,"title":"interleave Pacemaker clones to minimise disruption (bsc#965886)","user":{"login":"jsuchome","id":910000,"avatar_url":"https://avatars.githubusercontent.com/u/910000?v=3","gravatar_id":"","url":"https://api.github.com/users/jsuchome","html_url":"https://github.com/jsuchome","followers_url":"https://api.github.com/users/jsuchome/followers","following_url":"https://api.github.com/users/jsuchome/following{/other_user}","gists_url":"https://api.github.com/users/jsuchome/gists{/gist_id}","starred_url":"https://api.github.com/users/jsuchome/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsuchome/subscriptions","organizations_url":"https://api.github.com/users/jsuchome/orgs","repos_url":"https://api.github.com/users/jsuchome/repos","events_url":"https://api.github.com/users/jsuchome/events{/privacy}","received_events_url":"https://api.github.com/users/jsuchome/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-03-24T10:57:15Z","updated_at":"2016-03-25T09:32:00Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/crowbar/barclamp-nova/pulls/496","html_url":"https://github.com/crowbar/barclamp-nova/pull/496","diff_url":"https://github.com/crowbar/barclamp-nova/pull/496.diff","patch_url":"https://github.com/crowbar/barclamp-nova/pull/496.patch"},"body":"By default, Pacemaker clones aren't interleaved.  This means that if\r\nPacemaker wants to restart a dead clone instance, and there is an order\r\nconstraint on that clone, it will do the same restart on all other\r\nnodes, even if all the others are healthy.\r\n\r\nMore details on interleaving are here:\r\n\r\n  https://www.hastexo.com/resources/hints-and-kinks/interleaving-pacemaker-clones/\r\n\r\nThis behaviour is far more disruptive than we want.  For example, in\r\n\r\n  https://bugzilla.suse.com/show_bug.cgi?id=965886\r\n\r\nwe saw that when a network node dies and Pacemaker wants to stop the\r\ninstance of cl-g-neutron-agents on that node, it also stops and restarts\r\nthe same clone instances on the healthy nodes.  This means there is a\r\nsmall window in which there are no neutron agents running anywhere.  If\r\nneutron-ha-tool attempts a router migration during this window, it will\r\nfail, at which point things start to go badly wrong.\r\n\r\nIn general, the cloned (i.e. active/active) services on our controller\r\nand compute nodes should all behave like independent vertical stacks,\r\nso that a failure on one node should not cause ripple effects on other\r\nnodes.  So we interleave all our clones.\r\n\r\n(There is a corresponding commit to crowbar-ha for the Apache clone.)\r\n\r\n(cherry picked from commit bdde4b4dc2534e91bf1f2869a66491463134f8c1)"},"comment":{"url":"https://api.github.com/repos/crowbar/barclamp-nova/issues/comments/201219872","html_url":"https://github.com/crowbar/barclamp-nova/pull/496#issuecomment-201219872","issue_url":"https://api.github.com/repos/crowbar/barclamp-nova/issues/496","id":201219872,"user":{"login":"vuntz","id":1758783,"avatar_url":"https://avatars.githubusercontent.com/u/1758783?v=3","gravatar_id":"","url":"https://api.github.com/users/vuntz","html_url":"https://github.com/vuntz","followers_url":"https://api.github.com/users/vuntz/followers","following_url":"https://api.github.com/users/vuntz/following{/other_user}","gists_url":"https://api.github.com/users/vuntz/gists{/gist_id}","starred_url":"https://api.github.com/users/vuntz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vuntz/subscriptions","organizations_url":"https://api.github.com/users/vuntz/orgs","repos_url":"https://api.github.com/users/vuntz/repos","events_url":"https://api.github.com/users/vuntz/events{/privacy}","received_events_url":"https://api.github.com/users/vuntz/received_events","type":"User","site_admin":false},"created_at":"2016-03-25T09:32:00Z","updated_at":"2016-03-25T09:32:00Z","body":"@jsuchome putting the comment here although it's totally irrelevant to this PR: you didn't backport the swift part :-)"}}