)]}'
{
  "commit": "63b346d8a41f2c6e668bb17600fbc15c4feb1f2f",
  "tree": "e1422afea67211d2dc3b55626d7897df89860bc8",
  "parents": [
    "e6e570ae3c26c5fda4855522e8cf04644627295f"
  ],
  "author": {
    "name": "Serge Bazanski",
    "email": "serge@monogon.tech",
    "time": "Thu Nov 30 12:54:19 2023 +0100"
  },
  "committer": {
    "name": "Serge Bazanski",
    "email": "serge@monogon.tech",
    "time": "Thu Nov 30 15:48:00 2023 +0000"
  },
  "message": "metropolis/node/c/localstorage: make writes durable\n\nWith just a write() -\u003e rename() we can end up with an empty file in case\nof an outage. The write() needs to be followed by an fsync() to avoid\nthat.\n\nSince all of our localstorage framework contains only rarely-written\n\u0027configuration\u0027 style files, we now add such an fsync() to every\nwrite().\n\nThis should fix some flakes in tests and low-load clusters where eg. a\nnode can\u0027t read back its key material or persisted node roles after\nreboot.\n\nChange-Id: Iefae4f8bd68ee2972860a7c58326442c80d8aa8c\nReviewed-on: https://review.monogon.dev/c/monogon/+/2411\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f12f654c18176ddccb168be6dbe0a3df8f7f9290",
      "old_mode": 33188,
      "old_path": "metropolis/node/core/localstorage/declarative/placement_local.go",
      "new_id": "77d407c879208fbcb1b323747baacdac18eba2d6",
      "new_mode": 33188,
      "new_path": "metropolis/node/core/localstorage/declarative/placement_local.go"
    }
  ]
}
