)]}'
{
  "commit": "a10017c548b0805eb98e7847c37370dbd37cd8d6",
  "tree": "40a881aaed9d2ede15b1290b3223a8e1291736e8",
  "parents": [
    "10a76acb0f2564a525887f88c4e3aea10f3fc1f2"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Wed Jun 16 16:00:13 2021 -0400"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Jun 24 00:58:33 2021 +0000"
  },
  "message": "Reduce bouncing on the cache lock in ssl_update_cache.\n\nssl_update_cache takes the cache lock to add to the session cache,\nreleases it, and then immediately takes and releases the lock to\nincrement handshakes_since_cache_flush. Then, in 1/255 connections, does\nthe same thing again to flush stale sessions.\n\nMerge the first two into one lock. In doing so, move ssl_update_cache to\nssl_session.cc, so it can access a newly-extracted add_session_lock.\nAlso remove the mode parameter (the SSL knows if it\u0027s a client or\nserver), and move the established_session !\u003d session check to the\ncaller, which more directly knows whether there was a new session.\n\nAlso add some TSan coverage for this path in the tests. In an earlier\niteration of this patch, I managed to introduce a double-locking bug\nbecause we weren\u0027t testing it at all. Confirmed this test catches both\ndouble-locking and insufficient locking. (It doesn\u0027t seem able to catch\nusing a read lock instead of a write lock in SSL_CTX_flush_sessions,\nhowever. I suspect the hash table is distributing the cells each thread\ntouches.)\n\nUpdate-Note: This reshuffles some locks around the session cache.\n(Hopefully for the better.)\n\nChange-Id: I78dca53fda74e036b90110cca7fbcc306a5c8ebe\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/48133\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0fba7377a6a909d0c0993cd7e41d756b30ae52c8",
      "old_mode": 33188,
      "old_path": "ssl/handshake_client.cc",
      "new_id": "d5ccafc2611c3ef4ba951c4b205ba0f7c5fbc1be",
      "new_mode": 33188,
      "new_path": "ssl/handshake_client.cc"
    },
    {
      "type": "modify",
      "old_id": "ec5c8b947833d8bae6538d9876cf524bcbf3676a",
      "old_mode": 33188,
      "old_path": "ssl/handshake_server.cc",
      "new_id": "74ac1338ec8b816ddcaaadb2e5a23795c0067a0b",
      "new_mode": 33188,
      "new_path": "ssl/handshake_server.cc"
    },
    {
      "type": "modify",
      "old_id": "ad199aa904fd4272be4935dd894cea810a959cc5",
      "old_mode": 33188,
      "old_path": "ssl/internal.h",
      "new_id": "ba1dde351fb8f6fe5161ab40be2b744726016937",
      "new_mode": 33188,
      "new_path": "ssl/internal.h"
    },
    {
      "type": "modify",
      "old_id": "ae9883ddb778e7919573eda3967c94ecc1af4829",
      "old_mode": 33188,
      "old_path": "ssl/ssl_lib.cc",
      "new_id": "3c9fc904fb6a2af94ceffc397fb07e870ca01b88",
      "new_mode": 33188,
      "new_path": "ssl/ssl_lib.cc"
    },
    {
      "type": "modify",
      "old_id": "b0f08924f4d90df03976675a9dc959ba3ca8cda8",
      "old_mode": 33188,
      "old_path": "ssl/ssl_session.cc",
      "new_id": "76e6dc44306c1be198364711291f347491105b4a",
      "new_mode": 33188,
      "new_path": "ssl/ssl_session.cc"
    },
    {
      "type": "modify",
      "old_id": "d6edcfe1ffa9e6ee4e481b25e36b9ca12d217b01",
      "old_mode": 33188,
      "old_path": "ssl/ssl_test.cc",
      "new_id": "4bb9c32160742e87040d5b29a6fc6b05c4eaa3c8",
      "new_mode": 33188,
      "new_path": "ssl/ssl_test.cc"
    }
  ]
}
