)]}'
{
  "commit": "2432b699726449382e1870409f3e689d6d6b2c42",
  "tree": "97c6377e7d8322a37f16496ac4c1603e4bcf3fe1",
  "parents": [
    "2b7dcedf3360a81d9edb061c2e6e3a8b458c0f00"
  ],
  "author": {
    "name": "Tommi",
    "email": "tommi@webrtc.org",
    "time": "Thu Apr 02 07:59:48 2026"
  },
  "committer": {
    "name": "WebRTC LUCI CQ",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Apr 02 09:16:40 2026"
  },
  "message": "Capture channel pointers on signaling thread to fix data race\n\nThe stats collector previously accessed channel getters directly from\ntransceivers during the collection process. This created a data race if\na transceiver\u0027s channel was cleared on the signaling thread while the\ncollection was still ongoing/queued on the worker thread.\n\nThis change introduces a callback-based mechanism for retrieving media\nchannel statistics and RTP parameters. By capturing these as\nabsl::AnyInvocable objects on the signaling thread at the start of the\nstats collection process, the collector can safely execute them later on\nthe worker thread.\n\nBug: webrtc:481443652\nChange-Id: Ia8ee334df710bc8655e2617e079bf200ab04173e\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/461260\nReviewed-by: Evan Shrubsole \u003ceshr@webrtc.org\u003e\nCommit-Queue: Tomas Gunnarsson \u003ctommi@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#47317}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cad3c587ed02444b734682c19323001c8bbb1a22",
      "old_mode": 33188,
      "old_path": "media/base/fake_media_engine.cc",
      "new_id": "2603c7b4bc51b6675c82cb59ffb5875b8017f4af",
      "new_mode": 33188,
      "new_path": "media/base/fake_media_engine.cc"
    },
    {
      "type": "modify",
      "old_id": "4e5e43a5e30dc0a6936520f8ad12b0951bea834b",
      "old_mode": 33188,
      "old_path": "media/base/fake_media_engine.h",
      "new_id": "acff856d7408c0996fbd73b7faf5b5bffbc6fc78",
      "new_mode": 33188,
      "new_path": "media/base/fake_media_engine.h"
    },
    {
      "type": "modify",
      "old_id": "70756943ff54c78d3e424e27b1db361f7bec5abc",
      "old_mode": 33188,
      "old_path": "media/base/media_channel.h",
      "new_id": "95d1e7e7ec08b77140b2dd21c4d5b2fc7040b908",
      "new_mode": 33188,
      "new_path": "media/base/media_channel.h"
    },
    {
      "type": "modify",
      "old_id": "6b3e0b506bbfe8be0179c78232e0e4f6a397da91",
      "old_mode": 33188,
      "old_path": "media/engine/webrtc_video_engine.cc",
      "new_id": "172c7a12b04d370a15a89ba6a51a66668d321548",
      "new_mode": 33188,
      "new_path": "media/engine/webrtc_video_engine.cc"
    },
    {
      "type": "modify",
      "old_id": "b28211a41f48091122a742c5b7126bd747e38496",
      "old_mode": 33188,
      "old_path": "media/engine/webrtc_video_engine.h",
      "new_id": "d497e42b8e1e5eeaf3885d221ce9799e857404e4",
      "new_mode": 33188,
      "new_path": "media/engine/webrtc_video_engine.h"
    },
    {
      "type": "modify",
      "old_id": "a3c8c9808993d454d3ced20ee742eb6e9f6a25b4",
      "old_mode": 33188,
      "old_path": "media/engine/webrtc_voice_engine.cc",
      "new_id": "0448da09de7a0e807554bb38c6cf92274e62f9ed",
      "new_mode": 33188,
      "new_path": "media/engine/webrtc_voice_engine.cc"
    },
    {
      "type": "modify",
      "old_id": "c38a47f6aac2b7212fc9eb86e7439d1a5d0baf5d",
      "old_mode": 33188,
      "old_path": "media/engine/webrtc_voice_engine.h",
      "new_id": "f033c2179e7ac81bae0eb8ace83d3174bfd1daa3",
      "new_mode": 33188,
      "new_path": "media/engine/webrtc_voice_engine.h"
    },
    {
      "type": "modify",
      "old_id": "8030dd4caeace7b4d002b338207495961399e18b",
      "old_mode": 33188,
      "old_path": "pc/rtc_stats_collector.cc",
      "new_id": "ce8c2b3b9e0781a53da943a67da62f9cb717b7b6",
      "new_mode": 33188,
      "new_path": "pc/rtc_stats_collector.cc"
    },
    {
      "type": "modify",
      "old_id": "c8730060660f82fdf1016c752a6434dff21c91bb",
      "old_mode": 33188,
      "old_path": "pc/rtc_stats_collector.h",
      "new_id": "f20a67d0e36a392a0d18fd7ca1f1ec0f62c234c0",
      "new_mode": 33188,
      "new_path": "pc/rtc_stats_collector.h"
    },
    {
      "type": "modify",
      "old_id": "35905ed3f1b875d2537c48b6d5f83fc4737fdb9d",
      "old_mode": 33188,
      "old_path": "pc/rtc_stats_collector_unittest.cc",
      "new_id": "18b4df299778ba740c47d90a0f247572a6b62feb",
      "new_mode": 33188,
      "new_path": "pc/rtc_stats_collector_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "1e380820d6b84dcfd854f14442bf4ac6862df009",
      "old_mode": 33188,
      "old_path": "pc/test/fake_peer_connection_for_stats.h",
      "new_id": "c2f0f07dda1e7a6f0bb6ea3edcfbda07543b49c2",
      "new_mode": 33188,
      "new_path": "pc/test/fake_peer_connection_for_stats.h"
    },
    {
      "type": "modify",
      "old_id": "1c1f5e32113d8e2aec32dbe3c65dd96b185ecf1c",
      "old_mode": 33188,
      "old_path": "pc/test/mock_voice_media_receive_channel_interface.h",
      "new_id": "feac0eeab03017cd4a7d55a6936aab266111a1f5",
      "new_mode": 33188,
      "new_path": "pc/test/mock_voice_media_receive_channel_interface.h"
    }
  ]
}
