)]}' { "commit": "978cfadd31cf6299758dbb5165d451ce91989f1a", "tree": "5f945e4c914d4b6bdd912dfc2432615d1e5a978e", "parents": [ "95888ee714434b81cb02e8f657fb798b0185a95c" ], "author": { "name": "Damien Neil", "email": "dneil@google.com", "time": "Sat Sep 11 18:41:19 2021 -0700" }, "committer": { "name": "Damien Neil", "email": "dneil@google.com", "time": "Fri Sep 17 22:17:30 2021 +0000" }, "message": "http2: avoid blocking while holding ClientConn.mu\n\nOperations which examine the state of a ClientConn--notably,\nthe connection pool\u0027s check to see if a conn is available to\ntake a new request--need to acquire mu. Blocking while holding mu,\nsuch as when writing to the network, blocks these operations.\n\nRemove blocking operations from the mutex.\nPerform network writes with only ClientConn.wmu held.\nClarify that wmu guards the per-conn HPACK encoder and buffer.\n\nAdd a new mutex guarding request creation, covering the critical\nsection starting with allocating a new stream ID and continuing\nuntil the stream is created.\n\nFix a locking issue where trailers were written from the HPACK\nbuffer with only wmu held, but headers were encoded into the buffer\nwith only mu held. (Now both encoding and writes occur with wmu\nheld.)\n\nFixes golang/go#32388.\nFixes golang/go#48340.\n\nChange-Id: Ibb313424ed2f32c1aeac4645b76aedf227b597a3\nReviewed-on: https://go-review.googlesource.com/c/net/+/349594\nTrust: Damien Neil \u003cdneil@google.com\u003e\nRun-TryBot: Damien Neil \u003cdneil@google.com\u003e\nTryBot-Result: Go Bot \u003cgobot@golang.org\u003e\nReviewed-by: Brad Fitzpatrick \u003cbradfitz@golang.org\u003e\n", "tree_diff": [ { "type": "modify", "old_id": "aaaffa8f00c2558eb31242b444ea0fbf13645b39", "old_mode": 33188, "old_path": "http2/transport.go", "new_id": "dc4bdde83f5090ad70912d083cbcac4d0243a340", "new_mode": 33188, "new_path": "http2/transport.go" }, { "type": "modify", "old_id": "97735fe2ce5f65c5bbe9883dd6d9e6c01f161b30", "old_mode": 33188, "old_path": "http2/transport_test.go", "new_id": "ab316400f1395ccf367c76452cf9916b9eb6201b", "new_mode": 33188, "new_path": "http2/transport_test.go" } ] }