v3.5.1 #75
svdC1
announced in
Announcements
v3.5.1
#75
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
This release fixes several issues with the
Modal-hosted deploy. It moves media serving and thedatabase off the volume's slow network layer so hosted video plays smoothly,
makes shutdown and spot preemption exit cleanly, completes the
PWAinstallbehind the host login on
iOS, and stops the installed app from re-prompting forthe password. It also fixes a previously uncaught clip-recording hang on
iOS.It has no breaking changes
Fixed
Launcher→ Besides an overall poor application performance when hosting onModal,video playback stalled and clip recording failed. The
Modalhost served media and ranthe database directly off the persistent volume's
FUSElayer, whose per-request randomreads take seconds, so every seek re-buffered and the browser recorder
(which captures live playback) had no continuous stream to record.
The host now reads and writes user data on the container's local disk and mirrors changes
to the volume in the background, keeping media and database I/O off the slow layer while
Modalstill persists the dataLauncher→ TheModalhost could overrunModal's shutdown grace and beforce-killed (logging
Runner has been shutting down for too long) when a stopor a spot preemption stranded an in-flight volume read on a background thread. A
watchdog (a daemon thread started at shutdown that terminates the process if it doesn't
exit in less than 10 seconds) now exits the container cleanly within the grace window,
so a stop or preemption releases promptly
Launcher→ TheModalhost wrote its request log to the persistent volumeon every request, growing it unbounded and adding a volume write to the hot
path. It now logs to standard output, which
Modalcaptures, so nothing iswritten to the volume.
Modalpersists logs natively through theStopped Appsinterface, so writing to a log file would be redundant and decrease performance
Frontend→ The installedPWAicon did not render oniOSand the app wasnot installable behind the host login.
iOSfetches the manifest, its icons, andthe
apple-touch-iconas install subresources without the login, so behindHTTP Basic Auththey returned401. The host now serves exactly those publicinstall files without auth, while the shell, the hashed assets, and the API stay
gated
Frontend→ An installediOSPWAre-prompted for the host password onevery reopen, since
iOSdrops theBasic Authcredential cache when the app issuspended. A passed login now sets a persistent,
HttpOnlycookie that the hostaccepts in place of the credentials, so a reopened app authenticates silently
(rotating the password invalidates it)
Frontend→ Saving a clip oniOScould hang onRecordingfrom a freshplayer. The recorder's audio pipeline needs its
AudioContextresumed inside auser gesture, but fetching the word explanation first spent it, leaving the audio
track dead. The save now resumes the context on the tap, and the recorder can no
longer hang indefinitely
Server→GET /api/jobsreturned400for a poll that arrived without anX-Profile-IDheader (a service-worker replay the app cannot attach the headerto). It now returns an empty list, so the errors stop
This discussion was created from the release v3.5.1.
All reactions