Skip to content

Commit

Permalink
fix: deduplicate component measurements (#693)
Browse files Browse the repository at this point in the history
  • Loading branch information
joseph-sentry authored Sep 9, 2024
1 parent 728c825 commit 37f512c
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 11 deletions.
6 changes: 6 additions & 0 deletions services/tests/test_timeseries.py
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,12 @@ def test_commit_measurement_insert_components(
"flag_regexes": [],
"paths": [r"folder/*"],
},
{ # testing duplicate component on purpose this was causing crashes
"component_id": "all_settings",
"name": "all settings",
"flag_regexes": [],
"paths": [r"folder/*"],
},
{
"component_id": "path_not_found",
"name": "no expected covarage",
Expand Down
53 changes: 42 additions & 11 deletions services/timeseries.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ def save_commit_measurements(
if MeasurementName.component_coverage.value in dataset_names:
components = current_yaml.get_components()
if components:
measurements = []
measurements = dict()

for component in components:
if component.paths or component.flag_regexes:
Expand All @@ -143,19 +143,50 @@ def save_commit_measurements(
)

if filtered_report.totals.coverage is not None:
measurements.append(
dict(
name=MeasurementName.component_coverage.value,
owner_id=commit.repository.ownerid,
repo_id=commit.repoid,
branch=commit.branch,
commit_sha=commit.commitid,
timestamp=commit.timestamp,
measurable_id=f"{component.component_id}",
value=float(filtered_report.totals.coverage),
measurement_key = (
MeasurementName.component_coverage.value,
commit.repository.ownerid,
commit.repoid,
f"{component.component_id}",
commit.commitid,
commit.timestamp,
)
if (
existing_measurement := measurements.get(measurement_key)
) is not None:
log.warning(
"Duplicate measurement keys being added to measurements",
extra=dict(
repoid=commit.repoid,
commit_id=commit.id_,
commitid=commit.commitid,
measurement_key=measurement_key,
existing_value=existing_measurement.get("value"),
new_value=float(filtered_report.totals.coverage),
),
)

measurements[
(
MeasurementName.component_coverage.value,
commit.repository.ownerid,
commit.repoid,
f"{component.component_id}",
commit.commitid,
commit.timestamp,
)
] = dict(
name=MeasurementName.component_coverage.value,
owner_id=commit.repository.ownerid,
repo_id=commit.repoid,
branch=commit.branch,
commit_sha=commit.commitid,
timestamp=commit.timestamp,
measurable_id=f"{component.component_id}",
value=float(filtered_report.totals.coverage),
)

measurements = list(measurements.values())
if len(measurements) > 0:
log.info(
"Upserting component coverage measurements",
Expand Down

0 comments on commit 37f512c

Please sign in to comment.