Skip to content

Commit b1280ef

Browse files
committed
ref(backup): More auto-deduced options datetime comparators
Previously, we only auto-deduced (from model field types) datetime equality comparators for fields that were already in the comparator map. This caused us to miss a lot of datetimes! Now we're more careful about this, with many more such comparators caught. I've also removed the snapshot test, and tested the exports directly instead, ensuring that they always include milliseconds in datetimes.
1 parent 6139b64 commit b1280ef

File tree

6 files changed

+158
-46
lines changed

6 files changed

+158
-46
lines changed

fixtures/backup/datetime-millis.json

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/sentry/backup/comparators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,7 @@ def auto_assign_datetime_equality_comparators(comps: ComparatorMap) -> None:
797797
fields = e._meta.get_fields()
798798
assign = set()
799799
for f in fields:
800-
if isinstance(f, models.DateTimeField) and name in comps:
800+
if isinstance(f, models.DateTimeField):
801801
# Only auto assign the `DatetimeEqualityComparator` if this field is not mentioned
802802
# by a conflicting comparator.
803803
possibly_conflicting = [

tests/sentry/backup/snapshots/test_comparators/test_default_comparators.pysnap

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ source: tests/sentry/backup/test_comparators.py
103103
- user_id
104104
model_name: sentry.alertrule
105105
- comparators:
106+
- class: DatetimeEqualityComparator
107+
fields:
108+
- date_added
106109
- class: ForeignKeyComparator
107110
fields:
108111
- alert_rule
@@ -114,37 +117,55 @@ source: tests/sentry/backup/test_comparators.py
114117
- query_subscription
115118
model_name: sentry.alertruleactivations
116119
- comparators:
120+
- class: DatetimeEqualityComparator
121+
fields:
122+
- date_added
117123
- class: ForeignKeyComparator
118124
fields:
119125
- alert_rule
120126
- previous_alert_rule
121127
- user_id
122128
model_name: sentry.alertruleactivity
123129
- comparators:
130+
- class: DatetimeEqualityComparator
131+
fields:
132+
- date_added
124133
- class: ForeignKeyComparator
125134
fields:
126135
- alert_rule
127136
- project
128137
model_name: sentry.alertruleexcludedprojects
129138
- comparators:
139+
- class: DatetimeEqualityComparator
140+
fields:
141+
- date_added
130142
- class: ForeignKeyComparator
131143
fields:
132144
- alert_rule
133145
- project
134146
model_name: sentry.alertruleprojects
135147
- comparators:
148+
- class: DatetimeEqualityComparator
149+
fields:
150+
- date_added
136151
- class: ForeignKeyComparator
137152
fields:
138153
- alert_rule
139154
model_name: sentry.alertruletrigger
140155
- comparators:
156+
- class: DatetimeEqualityComparator
157+
fields:
158+
- date_added
141159
- class: ForeignKeyComparator
142160
fields:
143161
- alert_rule_trigger
144162
- integration_id
145163
- sentry_app_id
146164
model_name: sentry.alertruletriggeraction
147165
- comparators:
166+
- class: DatetimeEqualityComparator
167+
fields:
168+
- date_added
148169
- class: ForeignKeyComparator
149170
fields:
150171
- alert_rule_trigger
@@ -163,18 +184,27 @@ source: tests/sentry/backup/test_comparators.py
163184
- owner
164185
model_name: sentry.apiapplication
165186
- comparators:
187+
- class: DatetimeEqualityComparator
188+
fields:
189+
- date_added
166190
- class: ForeignKeyComparator
167191
fields:
168192
- application
169193
- user
170194
model_name: sentry.apiauthorization
171195
- comparators:
196+
- class: DatetimeEqualityComparator
197+
fields:
198+
- expires_at
172199
- class: ForeignKeyComparator
173200
fields:
174201
- application
175202
- user
176203
model_name: sentry.apigrant
177204
- comparators:
205+
- class: DatetimeEqualityComparator
206+
fields:
207+
- date_added
178208
- class: ForeignKeyComparator
179209
fields:
180210
- organization_id
@@ -232,6 +262,10 @@ source: tests/sentry/backup/test_comparators.py
232262
- target_user
233263
model_name: sentry.auditlogentry
234264
- comparators:
265+
- class: DatetimeEqualityComparator
266+
fields:
267+
- created_at
268+
- last_used_at
235269
- class: ForeignKeyComparator
236270
fields:
237271
- user
@@ -259,6 +293,10 @@ source: tests/sentry/backup/test_comparators.py
259293
- user_id
260294
model_name: sentry.authidentityreplica
261295
- comparators:
296+
- class: DatetimeEqualityComparator
297+
fields:
298+
- date_added
299+
- last_sync
262300
- class: ForeignKeyComparator
263301
fields:
264302
- organization_id
@@ -332,6 +370,9 @@ source: tests/sentry/backup/test_comparators.py
332370
fields: []
333371
model_name: sentry.controlimportchunkreplica
334372
- comparators:
373+
- class: DatetimeEqualityComparator
374+
fields:
375+
- last_updated
335376
- class: ForeignKeyComparator
336377
fields: []
337378
model_name: sentry.controloption
@@ -349,6 +390,11 @@ source: tests/sentry/backup/test_comparators.py
349390
- project
350391
model_name: sentry.counter
351392
- comparators:
393+
- class: DatetimeEqualityComparator
394+
fields:
395+
- date_added
396+
- end_date
397+
- start_date
352398
- class: ForeignKeyComparator
353399
fields:
354400
- created_by_id
@@ -361,6 +407,10 @@ source: tests/sentry/backup/test_comparators.py
361407
- project
362408
model_name: sentry.customdynamicsamplingruleproject
363409
- comparators:
410+
- class: DatetimeEqualityComparator
411+
fields:
412+
- date_added
413+
- last_visited
364414
- class: ForeignKeyComparator
365415
fields:
366416
- created_by_id
@@ -373,11 +423,17 @@ source: tests/sentry/backup/test_comparators.py
373423
- project
374424
model_name: sentry.dashboardproject
375425
- comparators:
426+
- class: DatetimeEqualityComparator
427+
fields:
428+
- date_added
376429
- class: ForeignKeyComparator
377430
fields:
378431
- organization
379432
model_name: sentry.dashboardtombstone
380433
- comparators:
434+
- class: DatetimeEqualityComparator
435+
fields:
436+
- date_added
381437
- class: ForeignKeyComparator
382438
fields:
383439
- dashboard
@@ -461,13 +517,19 @@ source: tests/sentry/backup/test_comparators.py
461517
- file_id
462518
model_name: sentry.docintegrationavatar
463519
- comparators:
520+
- class: DatetimeEqualityComparator
521+
fields:
522+
- date_added
464523
- class: EmailObfuscatingComparator
465524
fields:
466525
- email
467526
- class: ForeignKeyComparator
468527
fields: []
469528
model_name: sentry.email
470529
- comparators:
530+
- class: DatetimeEqualityComparator
531+
fields:
532+
- date_added
471533
- class: ForeignKeyComparator
472534
fields:
473535
- organization_id
@@ -734,12 +796,18 @@ source: tests/sentry/backup/test_comparators.py
734796
- user_id
735797
model_name: sentry.incidentseen
736798
- comparators:
799+
- class: DatetimeEqualityComparator
800+
fields:
801+
- date_added
737802
- class: ForeignKeyComparator
738803
fields:
739804
- event_stats_snapshot
740805
- incident
741806
model_name: sentry.incidentsnapshot
742807
- comparators:
808+
- class: DatetimeEqualityComparator
809+
fields:
810+
- date_added
743811
- class: ForeignKeyComparator
744812
fields:
745813
- incident
@@ -844,6 +912,11 @@ source: tests/sentry/backup/test_comparators.py
844912
fields: []
845913
model_name: sentry.monitorlocation
846914
- comparators:
915+
- class: DatetimeEqualityComparator
916+
fields:
917+
- disable_date
918+
- sent_final_email_date
919+
- sent_initial_email_date
847920
- class: ForeignKeyComparator
848921
fields:
849922
- organization
@@ -1010,6 +1083,10 @@ source: tests/sentry/backup/test_comparators.py
10101083
- project_last_used_id
10111084
model_name: sentry.orgauthtoken
10121085
- comparators:
1086+
- class: DatetimeEqualityComparator
1087+
fields:
1088+
- date_added
1089+
- target_run_date
10131090
- class: ForeignKeyComparator
10141091
fields:
10151092
- incident
@@ -1038,6 +1115,10 @@ source: tests/sentry/backup/test_comparators.py
10381115
- project_id
10391116
model_name: sentry.proguardartifactrelease
10401117
- comparators:
1118+
- class: DatetimeEqualityComparator
1119+
fields:
1120+
- date_added
1121+
- first_event
10411122
- class: ForeignKeyComparator
10421123
fields:
10431124
- organization
@@ -1050,6 +1131,9 @@ source: tests/sentry/backup/test_comparators.py
10501131
- project_id
10511132
model_name: sentry.projectartifactbundle
10521133
- comparators:
1134+
- class: DatetimeEqualityComparator
1135+
fields:
1136+
- date_added
10531137
- class: ForeignKeyComparator
10541138
fields:
10551139
- project
@@ -1095,6 +1179,10 @@ source: tests/sentry/backup/test_comparators.py
10951179
- project
10961180
model_name: sentry.projectoption
10971181
- comparators:
1182+
- class: DatetimeEqualityComparator
1183+
fields:
1184+
- date_created
1185+
- last_updated
10981186
- class: ForeignKeyComparator
10991187
fields:
11001188
- project
@@ -1105,6 +1193,9 @@ source: tests/sentry/backup/test_comparators.py
11051193
- project_id
11061194
model_name: sentry.projectplatform
11071195
- comparators:
1196+
- class: DatetimeEqualityComparator
1197+
fields:
1198+
- date_added
11081199
- class: ForeignKeyComparator
11091200
fields:
11101201
- organization
@@ -1176,6 +1267,10 @@ source: tests/sentry/backup/test_comparators.py
11761267
- project
11771268
model_name: sentry.rawevent
11781269
- comparators:
1270+
- class: DatetimeEqualityComparator
1271+
fields:
1272+
- date_added
1273+
- last_seen
11791274
- class: ForeignKeyComparator
11801275
fields:
11811276
- organization
@@ -1317,6 +1412,9 @@ source: tests/sentry/backup/test_comparators.py
13171412
- relocation_validation
13181413
model_name: sentry.relocationvalidationattempt
13191414
- comparators:
1415+
- class: DatetimeEqualityComparator
1416+
fields:
1417+
- date_added
13201418
- class: ForeignKeyComparator
13211419
fields:
13221420
- integration_id
@@ -1337,13 +1435,19 @@ source: tests/sentry/backup/test_comparators.py
13371435
- project
13381436
model_name: sentry.reprocessingreport
13391437
- comparators:
1438+
- class: DatetimeEqualityComparator
1439+
fields:
1440+
- date_added
13401441
- class: ForeignKeyComparator
13411442
fields:
13421443
- environment_id
13431444
- owner
13441445
- project
13451446
model_name: sentry.rule
13461447
- comparators:
1448+
- class: DatetimeEqualityComparator
1449+
fields:
1450+
- date_added
13471451
- class: ForeignKeyComparator
13481452
fields:
13491453
- rule
@@ -1357,6 +1461,10 @@ source: tests/sentry/backup/test_comparators.py
13571461
- rule
13581462
model_name: sentry.rulefirehistory
13591463
- comparators:
1464+
- class: DatetimeEqualityComparator
1465+
fields:
1466+
- date_added
1467+
- until
13601468
- class: ForeignKeyComparator
13611469
fields:
13621470
- alert_rule
@@ -1365,6 +1473,9 @@ source: tests/sentry/backup/test_comparators.py
13651473
- user_id
13661474
model_name: sentry.rulesnooze
13671475
- comparators:
1476+
- class: DatetimeEqualityComparator
1477+
fields:
1478+
- date_added
13681479
- class: ForeignKeyComparator
13691480
fields:
13701481
- organization
@@ -1463,6 +1574,9 @@ source: tests/sentry/backup/test_comparators.py
14631574
- service_hook
14641575
model_name: sentry.servicehookproject
14651576
- comparators:
1577+
- class: DatetimeEqualityComparator
1578+
fields:
1579+
- date_added
14661580
- class: ForeignKeyComparator
14671581
fields:
14681582
- environment
@@ -1505,6 +1619,11 @@ source: tests/sentry/backup/test_comparators.py
15051619
- team_id
15061620
model_name: sentry.teamreplica
15071621
- comparators:
1622+
- class: DatetimeEqualityComparator
1623+
fields:
1624+
- date_added
1625+
- end
1626+
- start
15081627
- class: ForeignKeyComparator
15091628
fields: []
15101629
model_name: sentry.timeseriessnapshot

0 commit comments

Comments
 (0)