)]}'
{
  "commit": "ad8982fcd78a3408c024d9031fa611b48dd86304",
  "tree": "b6a7f84b0d7d8e1d4531883eac22dab990c6f1c7",
  "parents": [
    "fc6e1cf11d0d96fac1e8d52b5787b207f8b1fd9f"
  ],
  "author": {
    "name": "Jan Schär",
    "email": "jan@monogon.tech",
    "time": "Tue Sep 17 13:56:34 2024 +0200"
  },
  "committer": {
    "name": "Jan Schär",
    "email": "jan@monogon.tech",
    "time": "Thu Sep 26 11:44:09 2024 +0000"
  },
  "message": "m/node/core: remove etcd membership before removing consensus role\n\nWhen removing the consensus role, we also need to remove etcd\nmembership. It is safer to remove membership first, and then the role,\nbecause otherwise, the etcd cluster is in a degraded state during the\ntime where etcd on the node has been stopped, but the node is still\ncounted as a voting member by etcd.\n\nIf the membership is removed, but then removing the role fails, the\ncluster ends up in an inconsistent state. If the affected node was the\ncurator or etcd leader, that will almost certainly happen. In this case,\nthe request can just be retried until it succeeds, and then the cluster\nstate is consistent again between etcd membership and roles.\n\nChange-Id: I1ab526470a4201e76817e8ca0a597996fb903d1f\nReviewed-on: https://review.monogon.dev/c/monogon/+/3437\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "55b43394ca6413c92a84b73c87d35430e7052daf",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/consensus/status.go",
      "new_id": "ee3efbcda975132d9bad7f6223ff5b4ec0c3fc8a",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/consensus/status.go"
    },
    {
      "type": "modify",
      "old_id": "6315c1472ff724fa043135426bda5b97f9712748",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/impl_leader_management.go",
      "new_id": "338cc172539b458ffc08cbf0b100b93354e5d92a",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_leader_management.go"
    },
    {
      "type": "modify",
      "old_id": "3d9c688234f499a28b3c9a265552db1a06ce33c6",
      "old_mode": 33188,
      "old_path": "metropolis/test/e2e/suites/ha/BUILD.bazel",
      "new_id": "a88d4f712a37c6f2331acb70154b1f97fe1b4dbc",
      "new_mode": 33188,
      "new_path": "metropolis/test/e2e/suites/ha/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "f2f7cc2528b2ebff370804aed6fc769141b4b5d9",
      "old_mode": 33188,
      "old_path": "metropolis/test/e2e/suites/ha/run_test.go",
      "new_id": "7dcd228dda478debb21a866bb97a7b18f110137d",
      "new_mode": 33188,
      "new_path": "metropolis/test/e2e/suites/ha/run_test.go"
    }
  ]
}
