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

kobotoolbox / kpi / 22623490474 / 1
82%
master: 76%

Build:
Build:
LAST BUILD BRANCH: dependabot/github_actions/actions-deps-78e37b62cc
DEFAULT BRANCH: master
Ran 03 Mar 2026 01:18PM UTC
Files 880
Run time 22s
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 Mar 2026 12:42PM UTC coverage: 79.583% (-0.05%) from 79.633%
22623490474.1

push

github

web-flow
fix(subsequences): make translations always synchronous DEV-1788 (#6762)

### đŸ“Ŗ Summary
Fixes an issue where if an automatic translation took too long, users
would be taken back to the translation provider disclaimer screen with
no explanation.


### 💭 Notes
Asyncronous translation was only half-supported. The frontend did not
actually poll for more responses and the celery task for polling on the
backend raised errors. This PR makes translation always syncronous from
the user's POV. If it takes too long, it will tell the user we timed out
waiting for the translation to finish, but it may still be in progress.
We advise users to try again in 5 minutes. As long as the translation is
still running in google, they will get this message.

Important note: This does have the unfortunate consequence that if they
see the "try again in 5 minutes" and immediately try again, they will
probably get the same error almost instantaneously rather than after
another long interval. This is because instead of resubmitting the
operation, we just check the one in progress and if it still has status
'RUNNING,' we immediately raise a SubsequenceTimeoutError. It's not
ideal user behavior but we did warn them.

We made translations syncronous instead of better supporting asyncronous
translations because
1. it's very rare they take longer than a syncronous request would allow
2. full support would require non-trivial frontend and backend changes

This PR does not address the issues in the polling task that make it
unsuitable for translations (and eventually QA) but does add FIXMEs so
future developers are aware of the problems. This is mainly for
expedience since this is a release blocker.



### 👀 Preview steps

1. â„šī¸ have an account and a project with an audio question and at least
one submission
2. In django admin, set the Constance config
`ASR_MT_GOOGLE_REQUEST_TIMEOUT` to 1
3. For easier testing, update `GoogleTranslationService.MAX_SYNC_CHARS`
to something small like 10
... (continued)

7210 of 11532 branches covered (62.52%)

27651 of 34745 relevant lines covered (79.58%)

0.8 hits per line

Source Files on job 22623490474.1
  • Tree
  • List 880
  • Changed 26
  • Source Changed 0
  • Coverage Changed 26
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 22623490474
  • 3c122522 on github
  • Prev Job for on release/2.026.07 (#22325904133.1)
  • Next Job for on release/2.026.07 (#22677776538.1)
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