OSSCA Chromium

기여 목록 / 8481931

[net] Remove the expired Net.DNS.DnsHosts.* histograms

NetworkcleanupMerged

HOSTS 파일을 읽고 파싱할 때 파일 크기·항목 수·메모리 사용량을 기록하던 히스토그램 Net.DNS.DnsHosts.Count·EstimateMemoryUsage·FileSize를 제거했습니다. 세 히스토그램은 2024-09-01에 만료돼 이미 기록되지 않았고, 코드에는 «데이터가 충분히 모이면 지워라»는 TODO가 두 곳 남아 있었습니다(crbug.com/40874231). 3파일 −59. horo@가 LGTM과 함께 bashi@의 확인도 받으라고 해 두 사람의 +1을 받았고, histograms.xml은 따로 OWNER 승인이 필요해 nidhijaju@를 추가했습니다. bashi@가 CQ를 돌려 2026-10-02에 머지됐습니다(000dae59cecf4).

문제 설명

  • issue url: https://crbug.com/40874231
  • 2022-12 CL 4075212가 HOSTS 파일 크기를 가늠하려고 세 히스토그램을 넣으면서 «TODO(crbug.com/40874231): Remove this when we have enough data.»를 남겼습니다.
  • histograms.xml의 만료일이 지나 Chrome은 이 값을 더 이상 보내지 않습니다. 히스토그램 문서는 만료된 히스토그램의 기록 코드를 죽은 코드로 보고 지우라고 합니다(expired_intentionally 태그가 붙은 경우만 예외이고, 이 셋에는 없었습니다).

해결 내용

  • net/dns/dns_hosts.cc: 기록 3곳과 TODO 2개, EstimateMemoryUsage를 위한 !BUILDFLAG(CRONET_BUILD) 블록을 지웠습니다. 그 결과 안 쓰게 된 include 3개(histogram_functions.h, memory_usage_estimator.h, cronet_buildflags.h)도 지웠습니다.
  • net/dns/dns_hosts_unittest.cc: ParseHosts 테스트에서 히스토그램 검사만 지웠습니다. 파싱 결과를 비교하는 검사는 그대로 둡니다. 여기서도 안 쓰게 된 include 3개를 지웠습니다.
  • tools/metrics/histograms/metadata/net/histograms.xml: 세 항목을 지웠습니다.
   ParseHostsWithCommaMode(contents, dns_hosts, comma_mode);
-
-  // TODO(crbug.com/40874231): Remove this when we have enough data.
-  base::UmaHistogramCounts100000("Net.DNS.DnsHosts.Count", dns_hosts->size());
-  ...
 }

발굴 과정

K(8461862)에서 만료 히스토그램 정리 규칙을 알게 된 뒤, 트리 전체로 넓혀 훑었습니다. histograms.xml에서 1년 넘게 만료된 1,106개 가운데 809개가 아직 코드에 남아 있었고, 한 파일에서만 기록되며 Mac에서 빌드할 수 있는 것이 528개였습니다. 그중 만료와 TODO라는 두 근거가 함께 있는 이 묶음을 먼저 골랐습니다. Googler들이 «[histogram-cleanup]»으로 같은 정리를 하고 있지만 대부분 Android 쪽이라 겹치지 않는 것을 확인했습니다. OSSCA #569.

테스트 방법

  • net_unittests 빌드: Mac M5, 8분 41초 / 822 스텝
  • net_unittests --gtest_filter='DnsHosts*:*HostsParser*:*DnsConfigService*' 31/31 통과 (히스토그램 검사를 뺀 DnsHostsTest.ParseHosts 포함)
  • presubmit 0 경고 (histograms.xml 검사 포함)

배운 점

  • 히스토그램을 지울 때는 기록 코드뿐 아니라 그것을 확인하는 테스트(HistogramTester)와, 기록 때문에만 있던 조건문·include까지 함께 정리해야 합니다.
  • 만료 히스토그램은 histograms.xml과 코드를 대조하는 스크립트로 한 번에 모을 수 있습니다. 다만 expired_intentionally 예외와 다른 팀의 정리 작업은 반드시 거릅니다.
  • histograms.xml은 tools/metrics/histograms/metadata/<dir>/OWNERS의 승인이 따로 필요합니다. 코드 OWNER 두 명의 LGTM이 모여도 Code-Owners가 채워지지 않아 nidhijaju@를 추가로 받았습니다. 이후 히스토그램 정리 CL은 업로드 전에 코드와 xml의 code-owner 구성을 각각 확인합니다.

참고 자료