[webkit-changes] [WebKit/WebKit] 99bbc3: Race condition in report-processor between fetchin...
dewei-zhu
noreply at github.com
Tue Jul 9 11:27:37 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 99bbc3cc4b9e93b97035efcbd980245652de5223
https://github.com/WebKit/WebKit/commit/99bbc3cc4b9e93b97035efcbd980245652de5223
Author: Dewei Zhu <dewei_zhu at apple.com>
Date: 2024-07-09 (Tue, 09 Jul 2024)
Changed paths:
M Websites/perf.webkit.org/public/include/report-processor.php
Log Message:
-----------
Race condition in report-processor between fetching `tests` and `test_metrics` tables
rdar://131324950
https://bugs.webkit.org/show_bug.cgi?id=276330
Reviewed by Ryosuke Niwa.
The race condition is caused by `tests` and `test_metrics` not being fetched atomically.
New `tests` and `test_metrics` entries can be inserted by another concurrent call after `tests` table
fetch but before `test_metrics` fetch. `test_metrics` can refer to a new test and cause null reference
in the array key by test id.
The fix is to ignore new `test_metrics` based on following observation:
1. `ReportProcessor->fetch_tests` builds `ReportProcessor->tests` variable which is only used by
`ReportProcessor->recursively_ensure_tests`.
2. `ReportProcessor->recursively_ensure_tests` handles missing tests / metrics by fetching them
from database.
* Websites/perf.webkit.org/public/include/report-processor.php: Add a null check on `$test['metrics']`.
Canonical link: https://commits.webkit.org/280784@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list