)]}'
{
  "commit": "4b2b2d831b39f57720923d5b0c23f1b6d94be0e9",
  "tree": "f3e655ca41ee8c32a7315611556930c33f72e2e5",
  "parents": [
    "b5f92f10f99c7374c57bebde21d26bec12c38b33"
  ],
  "author": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Tue Jan 12 21:47:15 2021 +0000"
  },
  "committer": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Tue Jan 26 13:29:32 2021 +0100"
  },
  "message": "Avoid creating HTTP Sessions for Git-over-HTTP\n\nThe Change-Id: Iffcd0fbd7 has involuntarily triggered the\ncreation of a new HTTP Session for every invocation a Git-over-HTTP\nrequest.\n\nAll came from the mistake of tracing the HTTP session instead\nof the Gerrit session in the audit record.\nThe HTTP Servlet API specs say that any attempt to access\nthe current session of an incoming request would result\nin the creation of a brand-new session.\n\nThe session involuntarily created also had an expiry time\nequal to zero, which prevented the session housekeeper\nto reclaim them later on, even though they were unused.\n\nThe consequence of creating an empty session for every\nGit-over-HTTP request isn\u0027t immediately tangible, because\nthe session is empty and doesn\u0027t occupy a significant\namount of memory. However, longer-term, the in-memory\nhashtable that records all the sessions, each one using\n750 bytes on average, will be causing the overload\nof the JVM heap and the crash of the process because of\nlack of available memory.\n\nUse the correct Gerrit session-id, retrieving\nfrom the Provider\u003cWebSession\u003e the proper session, if active\nand logged in, and make sure in tests that no HTTP sessions\nare created as a result of a Git-over-http request.\n\nBug: Issue 13858\nChange-Id: I8c086fed54b196c3f46fa88ac78c127784524d30\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "eafffcaf49519fc903b6043f5df83008f941a4d9",
      "old_mode": 33188,
      "old_path": "gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/GerritServer.java",
      "new_id": "fe81a2b7fe317a4a2128e1c781829b811c7ac51e",
      "new_mode": 33188,
      "new_path": "gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/GerritServer.java"
    },
    {
      "type": "modify",
      "old_id": "3d6d16a52eb8a7b39f3ad53c9296848f652b2aa0",
      "old_mode": 33188,
      "old_path": "gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/GitOverHttpServletIT.java",
      "new_id": "8eddd897b59bdceeab85901c1552744608c38c93",
      "new_mode": 33188,
      "new_path": "gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/GitOverHttpServletIT.java"
    },
    {
      "type": "modify",
      "old_id": "0da2f92cd28ea8fcb9eb4f054c315b4ba6e8cecc",
      "old_mode": 33188,
      "old_path": "gerrit-httpd/src/main/java/com/google/gerrit/httpd/GitOverHttpServlet.java",
      "new_id": "0700bbc6a8f2061c917663ca7b87b0f3f7916b44",
      "new_mode": 33188,
      "new_path": "gerrit-httpd/src/main/java/com/google/gerrit/httpd/GitOverHttpServlet.java"
    },
    {
      "type": "modify",
      "old_id": "4dd54ad9222887dacf84115f9f09b499e895ca9e",
      "old_mode": 33188,
      "old_path": "gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java",
      "new_id": "c733be66cfa37eb09df4406ea2d4d5eb8675ffa7",
      "new_mode": 33188,
      "new_path": "gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java"
    },
    {
      "type": "modify",
      "old_id": "25a28a4cfd17cf09828b262598d360dd978b4b09",
      "old_mode": 33188,
      "old_path": "gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/JettyServer.java",
      "new_id": "f7b81fbee7ec20fdd8dacaf95c4fd07d97e6196f",
      "new_mode": 33188,
      "new_path": "gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/JettyServer.java"
    }
  ]
}
