기여 목록 / 8450670
[LCPP] Remove the kMultipleLcppKeyInitiatorOriginFix kill switch
LCP Critical Path Predictor(LCPP)가 initiator origin을 검사하는 IsValidInitiatorOrigin()에 남아 있던 킬스위치 kMultipleLcppKeyInitiatorOriginFix를 제거했습니다. 2024-11에 «잘 동작하는 것이 확인되면 제거»라는 주석과 함께 들어와 10개월 넘게 기본 켜짐이었고 버그도 FIXED로 닫혀 있어, 동작은 바뀌지 않습니다(crbug.com/380105415). 1파일 +6/−18. 리뷰에서 chikamune@의 제안으로 IsValidInitiatorOrigin()을 바로 위의 IsURLValidForLcpp()를 재사용하도록 줄인 PS2(최종 +2/−18)가 2026-09-29에 머지됐습니다(eb37902301397). chikamune@와 yyanagisawa@의 +1을 받았고, yyanagisawa@가 +1과 함께 CQ를 돌려 한 번에 통과했습니다.
문제 설명
- issue url: https://crbug.com/380105415
- LCPP는 페이지를 연 origin(initiator)과 URL을 함께 키로 학습합니다(double-keyed LCPP). 수정 CL 6038577이 opaque·빈 host·localhost·https가 아닌 initiator origin을 키에서 거르도록 고치면서, 롤백용 킬스위치로 감싸 두었습니다. 플래그가 꺼지면 host 길이만 검사하는 옛 동작이었습니다.
- 지금은 플래그 정의,
static const bool캐시 변수, 꺼진 쪽 분기만 남아 있었습니다.
해결 내용
lcp_critical_path_predictor_util.cc에서BASE_FEATURE정의와 TODO를 지웠습니다.IsValidInitiatorOrigin()을 켜진 쪽 검사만 남기고 정리했습니다. 캐시 변수와 else 분기가 없어졌습니다.- 같은 파일에 다른
FeatureList사용이 남아 있어 include는 그대로 두었습니다.
bool IsValidInitiatorOrigin(const url::Origin& initiator_origin) {
- static const bool kMultipleLcppKeyInitiatorOriginFixEnabled =
- base::FeatureList::IsEnabled(kMultipleLcppKeyInitiatorOriginFix);
- if (kMultipleLcppKeyInitiatorOriginFixEnabled) {
- ...
- } else {
- return initiator_origin.host().size() <= ...;
- }
+ GURL url = initiator_origin.GetURL();
+ return !initiator_origin.opaque() && url.is_valid() && ...;
}발굴 과정
«kill switch» 주석이 붙은 기본 켜짐 플래그 128개를 모아, 도입 시점과 제거 의도가 적혀 있는지 하나씩 확인한 스캔에서 나온 항목입니다. blame 날짜는 2025-09의 BASE_FEATURE 인자 마이그레이션 커밋으로 덮여 있어 git log -S로 실제 도입일을 다시 쟀습니다. 파일의 열린 CL이 전부 DO-NOT-SUBMIT 실험뿐인 것을 확인하고 OSSCA #496으로 등록했습니다.
테스트 방법
동작 불변 정리라 새 테스트는 없고 기존 테스트 통과가 검증입니다.
gclient sync후unit_tests빌드: Mac M5, 2시간 4분 / 20,718 스텝unit_tests --gtest_filter='LcpCriticalPathPredictor*:*Lcpp*:*LCPP*'127/127 통과- presubmit 0 경고
배운 점
- 킬스위치 후보를 blame으로 거르면 대규모 기계적 마이그레이션 커밋에 날짜가 덮입니다. 도입일은
git log -S'<플래그 이름>' --reverse로 봅니다. - 한 파일에 플래그가 여럿이면 include를 지우기 전에 남은
FeatureList사용을 확인합니다.