OSSCA Chromium

기여 목록 / 8461862

[predictors] Remove the expired Navigation.Prefetch.*BodySize histograms

BrowsercleanupMerged

PrefetchManager가 prefetch 응답 본문 크기를 압축 여부별로 기록하던 히스토그램 Navigation.Prefetch.CompressedBodySize·UncompressedBodySize를 제거했습니다. 코드에는 «2024년 10월에 제거» TODO가 있었고, 두 히스토그램 모두 2025-04-27에 만료돼 이미 기록되지 않는 상태였습니다(crbug.com/335524391). 2파일 −45. ricea@와 nhiroki@의 +1을 받아 nhiroki@가 CQ를 돌렸고, 한 번에 통과해 2026-10-01에 머지됐습니다(f119de2fd37b3).

문제 설명

  • issue url: https://crbug.com/335524391
  • CL 5465402(2024-04)가 prefetch 응답이 압축돼 오는지 보려고 두 히스토그램을 추가하면서, «2024년 10월에 지우고 결과를 버그에 기록한다»는 TODO를 남겼습니다.
  • histograms.xml의 만료일(2025-04-27)이 지나 Chrome은 이 값을 더 이상 보내지 않습니다. 기록 코드는 죽은 코드로 남아 있었습니다.

해결 내용

  • chrome/browser/predictors/prefetch_manager.cc의 OnPrefetchFinished()에서 TODO와 기록 블록(18줄)을 지웠습니다.
  • tools/metrics/histograms/metadata/navigation/histograms.xml에서 두 항목을 지웠습니다.
  • 파일의 다른 히스토그램이 histogram_functions.h를 계속 쓰므로 include는 그대로 두었습니다.
-  // TODO(ricea): Remove these histograms in October 2024 and make a note of the
-  // results in https://crbug.com/335524391.
-  if (status.error_code == net::OK &&
-      status.decoded_body_length.InBytes() > 0) {
-    ...
-  }

발굴 과정

날짜 기반 만료 TODO 스윕에서 나온 항목입니다. 히스토그램 문서(tools/metrics/histograms/README.md)를 먼저 확인했습니다. 만료된 히스토그램의 기록 코드는 «죽은 코드이므로 제거하고 histograms.xml 항목도 정리한다», 만료된 경우 폐기 메시지는 생략할 수 있고 «현재 owner 전원의 리뷰를 받는다»고 되어 있어 그대로 따랐습니다. 첫 리뷰어는 TODO를 남긴 ricea@였습니다. ricea@의 +1 뒤에도 두 파일 모두 code owner 승인이 비어 있어(ricea@는 어느 OWNERS에도 없음), chrome/browser/predictors와 navigation 히스토그램 양쪽 OWNER인 nhiroki@를 두 번째 리뷰어로 추가했습니다. OSSCA #536.

같은 파일의 다른 히스토그램 세 개(IsHttps, PrefetchJobQueueingTime, PrefetchJobQueueLength)도 만료돼 있었지만, 이번 CL은 TODO가 지목한 두 개로 범위를 한정했습니다.

테스트 방법

동작 불변 정리라 새 테스트는 없고 기존 테스트 통과가 검증입니다. 두 히스토그램을 참조하는 테스트는 없었습니다.

  • unit_tests 빌드: Mac M5, 4시간 3분 / 31,858 스텝(직전에 media 공용 헤더를 바꾼 다른 브랜치를 빌드한 여파로 재컴파일이 컸음)
  • unit_tests --gtest_filter='PrefetchManager*:*LoadingPredictor*' 114/114 통과
  • presubmit 0 경고(histograms.xml 검사 포함)

배운 점

  • 만료 히스토그램 정리는 코드와 histograms.xml을 한 CL에서 함께 지우고, 리뷰어는 histograms.xml의 owner 전원으로 잡습니다.
  • 히스토그램 owner(<owner> 태그)와 code owner는 다릅니다. histograms.xml은 tools/metrics/histograms/metadata/<디렉터리>/OWNERS의 승인이 따로 필요해서, 코드와 메타데이터 양쪽 OWNERS에 있는 사람을 고르면 리뷰어 한 명으로 둘 다 채울 수 있습니다.
  • 공용 헤더를 바꾼 브랜치를 빌드한 뒤 다른 브랜치로 옮기면 그 헤더를 쓰는 파일이 전부 다시 컴파일됩니다. 그런 브랜치는 그날 마지막에 빌드합니다.
  • TODO의 «결과를 버그에 기록한다»는 UMA 데이터에 접근할 수 있는 원 작성자의 몫이라, CL에서는 코드 정리만 하고 그 점을 밝혀 둡니다.

참고 자료