Skip to content

Commit fba0014

Browse files
authored
fix(personhog_client): person team mismatch metric overcounting (PostHog#52450)
1 parent fc46c8e commit fba0014

2 files changed

Lines changed: 12 additions & 8 deletions

File tree

posthog/models/person/util.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -234,9 +234,10 @@ def _fetch_persons_by_distinct_ids_via_personhog(
234234
GetPersonsByDistinctIdsInTeamRequest(team_id=team_id, distinct_ids=distinct_ids)
235235
)
236236

237-
valid_results = [r for r in resp.results if r.person and r.person.id and r.person.team_id == team_id]
237+
present_results = [r for r in resp.results if r.person and r.person.id]
238+
valid_results = [r for r in present_results if r.person.team_id == team_id]
238239

239-
mismatched = len(resp.results) - len(valid_results)
240+
mismatched = len(present_results) - len(valid_results)
240241
if mismatched:
241242
PERSONHOG_TEAM_MISMATCH_TOTAL.labels(
242243
operation="get_persons_by_distinct_ids", client_name=get_client_name()
@@ -390,9 +391,10 @@ def personhog_fn() -> dict[str, Person]:
390391
GetPersonsByDistinctIdsInTeamRequest(team_id=team_id, distinct_ids=distinct_ids)
391392
)
392393

393-
valid_results = [r for r in resp.results if r.person and r.person.id and r.person.team_id == team_id]
394+
present_results = [r for r in resp.results if r.person and r.person.id]
395+
valid_results = [r for r in present_results if r.person.team_id == team_id]
394396

395-
mismatched = len(resp.results) - len(valid_results)
397+
mismatched = len(present_results) - len(valid_results)
396398
if mismatched:
397399
PERSONHOG_TEAM_MISMATCH_TOTAL.labels(
398400
operation="get_persons_mapped_by_distinct_id", client_name=get_client_name()
@@ -423,9 +425,10 @@ def _fetch_persons_by_uuids_via_personhog(team_id: int, uuids: list[str]) -> lis
423425

424426
resp = client.get_persons_by_uuids(GetPersonsByUuidsRequest(team_id=team_id, uuids=uuids))
425427

426-
valid_persons = [p for p in resp.persons if p.id and p.team_id == team_id]
428+
present_persons = [p for p in resp.persons if p.id]
429+
valid_persons = [p for p in present_persons if p.team_id == team_id]
427430

428-
mismatched = len(resp.persons) - len(valid_persons)
431+
mismatched = len(present_persons) - len(valid_persons)
429432
if mismatched:
430433
PERSONHOG_TEAM_MISMATCH_TOTAL.labels(operation="get_persons_by_uuids", client_name=get_client_name()).inc(
431434
mismatched

posthog/queries/actor_base_query.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,10 @@ def _fetch_people_via_personhog(
276276
uuids = [str(pid) for pid in people_ids]
277277
resp = client.get_persons_by_uuids(GetPersonsByUuidsRequest(team_id=team_id, uuids=uuids))
278278

279-
valid_persons = [p for p in resp.persons if p.id and p.team_id == team_id]
279+
present_persons = [p for p in resp.persons if p.id]
280+
valid_persons = [p for p in present_persons if p.team_id == team_id]
280281

281-
mismatched = len(resp.persons) - len(valid_persons)
282+
mismatched = len(present_persons) - len(valid_persons)
282283
if mismatched:
283284
PERSONHOG_TEAM_MISMATCH_TOTAL.labels(operation="get_people", client_name=get_client_name()).inc(mismatched)
284285
logger.warning("personhog_team_mismatch", operation="get_people", team_id=team_id, dropped=mismatched)

0 commit comments

Comments
 (0)