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

kobotoolbox / kpi / 26871739809
82%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 03 Jun 2026 08:05AM UTC
Jobs 10
Files 882
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

03 Jun 2026 08:00AM UTC coverage: 81.557% (-0.1%) from 81.682%
26871739809

push

github

web-flow
feat(bulkProcessing): implement background execution and polling for bulk actions DEV-1494 (#7080)

📣 Summary
Users can now successfully run bulk transcription and translation jobs
in the background, with real-time progress tracking and automatic
recovery if a network interruption occurs.

📖 Description
This PR implements the core background processing engine for
SubsequenceBulkAction using Celery. It ensures that large-scale audio
processing and translation tasks run asynchronously without blocking the
main API threads.

**Key Architectural Highlights:**
* **Job Orchestration:** Added `start_bulk_item_job` to safely delegate
individual submissions to the existing
`SubmissionSupplement.revise_data()` flow, ensuring complete
compatibility with existing NLP schemas.
* **Progress Polling:** Implemented `update_batch_status` utilizing
pessimistic database locking (`select_for_update(skip_locked=True)`) to
safely calculate and update the parent job's overall progress percentage
without triggering deadlocks.
* **Feature Auto-Provisioning:** Updated the creation serializer to
automatically provision the necessary `QuestionAdvancedFeature` (the
backend column) if it does not already exist for the requested language.
* **System Resilience:** Introduced a `resume_stuck_bulk_actions`
watchdog task (run every 5 minutes) to automatically resume polling for
jobs that experience worker restarts, timeouts, or pod terminations.
* **Async Guard Fix:** Updated the execution guard in `base.py` to
ensure long-running Google Cloud operations properly trigger the
downstream polling mechanism without getting trapped in an infinite
`in_progress` state.
* `BULK_ACTION_STATUS_POLL_INTERVAL` (Default: `30` seconds): Determines
how frequently the background task queries individual child submissions
to compute the overall parent batch progress percentage.
* `BULK_ACTION_STUCK_THRESHOLD` (Default: `300` seconds / 5 minutes):
The expiration window after which an active bulk action j... (continued)

8981 of 12201 branches covered (73.61%)

73 of 459 new or added lines in 9 files covered. (15.9%)

563 existing lines in 36 files now uncovered.

29482 of 36149 relevant lines covered (81.56%)

5.56 hits per line

Uncovered Changes

Lines Coverage ∆ File
222
14.6
-12.23% kobo/apps/subsequences/tasks.py
55
27.63
kobo/apps/subsequences/integrations/google/rate_limit.py
30
30.8
-1.84% kobo/apps/subsequences/models.py
27
19.75
-1.95% kobo/apps/subsequences/integrations/google/google_translate.py
18
19.92
-1.11% kobo/apps/subsequences/integrations/google/google_transcribe.py
18
30.54
-1.7% kobo/apps/subsequences/serializers.py
14
35.69
-1.76% kobo/apps/subsequences/actions/base.py
2
95.12
-4.88% kobo/apps/subsequences/exceptions.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
63
0.0
-51.64% kobo/apps/stripe/models.py
60
26.05
-50.42% kobo/apps/stripe/utils/subscription_limits.py
36
20.21
-38.3% kobo/apps/stripe/utils/billing_dates.py
26
77.37
-13.68% kobo/apps/openrosa/apps/api/viewsets/xform_list_api.py
23
83.52
-4.21% kobo/apps/openrosa/libs/utils/logger_tools.py
22
44.0
-44.0% kobo/apps/data_collectors/authentication.py
22
79.66
-18.64% kobo/apps/openrosa/apps/api/viewsets/xform_submission_api.py
19
0.0
-65.52% kobo/apps/stripe/admin.py
16
31.82
-36.36% kobo/apps/stripe/utils/limit_enforcement.py
12
35.0
-60.0% kobo/apps/stripe/utils/import_management.py
11
0.0
-44.0% kobo/apps/stripe/signals.py
10
40.0
-40.0% kobo/apps/openrosa/apps/api/utils/xml.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
89.02
-7.32% kobo/apps/openrosa/libs/serializers/xform_serializer.py
6
37.5
-37.5% kobo/apps/openrosa/libs/utils/string.py
6
0.0
-100.0% kobo/apps/stripe/exceptions.py
6
0.0
-37.5% kobo/apps/stripe/utils/view_utils.py
5
52.66
-1.21% kobo/apps/audit_log/models.py
5
89.41
-5.88% kobo/apps/openrosa/libs/renderers/renderers.py
4
19.92
-1.11% kobo/apps/subsequences/integrations/google/google_transcribe.py
4
19.75
-1.95% kobo/apps/subsequences/integrations/google/google_translate.py
3
67.5
-7.5% kobo/apps/openrosa/apps/django_digest_backends/cache.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
2
81.44
-1.03% kobo/apps/openrosa/apps/logger/models/instance.py
2
87.8
-4.88% kobo/apps/openrosa/libs/filters.py
1
92.52
-0.93% kobo/apps/openrosa/apps/api/viewsets/briefcase_api.py
1
87.11
-0.39% kobo/apps/openrosa/apps/logger/xform_instance_parser.py
1
65.96
-1.06% kobo/apps/openrosa/libs/utils/middleware.py
1
14.6
-12.23% kobo/apps/subsequences/tasks.py
1
92.31
-7.69% kobo/apps/user_reports/utils/migrations.py
Jobs
ID Job ID Ran Files Coverage
1 26871739809.1 03 Jun 2026 08:05AM UTC 878
50.23
2 26871739809.2 03 Jun 2026 08:05AM UTC 878
53.58
3 26871739809.3 03 Jun 2026 08:06AM UTC 880
46.32
4 26871739809.4 03 Jun 2026 08:07AM UTC 878
44.93
5 26871739809.5 03 Jun 2026 08:07AM UTC 880
51.59
6 26871739809.6 03 Jun 2026 08:07AM UTC 880
54.87
7 26871739809.7 03 Jun 2026 08:07AM UTC 878
59.4
8 26871739809.8 03 Jun 2026 08:08AM UTC 880
66.44
9 26871739809.9 03 Jun 2026 08:09AM UTC 882
68.8
10 26871739809.10 03 Jun 2026 08:09AM UTC 880
60.58
Source Files on build 26871739809
  • Tree
  • List 882
  • Changed 10
  • Source Changed 0
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 817c3ed9 on github
  • Prev Build on main (#26822786285)
  • Next Build on main (#26875904941)
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