Skip to content

v8.3.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 12:33
7614262

Highlights

  • New encoder monitor: a cron job that runs every minute. It requeues transient errors and jobs whose worker process died, and starts the queue when jobs are waiting but nothing is running. It also asks each job's own AVideo site to e-mail the video owner when an encoding is slow, waits too long or fails. (48d1d33)
  • New admin-only Monitor tab (<Encoder URL>index.php#monitor). It shows the cron status, live queue numbers, free disk space, sites with problems and the jobs being watched, and refreshes every 30 seconds while open. (d1ca89e)
  • Database update 8.3 adds the monitor tables. The monitor cron must be installed once per Encoder folder, as root. The Docker image does this on every start. See the upgrade notes. (48d1d33, 80a8857)
  • The Docker base image stays on php:8.2-apache. An automatic bump to PHP 8.5 was reverted in this release. (d5796f5)

New features

  • Encoder monitor (install/cron.php runs objects/EncoderMonitor.php). According to the new "Monitor cron" section of install/README.md, it works like this:

    • Each run requeues transient errors and jobs whose worker died, up to Encoder::MAX_AUTO_RETRIES times.
    • The video owner gets an e-mail when a job processes for more than one hour, waits for more than one day, fails, or stays failed for more than one day. While nothing changes, at most one reminder per day is sent, for up to 7 days. Only the newest job of a video is reported. Errors that the automatic retry will handle are reported only after the retries stop.
    • Encoder administrators (Streamers marked as admin) get alerts for low disk space, a stalled queue and an error spike, at most every 6 hours.
    • Thresholds can be changed in videos/configuration.php through $global['encoderMonitor'], using the keys of EncoderMonitor::defaults().

    (48d1d33)

  • Admin warnings: the admin page warns when the 8.3 database update is pending, when the cron is not installed or has not run for 10 minutes, and when its last run failed (including being started as root). It also lists the AVideo sites that did not accept alerts in the last 24 hours. (48d1d33)

  • Monitor tab: also shows the owner alerts for each watched job, the active settings and the install commands. Includes pt_BR translations. (d1ca89e)

Fixes

  • The cron installer (install/installCron.php) only runs as root and only writes /etc/cron.d/avideo-encoder-<hash>. It no longer falls back to the web server user's crontab. The job itself still runs as the web server user, never as root. The admin page now shows only the root install command. (80a8857)
  • Monitor requests that would start too close to the end of a run's time budget are now deferred to the next run. Before, they could only time out, which made a healthy site look unreachable. (3329087)
  • The Update page no longer shows the software version panel while a database update is being applied, because it would show the state from before the update. (48d1d33)
  • Docker: Dependabot bumped the base image to php:8.5-apache (3a57812). This was reverted to php:8.2-apache, because building the OPcache extension fails on PHP 8.5. Dependabot now ignores major and minor updates of the PHP image. (d5796f5)

Dependencies

  • GitHub Actions used by the CI workflows: 12 updates in the github-actions group, including actions/checkout 4 → 7, actions/setup-node 4 → 7, actions/upload-artifact 4 → 7, actions/download-artifact 4 → 8 and docker/build-push-action 6 → 7. (adf51d3)

Other changes

  • Dependabot now has a configuration for npm, GitHub Actions and Docker updates. Auto-merge applies only to patch and minor updates. The release automation's .github/release/.npmrc sets legacy-peer-deps. (211134d)
  • New monitor regression tests (tests/encoder-monitor-*.php). The CI step that installs FFmpeg now retries apt-get with timeouts. RELEASING.md explains how the installer schema version (INSTALLER_SCHEMA_VERSION) must follow new database updates. (48d1d33, 3329087)

Upgrade notes

From install/README.md, deploy/docker-entrypoint and update/updateDb.v8.3.sql in this release (48d1d33, 80a8857):

  • Database: existing installations have a pending 8.3 update (update/updateDb.v8.3.sql) on the Encoder Update page. It creates the encoder_queue_monitor and encoder_monitor_state tables. Fresh installs create them directly.

  • Monitor cron: install it once for the folder where this Encoder lives, as root. Run it on the same host or container as the encoding workers, because the monitor checks their process IDs. If that is not possible, set recoverDeadWorkers to false.

    sudo php /path/to/encoder/install/installCron.php            # detects the web server user
    sudo php /path/to/encoder/install/installCron.php --user=www-data
    php /path/to/encoder/install/installCron.php --print         # only shows the entry

    To check it, run ls -l /etc/cron.d/avideo-encoder-*. The Encoder still works without the cron, but stuck or failed jobs are not detected and owners are not notified.

  • Docker: the image now includes cron. Its entrypoint runs the installer on every start, with the job running as www-data, and starts the cron service. When the Encoder runs inside another container, run the installer inside that container.

  • AVideo sites: owner and admin e-mails are sent by each AVideo site through objects/aVideoEncoderAlert.json.php. That endpoint was added in AVideo v29.3.0 (WWBN/AVideo@02f5aba). Sites running older AVideo versions appear on the Encoder admin page until they are updated.

Full changelog: v8.2.0...v8.3.0
Release commit: 7614262d5911

Original automated release notes

8.3.0 (2026-10-05)

Features

  • encoder: enhance deadline handling in Encoder and EncoderMonitor classes (3329087)

Fixes

  • install: update installation instructions and security checks for cron setup (80a8857)
  • revert PHP version in Dockerfile to 8.2-apache and update Dependabot configuration to ignore major and minor updates for PHP (d5796f5)

Other changes

  • Add Admin Monitor Tab with Dashboard and Refresh Functionality (d1ca89e)
  • Add encoder monitor and worker regression tests, update database schema, and create monitor status view (48d1d33)
  • Bump php from 8.2-apache to 8.5-apache (3a57812)
  • Bump the github-actions group across 1 directory with 12 updates (adf51d3)

Release commit: 7614262d5911