)]}'
{
  "commit": "10daf2425db37415f9c8367872f384e338a128c0",
  "tree": "ffab9680b82359236c68aac78c633fa8895f9350",
  "parents": [
    "7fdfbfac5fa62640548990ee25284ee6dd4af613"
  ],
  "author": {
    "name": "Ajay Gupta",
    "email": "ajagup@qti.qualcomm.com",
    "time": "Tue Nov 03 15:36:44 2026 +0530"
  },
  "committer": {
    "name": "Matthias Sohn",
    "email": "matthias.sohn@sap.com",
    "time": "Fri Nov 06 12:59:31 2026 +0100"
  },
  "message": "PackDirectory: Handle errors in getPack() like other lookups\n\ngetPack(), which backs ObjectDirectory.has() and the restore of\npreserved packs, logged every IOException from Pack.hasObject() as a\nwarning with a stack trace and removed the pack from the list. All other\nlookups (resolve, open, getSize, selectRepresentation) pass the error to\nhandlePackError(), which since 772ee0e5f (\"Log pruned packfiles as debug\nand not warn logs\") and b994eb49a (\"Do not log packfiles moved away or\npruned\") only logs a pack that was deleted at debug level.\n\nA pack disappearing is common for the preserved directory: an external\ngc or GC with prunePreserved removes preserved/ while the pack list\nstill holds the previous packs. When the index of such a pack is no\nlonger in memory, e.g. after core.packedIndexGitUseStrongRefs\u003dfalse let\nit be cleared, the next object lookup miss reopens the deleted index\nand logged \"Unable to read packfile .../preserved/...\". On a busy server\nthis was tens of thousands of warnings a day.\n\nUse handlePackError() in getPack() too, so that it logs the same way\nas the other lookups: deleted packs at debug level, corrupt packs and\nstale file handles as warnings, other errors as errors with exponential\nbackoff. Which packs leave the list is effectively unchanged: a failed\nindex load already marks the pack invalid, so a pack that is not\nremoved here is dropped on the next rescan of the directory.\n\nRemove the now unused unableToReadPackfile message.\n\nChange-Id: I6921d33270234b1af0c58fb8b01edad57918e980\nSigned-off-by: Ajay Gupta \u003cajagup@qti.qualcomm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f649472a31d8cb7b92efc651174f8ec8dd845028",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties",
      "new_id": "744d88af04e9cc918be08eb97436a924f192644b",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties"
    },
    {
      "type": "modify",
      "old_id": "1776f21865321e298eb339baddbf52a56a0a985a",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java",
      "new_id": "43d514d4407329aab4fb93e52d9a24e9ca1f456b",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java"
    },
    {
      "type": "modify",
      "old_id": "02a9a539065d80612450f87dc57c33f7545e8f2b",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java",
      "new_id": "fefee221b5f259f8de765ad6729c731791fe90bf",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java"
    }
  ]
}
