Commit 296d9fc
committed
Fix Flight denormalized field locking issues
Remove real-time updates to Flight.total_views and Flight.total_clicks
to eliminate database lock contention on high-traffic flights.
Changes:
- Remove F() expression updates in Advertisement.incr() that were
causing row-level locks on every impression
- Add Flight.refresh_denormalized_totals() method to calculate
these fields from AdImpression on-demand
- Add refresh_flight_denormalized_totals() Celery task for
periodic background updates
- Add management command to manually refresh flight totals
- Update Offer.refund() to skip Flight field updates
- Update test to manually refresh denormalized fields
The denormalized fields are now calculated from the source of truth
(AdImpression) either on-demand or via scheduled tasks, avoiding
the lock contention that was blocking concurrent ad impressions.1 parent 4772841 commit 296d9fc
File tree
4 files changed
+116
-21
lines changed- adserver
- management/commands
- tests
4 files changed
+116
-21
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1492 | 1492 | | |
1493 | 1493 | | |
1494 | 1494 | | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
| 1507 | + | |
| 1508 | + | |
| 1509 | + | |
| 1510 | + | |
1495 | 1511 | | |
1496 | 1512 | | |
1497 | 1513 | | |
| |||
1909 | 1925 | | |
1910 | 1926 | | |
1911 | 1927 | | |
1912 | | - | |
1913 | | - | |
1914 | | - | |
1915 | | - | |
1916 | | - | |
1917 | | - | |
1918 | | - | |
1919 | | - | |
1920 | | - | |
| 1928 | + | |
| 1929 | + | |
| 1930 | + | |
| 1931 | + | |
| 1932 | + | |
1921 | 1933 | | |
1922 | 1934 | | |
1923 | 1935 | | |
| |||
2917 | 2929 | | |
2918 | 2930 | | |
2919 | 2931 | | |
2920 | | - | |
2921 | | - | |
| 2932 | + | |
| 2933 | + | |
| 2934 | + | |
2922 | 2935 | | |
2923 | | - | |
2924 | | - | |
2925 | | - | |
2926 | 2936 | | |
2927 | 2937 | | |
2928 | 2938 | | |
2929 | 2939 | | |
2930 | | - | |
2931 | | - | |
2932 | | - | |
2933 | 2940 | | |
2934 | 2941 | | |
2935 | 2942 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
924 | 924 | | |
925 | 925 | | |
926 | 926 | | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
927 | 954 | | |
928 | 955 | | |
929 | 956 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
300 | 300 | | |
301 | 301 | | |
302 | 302 | | |
303 | | - | |
304 | | - | |
| 303 | + | |
| 304 | + | |
305 | 305 | | |
306 | 306 | | |
307 | 307 | | |
| |||
315 | 315 | | |
316 | 316 | | |
317 | 317 | | |
318 | | - | |
319 | | - | |
| 318 | + | |
| 319 | + | |
320 | 320 | | |
321 | 321 | | |
322 | 322 | | |
| |||
0 commit comments