기여 목록 / 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 구성을 각각 확인합니다.