• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kobotoolbox / kpi / 29743815627
81%
master: 76%

Build:
Build:
LAST BUILD BRANCH: dev-1635-cleanup-legacy-kobocat-kml-logic
DEFAULT BRANCH: master
Ran 20 Jul 2026 12:56PM UTC
Jobs 10
Files 894
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

20 Jul 2026 12:51PM UTC coverage: 81.393% (+0.01%) from 81.382%
29743815627

push

github

web-flow
feat(longRunningMigrations): keep migration lock fresh with a heartbeat DEV-2427 (#7270)

### 📣 Summary

Background data migrations can now run for up to 24 hours per pass and
recover on their own if a server is restarted, so they finish more
reliably.

### 📖 Description

Some database maintenance tasks run in the background over a very large
amount of data. Until now each pass was capped at about 71 minutes, and
if the server running one was restarted it could stay stuck for a long
time before another server picked it up. These tasks now get up to 24
hours per pass and are retried within minutes if their server goes away,
so they complete without manual intervention.

### 👷 Description for instance maintainers

Long-running migrations now get a dedicated, much longer time budget, up
to about 24 hours per run, separate from the shared limits used by other
background tasks (those keep their current values). New environment
variables let you tune this:
`CELERY_LONG_RUNNING_MIGRATION_TASK_TIME_LIMIT`,
`CELERY_LONG_RUNNING_MIGRATION_TASK_SOFT_TIME_LIMIT`,
`CELERY_LONG_RUNNING_MIGRATION_TASK_HEARTBEAT_INTERVAL` and
`CELERY_LONG_RUNNING_MIGRATION_TASK_HEARTBEAT_TTL`.

While a migration runs, a background heartbeat keeps its lock alive with
a short lease and records that it is still making progress. If the
worker running it dies (for example a Kubernetes pod eviction), the
lease expires within a few minutes and the migration is picked up again
automatically, instead of being blocked until the old time limit
elapsed.

No database schema change and no new migration to run. The defaults are
safe, so no configuration change is required.

9304 of 12654 branches covered (73.53%)

5 of 27 new or added lines in 2 files covered. (18.52%)

751 existing lines in 36 files now uncovered.

30322 of 37254 relevant lines covered (81.39%)

5.51 hits per line

Uncovered Changes

Lines Coverage ∆ File
22
0.0
0.0% kobo/apps/long_running_migrations/tasks.py

Coverage Regressions

Lines Coverage ∆ File
81
0.0
-93.1% kobo/apps/stripe/serializers.py
75
0.0
-41.9% kobo/apps/stripe/views.py
68
27.2
-54.4% kobo/apps/stripe/utils/subscription_limits.py
63
32.52
-51.22% kobo/apps/accounts/forms.py
63
0.0
-51.64% kobo/apps/stripe/models.py
44
20.21
-46.81% kobo/apps/stripe/utils/billing_dates.py
41
45.06
-9.43% kobo/apps/audit_log/models.py
38
34.52
-45.24% kobo/apps/audit_log/base_views.py
27
0.0
-72.97% kobo/apps/accounts/adapter.py
24
74.76
-23.3% kpi/utils/usage_calculator.py
21
0.0
-84.0% kobo/apps/stripe/signals.py
20
52.38
-31.75% hub/models/extra_user_detail.py
20
0.0
-68.97% kobo/apps/audit_log/tasks.py
19
0.0
-65.52% kobo/apps/stripe/admin.py
16
60.0
-11.43% kobo/apps/audit_log/signals.py
16
84.68
-2.88% kobo/apps/openrosa/libs/utils/logger_tools.py
16
31.82
-36.36% kobo/apps/stripe/utils/limit_enforcement.py
13
37.14
-18.57% hub/utils/i18n.py
12
35.0
-60.0% kobo/apps/stripe/utils/import_management.py
10
60.71
-35.71% kobo/apps/audit_log/utils.py
9
0.0
-29.03% kobo/apps/stripe/utils/manual_subscription.py
8
0.0
-100.0% kobo/apps/stripe/urls.py
7
0.0
-100.0% kobo/apps/stripe/apps.py
6
0.0
-100.0% kobo/apps/stripe/exceptions.py
6
0.0
-37.5% kobo/apps/stripe/utils/view_utils.py
4
53.85
-30.77% kobo/apps/accounts/templatetags/customize_email_content.py
4
77.5
-10.0% kobo/apps/kobo_auth/signals.py
4
0.0
0.0% kobo/apps/long_running_migrations/tasks.py
3
65.79
-7.89% kobo/apps/data_collectors/signals.py
3
31.43
-2.86% kobo/apps/organizations/admin/organization.py
3
61.21
-1.82% kobo/apps/organizations/models.py
3
60.53
-7.89% kobo/apps/organizations/utils.py
1
44.44
-5.56% kobo/apps/accounts/templatetags/get_provider_appname.py
1
86.11
-2.78% kobo/apps/openrosa/apps/logger/fields.py
1
92.31
-7.69% kobo/apps/user_reports/utils/migrations.py
1
72.73
-4.55% kpi/urls/__init__.py
Jobs
ID Job ID Ran Files Coverage
1 29743815627.1 20 Jul 2026 12:56PM UTC 890
44.36
2 29743815627.2 20 Jul 2026 12:56PM UTC 890
49.52
3 29743815627.3 20 Jul 2026 12:57PM UTC 890
52.87
4 29743815627.4 20 Jul 2026 12:57PM UTC 892
45.72
5 29743815627.5 20 Jul 2026 12:58PM UTC 892
50.85
6 29743815627.6 20 Jul 2026 12:59PM UTC 892
54.13
7 29743815627.7 20 Jul 2026 12:59PM UTC 890
58.88
8 29743815627.8 20 Jul 2026 12:59PM UTC 892
66.68
9 29743815627.9 20 Jul 2026 01:00PM UTC 894
68.99
10 29743815627.10 20 Jul 2026 01:02PM UTC 892
60.03
Source Files on build 29743815627
  • Tree
  • List 894
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 6609e0c9 on github
  • Prev Build on release/2.026.27 (#29586939962)
  • Next Build on release/2.026.27 (#29752099152)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc