Skip to content

Commit 21bd02a

Browse files
authored
[CI] Base data staleness off activity instead of creation (#829)
Instead of strictly using age to determine when to stop updating data for a pull request, use the time since the most recent pull request activity. This will address cases where pull requests can have ongoing reviews and discussions for months prior to approval and submission.
1 parent 04d44e5 commit 21bd02a

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

premerge/ops-container/amend_pull_request_data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def mark_stale_pull_request_data_in_bigquery(
9292
pull_request_state = 'OPEN'
9393
AND TIMESTAMP_DIFF(
9494
CURRENT_TIMESTAMP(),
95-
TIMESTAMP_SECONDS(pull_request_timestamp_seconds),
95+
TIMESTAMP_SECONDS(last_updated_at_timestamp_seconds),
9696
DAY
9797
) > @cutoff_age_days
9898
"""

premerge/ops-container/operational_metrics_lib.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
number
2323
state
2424
createdAt
25+
updatedAt
2526
mergedAt
2627
label_events: timelineItems(last: 10, itemTypes: [LABELED_EVENT]) {
2728
nodes {
@@ -76,6 +77,7 @@ class LLVMPullRequestData:
7677
pull_request_title: str
7778
pull_request_state: str
7879
pull_request_timestamp_seconds: int
80+
last_updated_at_timestamp_seconds: int
7981
merged_at_timestamp_seconds: int | None
8082
associated_commit: str | None
8183
labels: list[dict[str, str]]
@@ -204,6 +206,9 @@ def parse_pull_request_data(
204206
create_unix_timestamp = int(
205207
datetime.datetime.fromisoformat(pull_request["createdAt"]).timestamp()
206208
)
209+
updated_unix_timestamp = int(
210+
datetime.datetime.fromisoformat(pull_request["updatedAt"]).timestamp()
211+
)
207212
if pull_request["mergedAt"] is not None:
208213
merge_unix_timestamp = int(
209214
datetime.datetime.fromisoformat(pull_request["mergedAt"]).timestamp()
@@ -241,6 +246,7 @@ def parse_pull_request_data(
241246
pull_request_title=pull_request["title"],
242247
pull_request_state=pull_request["state"],
243248
pull_request_timestamp_seconds=create_unix_timestamp,
249+
last_updated_at_timestamp_seconds=updated_unix_timestamp,
244250
merged_at_timestamp_seconds=merge_unix_timestamp,
245251
associated_commit=associated_commit,
246252
labels=labels,

premerge/ops-container/process_llvm_commits_test.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def _create_pull_request_api_data(
6363
pull_request_number: int,
6464
pull_request_title: str,
6565
created_at: str | None = None,
66+
updated_at: str | None = None,
6667
merged_at: str | None = None,
6768
pull_request_author: str | None = None,
6869
reviews: list[dict[str, Any]] | None = None,
@@ -78,6 +79,7 @@ def _create_pull_request_api_data(
7879
'title': pull_request_title,
7980
'state': 'MERGED',
8081
'createdAt': created_at,
82+
'updatedAt': updated_at,
8183
'mergedAt': merged_at,
8284
'reviews': {'nodes': reviews or []},
8385
'label_events': {
@@ -286,6 +288,7 @@ def test_extract_pull_request_data(self):
286288
pull_request_number=12345,
287289
pull_request_title='[TEST] Title',
288290
created_at=created_at_iso,
291+
updated_at=merged_at_iso,
289292
merged_at=merged_at_iso,
290293
pull_request_author='pull_request_author',
291294
labels=['llvm:test-label'],
@@ -311,6 +314,10 @@ def test_extract_pull_request_data(self):
311314
pull_request_data[0].pull_request_timestamp_seconds,
312315
created_at.timestamp(),
313316
)
317+
self.assertEqual(
318+
pull_request_data[0].last_updated_at_timestamp_seconds,
319+
merged_at.timestamp(),
320+
)
314321
self.assertEqual(
315322
pull_request_data[0].merged_at_timestamp_seconds,
316323
merged_at.timestamp(),
@@ -330,6 +337,7 @@ def test_extract_pull_request_data_with_missing_author(self):
330337
pull_request_number=12345,
331338
pull_request_title='[TEST] Title',
332339
created_at=created_at_iso,
340+
updated_at=created_at_iso,
333341
)
334342
commit_api_data = {
335343
'commit_abcdef': self._create_commit_api_data(

0 commit comments

Comments
 (0)