)]}'
{
  "commit": "20312b40ed4644c64581b4cc8d93a0fc0035fc71",
  "tree": "5b812982e0b5bfd7ef0c10659393d37ad0062d62",
  "parents": [
    "ff619354a126df5acffd78ee2f072a17d074e7ab"
  ],
  "author": {
    "name": "Serge Bazanski",
    "email": "serge@monogon.tech",
    "time": "Wed Apr 19 13:49:47 2023 +0200"
  },
  "committer": {
    "name": "Serge Bazanski",
    "email": "serge@monogon.tech",
    "time": "Wed Apr 19 15:42:44 2023 +0000"
  },
  "message": "cloud/bmaas: implement exponential backoffs\n\nThis lets work fail with a proper exponential backoff. This is important\nnot just to not hammer external systems, but also to not end up with\nexteremely long and verbose historical logs for repeatedly failing\nprocesses.\n\nTo implement these, we have to slightly alter our model: instead of\nalways persisting backoffs for a given machine, we only persist them as\nlong as the last work for a given process has failed, deleting pertinent\nbackoffs (if any) on success. Then, the existence of a backoff item is\nused to calculate the value of the next backoff.\n\nThe change also introduces and explicit period, in seconds, to the\nbackoff item. It is currently implemented as a nullable field, but a\nfuture migration/update might make them non-nullable (and delete any\nstraggling backoffs that still don\u0027t have the period set).\n\nChange-Id: I958fcd957dae1156349224f07fb8d4836955d375\nReviewed-on: https://review.monogon.dev/c/monogon/+/1565\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "937f4c04d2b5531feb2633932ac3f8469af4711f",
      "old_mode": 33188,
      "old_path": "cloud/bmaas/bmdb/BUILD.bazel",
      "new_id": "761baef66f462c37eef7995c222a8debeedfac58",
      "new_mode": 33188,
      "new_path": "cloud/bmaas/bmdb/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9d22f2af74fd8f52d4eb906bb2bba39284d1d5a6",
      "new_mode": 33188,
      "new_path": "cloud/bmaas/bmdb/backoff_test.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e0cea5fda62b7bf371486a1376ca6b29d9ad2dc1",
      "new_mode": 33188,
      "new_path": "cloud/bmaas/bmdb/model/migrations/1681826233_exponential_backoff.down.sql"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "94fd8a52277f93e4ed7f284871372354e4f5312d",
      "new_mode": 33188,
      "new_path": "cloud/bmaas/bmdb/model/migrations/1681826233_exponential_backoff.up.sql"
    },
    {
      "type": "modify",
      "old_id": "4119f94d9df1a3cbb20cc5c05dcf9be89c0fcdda",
      "old_mode": 33188,
      "old_path": "cloud/bmaas/bmdb/model/queries_base.sql",
      "new_id": "e150fbb7e90129abfbc2116dc33acd4ce50a2bd1",
      "new_mode": 33188,
      "new_path": "cloud/bmaas/bmdb/model/queries_base.sql"
    },
    {
      "type": "modify",
      "old_id": "3d23efcf226319193b174922b92e8c887eba7cdf",
      "old_mode": 33188,
      "old_path": "cloud/bmaas/bmdb/reflection_test.go",
      "new_id": "6b8b506236062dddc1e8331694bf26a9090fc1eb",
      "new_mode": 33188,
      "new_path": "cloud/bmaas/bmdb/reflection_test.go"
    },
    {
      "type": "modify",
      "old_id": "6058b92f07565fd45a23c8e046b7831b91bc74da",
      "old_mode": 33188,
      "old_path": "cloud/bmaas/bmdb/sessions.go",
      "new_id": "144e6da7bd4baca2f289de7f2e1d2fd75e3b0a8f",
      "new_mode": 33188,
      "new_path": "cloud/bmaas/bmdb/sessions.go"
    },
    {
      "type": "modify",
      "old_id": "f3977d576f952a2df5a4e5dcc5c214fa8fcc04f3",
      "old_mode": 33188,
      "old_path": "cloud/bmaas/bmdb/sessions_test.go",
      "new_id": "e697150681e92f0cdf884e2dd6984676c3718156",
      "new_mode": 33188,
      "new_path": "cloud/bmaas/bmdb/sessions_test.go"
    },
    {
      "type": "modify",
      "old_id": "ef0832b0b8f890bfe21ab86a941ce4211a3914ef",
      "old_mode": 33188,
      "old_path": "cloud/shepherd/equinix/manager/control_loop.go",
      "new_id": "aa4138ecc6e6a6a82e26a1a51139812bb56ada8d",
      "new_mode": 33188,
      "new_path": "cloud/shepherd/equinix/manager/control_loop.go"
    },
    {
      "type": "modify",
      "old_id": "4193f4c21b579948c74e6755fa7fc8e1b7bb3798",
      "old_mode": 33188,
      "old_path": "cloud/shepherd/equinix/manager/initializer.go",
      "new_id": "bd1dbba5452b00fe71e2ee7ea09900decc15100a",
      "new_mode": 33188,
      "new_path": "cloud/shepherd/equinix/manager/initializer.go"
    }
  ]
}
