)]}'
{
  "commit": "3c885deeda9ab560ee29e94159782ce4323af80e",
  "tree": "5d6a18c0b822accc5c279240c0d7e52ca071a361",
  "parents": [
    "aad79488d417eefafd4102bda9bd10d6473cf6c7"
  ],
  "author": {
    "name": "Serge Bazanski",
    "email": "serge@nexantic.com",
    "time": "Thu Jun 17 17:21:00 2021 +0200"
  },
  "committer": {
    "name": "Sergiusz Bazanski",
    "email": "serge@nexantic.com",
    "time": "Mon Jul 05 18:19:36 2021 +0000"
  },
  "message": "m/n/core/curator: implement gRPC listener\n\nThis implements the Curator listener and listener dispatcher, two\nrunnables responsible for maintaining an active Curator RPC\nimplementation (either leader or follower) and switching over\nappropriately as the election status changes.\n\nThis might be overengineered. The implementation switchover logic and\ncontext joining could possibly be ripped out and replaced by plain gRPC\nsocket close and re-open on switchover.\n\nTesting plan: implements unit tests for switching/dispatching.\n\nChange-Id: Ib62195b336d0754d99865d7a2a32ba2ffa3543ce\nReviewed-on: https://review.monogon.dev/c/monogon/+/185\nReviewed-by: Lorenz Brun \u003clorenz@nexantic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7ff9a0e3bee90241a662ee034b8a56bb2581b5f0",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/BUILD.bazel",
      "new_id": "f52233df75c901ad66158238b98166d40cb5a05e",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "fe7aabf790378a855f753ef7e45cbdae02c3b42e",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/curator/curator.go",
      "new_id": "2dc755630797ab59dcb631ee761fc9017ddb6b59",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/curator.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "85e6bf54c56e0f8417aeeb0e68017303e2fb3ac5",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_follower.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2f19fd5f6e6532725ab38b2d55f0729380c63616",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/impl_leader.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "29b1167c6811e1d0f705360e241aa561f125c275",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/listener.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0739d842030899090abf3f6dc8df2b953baa42a7",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/curator/listener_test.go"
    }
  ]
}
