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

kobotoolbox / kpi / 28187712647
80%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 25 Jun 2026 05:19PM UTC
Jobs 10
Files 885
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

25 Jun 2026 05:14PM UTC coverage: 81.374% (-0.2%) from 81.558%
28187712647

push

github

web-flow
fix(longRunningMigrations): backfill root_uuid missed by LRM 0005 DEV-2320 (#7178)

### 📣 Summary

Some submissions returned a 404 on the supplementary data endpoint
because their \`root_uuid\` was never backfilled by LRM 0005 due to a
taggit multi-DB routing bug that silently skipped affected XForms.

### 💭 Notes

- LRM 0005 had a taggit multi-DB routing bug that caused some XForms to
be silently skipped. LRM 0027 is data-driven (`root_uuid IS NULL`) so it
picks up everything missed without relying on tags.
- LRM 0027 waits for LRM 0005 to reach a terminal state via the new
`LongRunningMigrationDependencyError`, caught in `execute()` to retry on
the next beat cycle without failing.
- `clean_duplicated_submissions_root_uuid` now processes batches without
keeping XML in RAM and updates MongoDB in all cases, not only on
conflict.
- `delete_instances()` now pins `AttachmentTrash` and `PeriodicTask` to
the default DB to avoid a crash when called within a
`use_db(settings.OPENROSA_DB_ALIAS)` context.
- LRM 0005 was calling the wrong command on `IntegrityError`; fixed.

8911 of 12130 branches covered (73.46%)

3 of 84 new or added lines in 5 files covered. (3.57%)

2194 existing lines in 93 files now uncovered.

29259 of 35956 relevant lines covered (81.37%)

5.57 hits per line

Uncovered Changes

Lines Coverage ∆ File
73
0.0
kobo/apps/long_running_migrations/jobs/0027_backfill_remaining_root_uuid.py
5
34.62
-1.5% kobo/apps/long_running_migrations/models.py
2
55.36
31.25% kobo/apps/openrosa/apps/logger/utils/instance.py
1
0.0
0.0% kobo/apps/long_running_migrations/jobs/0005_backfill_logger_instance_root_uuid.py

Coverage Regressions

Lines Coverage ∆ File
226
26.4
-63.48% kpi/serializers/v2/asset_permission_assignment.py
169
66.4
-27.44% kpi/serializers/v2/asset.py
157
36.93
-51.31% kpi/views/v2/data.py
98
61.89
-26.49% kpi/views/v2/asset.py
87
29.29
-62.14% kpi/serializers/v2/asset_file.py
81
0.0
-93.1% kobo/apps/stripe/serializers.py
75
0.0
-41.9% kobo/apps/stripe/views.py
70
37.21
-40.7% kpi/serializers/current_user.py
66
31.62
-56.41% kpi/serializers/v2/export_task.py
66
26.85
-61.11% kpi/serializers/v2/paired_data.py
65
26.05
-54.62% kobo/apps/stripe/utils/subscription_limits.py
63
0.0
-51.64% kobo/apps/stripe/models.py
63
34.55
-57.27% kpi/views/v2/paired_data.py
56
27.68
-50.0% kpi/utils/models.py
50
44.12
-49.02% kpi/views/v2/environment.py
44
20.21
-46.81% kobo/apps/stripe/utils/billing_dates.py
42
49.47
-44.21% kpi/views/v2/asset_permission_assignment.py
41
43.7
-30.37% kpi/views/v2/asset_snapshot.py
32
50.75
-47.76% kpi/views/v2/asset_export_settings.py
27
83.0
-13.5% kpi/utils/xml.py
26
27.5
-65.0% kpi/serializers/v2/attachment_delete.py
25
31.11
-55.56% kpi/serializers/v2/data.py
24
71.43
-28.57% kpi/serializers/v2/service_usage.py
24
59.32
-40.68% kpi/views/v2/export_task.py
23
40.48
-54.76% kpi/serializers/v2/deployment.py
22
50.98
-43.14% kpi/serializers/v2/asset_snapshot.py
22
55.56
-40.74% kpi/serializers/v2/permission.py
21
0.0
-84.0% kobo/apps/stripe/signals.py
21
38.33
-35.0% kpi/serializers/v2/asset_export_settings.py
19
0.0
-65.52% kobo/apps/stripe/admin.py
19
33.33
-63.33% kpi/utils/paired_data.py
19
51.06
-40.43% kpi/views/v2/import_task.py
19
49.25
-28.36% kpi/views/v2/user.py
17
44.12
-50.0% kpi/utils/rename_xls_sheet.py
16
62.9
-25.81% kpi/views/v2/attachment.py
14
31.82
-31.82% kobo/apps/stripe/utils/limit_enforcement.py
13
40.0
-43.33% kpi/serializers/v2/asset_counts.py
13
79.05
-12.38% kpi/utils/object_permission.py
13
33.33
-48.15% kpi/utils/prerequisite_migration_checker.py
13
30.43
-56.52% kpi/utils/private_storage.py
12
35.0
-60.0% kobo/apps/stripe/utils/import_management.py
11
70.18
-19.3% kpi/utils/mailer.py
11
75.0
-21.15% kpi/views/v2/asset_file.py
10
78.85
-19.23% kpi/serializers/v2/user.py
10
47.69
-15.38% kpi/utils/hash.py
10
63.33
-33.33% kpi/views/v2/asset_version.py
9
0.0
-29.03% kobo/apps/stripe/utils/manual_subscription.py
9
77.07
-3.41% kpi/utils/mongo_helper.py
8
0.0
-100.0% kobo/apps/stripe/urls.py
8
85.71
-11.43% kpi/utils/cache.py
7
0.0
-100.0% kobo/apps/stripe/apps.py
7
52.94
-41.18% kpi/serializers/v2/reports.py
7
61.9
-16.67% kpi/utils/urls.py
7
74.07
-25.93% kpi/views/v2/attachment_delete.py
7
75.86
-24.14% kpi/views/v2/tag.py
6
0.0
-100.0% kobo/apps/stripe/exceptions.py
6
0.0
-37.5% kobo/apps/stripe/utils/view_utils.py
6
80.0
-20.0% kpi/serializers/v2/tag.py
6
65.87
-4.76% kpi/utils/autoname.py
5
62.07
-5.75% kpi/tasks.py
5
76.0
-20.0% kpi/views/v2/asset_submission_counts.py
5
61.54
-38.46% kpi/views/v2/logout.py
5
73.91
-21.74% kpi/views/v2/user_asset_subscription.py
4
76.19
-19.05% kpi/serializers/v2/user_asset_subscription.py
4
20.0
-80.0% kpi/utils/placeholders.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
3
78.57
-10.71% kpi/utils/submission.py
3
30.67
-4.0% kpi/utils/two_database_configuration_checker.py
3
75.0
-25.0% kpi/views/v2/open_rosa.py
3
84.21
-15.79% kpi/views/v2/permission.py
2
84.8
25.64% kobo/apps/openrosa/libs/utils/logger_tools.py
2
92.73
-3.64% kpi/signals.py
2
96.55
-2.3% kpi/utils/asset_content_analyzer.py
2
85.92
-2.82% kpi/utils/sluggify.py
2
42.17
-2.41% kpi/utils/storage.py
2
88.24
-11.76% kpi/views/v2/service_usage.py
1
34.62
-1.5% kobo/apps/long_running_migrations/models.py
1
92.31
-7.69% kobo/apps/user_reports/utils/migrations.py
1
91.3
-4.35% kpi/serializers/v2/asset_version.py
1
62.5
-12.5% kpi/utils/datetime.py
1
93.94
-1.01% kpi/utils/django_orm_helper.py
1
81.25
-6.25% kpi/utils/drf_exceptions.py
1
50.0
-50.0% kpi/utils/export_task.py
1
75.0
-25.0% kpi/utils/gravatar_url.py
1
96.67
-3.33% kpi/utils/project_views.py
1
94.12
-5.88% kpi/utils/strings.py
1
98.06
-0.97% kpi/utils/usage_calculator.py
1
84.62
-7.69% kpi/versioning.py
1
55.56
-2.22% kpi/views/current_user.py
1
42.5
-2.5% kpi/views/__init__.py
1
93.33
-6.67% kpi/views/v2/asset_usage.py
Jobs
ID Job ID Ran Files Coverage
1 28187712647.1 25 Jun 2026 05:19PM UTC 881
45.12
2 28187712647.2 25 Jun 2026 05:20PM UTC 881
50.45
3 28187712647.3 25 Jun 2026 05:20PM UTC 881
53.8
4 28187712647.4 25 Jun 2026 05:21PM UTC 883
55.1
5 28187712647.5 25 Jun 2026 05:22PM UTC 883
66.17
6 28187712647.6 25 Jun 2026 05:22PM UTC 883
51.81
7 28187712647.7 25 Jun 2026 05:22PM UTC 883
46.51
8 28187712647.8 25 Jun 2026 05:22PM UTC 881
59.72
9 28187712647.9 25 Jun 2026 05:24PM UTC 883
60.9
10 28187712647.10 25 Jun 2026 05:25PM UTC 885
68.54
Source Files on build 28187712647
  • Tree
  • List 885
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • a777e408 on github
  • Prev Build on release/2.026.23 (#28055000383)
  • Next Build on release/2.026.23 (#28201137575)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc