{"push_id":1036374777,"size":2,"distinct_size":2,"ref":"refs/heads/master","head":"3f9a2a51029099bd9c26377e016e2280a72a6d76","before":"f5fb9af666e2f0b23a5688f65fb8b2956922b209","commits":[{"sha":"aa0dcacdd5126b5dc8d90be84083732ce86f8723","author":{"email":"16893d9ebb20824bb0dcf1cf4049e66004efe78c@squareup.com","name":"Peter Tseng"},"message":"Revert \"roll: conservatively treat old unknown-health nodes as healthy\"\n\nThis reverts commit 0ffe7f9987a432451a241fb7a394762c22848a3a.\n\nThe reason we thought we wanted that commit was because enables the case\nof a migration from a different deployment tool onto p2. For example, if\nwe have three unknown nodes on the old side and minimum health is 2, we\nwant to roll one node at a time.\n\nHowever, this code is inapplicable in a migration from a different\ndeployment tool, because the nodes simply will not exist on the old RC.\nThe old RC's desired node count will be 0, since that is the default\nnumber for an old RC. So the unknown health code path never gets\ntriggered.\n\nThe proper way to support migrations from another deployment tool is\nd045410ce859ab06b5c1ad46904e108de5912754.\n\nWe ran into a case today where we mistakenly rolled a node under this\ncondition:\n\n```json\n{\n  \"msg\": \"Adding 1 new nodes and removing 1 old nodes\",\n    \"new\": {\n    \"Desired\": 0,\n    \"Current\": 0,\n    \"Real\": 0,\n    \"Healthy\": 0,\n    \"Unhealthy\": 0,\n    \"Unknown\": 0\n\n    },\n  \"nextAdd\": 1,\n  \"nextRemove\": 1,\n  \"old\": {\n    \"Desired\": 2,\n    \"Current\": 2,\n    \"Real\": 2,\n    \"Healthy\": 1,\n    \"Unhealthy\": 0,\n    \"Unknown\": 1\n\n  },\n  \"pod\": \"censored\"\n}\n```\n\nIn fact, the old unknown-health node was unhealthy.\n\nIt is ALWAYS safer to NEVER include the unknown health node in the\nhealthy count, because increasing oldHealthy always increases headroom\nwhereas that headroom might not exist if the unknown health node is\nactually unhealthy instead of healthy.\n\nIn an ideal world, we would be able to have selective rolling, where we\nare able to say \"schedule N nodes but only on unhealthy/unknown nodes\",\nbut until we have that capability it is best to be safe.","distinct":true,"url":"https://api.github.com/repos/petertseng/p2/commits/aa0dcacdd5126b5dc8d90be84083732ce86f8723"},{"sha":"3f9a2a51029099bd9c26377e016e2280a72a6d76","author":{"email":"cdad6295c1157a22ae796746d7d73d2f4193ca92@users.noreply.github.com","name":"Peter Tseng"},"message":"Merge pull request #432 from petertseng/roll-not-unknown\n\nRevert \"roll: conservatively treat old unknown-health nodes as healthy\"","distinct":true,"url":"https://api.github.com/repos/petertseng/p2/commits/3f9a2a51029099bd9c26377e016e2280a72a6d76"}]}