v2026.09.21

quickwit-oss/quickwitv2026.09.21Sep 20, 2026by knu

Upgrading?

AI Summary

Improves recovery from stalled background jobs with optional delayed_job_master processes, adds opt-in proxy routing for Agents, and upgrades Ruby to 4.0.7 and the Docker base to Ubuntu Noble.

Key Highlights

  • Optional delayed_job_master process with configurable concurrency and memory limits
  • Watchdog for master-managed workers
  • Opt-in proxy routing for Agents
  • Ruby 4.0.7 and Ubuntu Noble upgrade

New Features

  • Background job recovery improvements
  • Proxy routing for Agents
  • Runtime updates (Ruby 4.0.7, Ubuntu Noble)

Full Release Notes

# v2026.09.21

This release improves recovery from stalled background jobs, adds opt-in proxy routing for individual Agents, and updates the Ruby and Docker runtimes.

## Background jobs

- Add an optional `delayed_job_master` process that forks single-threaded workers on demand.  Set `DELAYED_JOB_WORKERS` to control concurrency and `DELAYED_JOB_MAX_MEMORY` to recycle workers after jobs that exceed the memory limit.  The existing threaded runner remains the default; see the separate-process example in [Procfile](https://github.com/huginn/huginn/blob/v2026.09.21/Procfile).
- Add a watchdog for master-managed workers.  It monitors the full reservation, execution and cleanup cycle independently of the database.  When `DELAYED_JOB_MAX_RUNTIME` is exceeded, it requests cancellation and allows `DELAYED_JOB_SHUTDOWN_GRACE` seconds (default: 10) for cleanup before forcibly terminating the worker.  Abandoned jobs are recovered through the normal failure and retry policy.  This watchdog applies to master-managed workers, not the threaded runner or directly executed scheduler work. [#3755](https://github.com/huginn/huginn/pull/3755)
- Limit Agent execution-lock acquisition to 30 seconds by default, configurable with `AGENT_EXECUTION_LOCK_TIMEOUT`.  Background jobs that cannot acquire the lock fail and can be retried. [#3745](https://github.com/huginn/huginn/pull/3745)
- Apply configurable outbound connection and I/O timeouts through `OUTBOUND_NETWORK_OPEN_TIMEOUT` and `OUTBOUND_NETWORK_TIMEOUT`, capped below the background job runtime limit. [#3745](https://github.com/huginn/huginn/pull/3745)
- Fix "Run now" for failed jobs by clearing exhausted attempts and stale reservation state before requeuing. [#3755](https://github.com/huginn/huginn/pull/3755)

## Proxy routing

Trusted-user instances can set `AGENT_PROXY` and enable `use_agent_proxy` on selected Agents, including JavaScriptAgent's `Agent.fetch` and `Agent.fetchAll`.  The Docker images support `START_SMOKESCREEN=true` to start the bundled filtering proxy without forcing all requests through it.  Existing `ENABLE_SMOKESCREEN` and `OUTBOUND_PROXY` enforcement takes precedence and is unchanged.  See [outbound request configuration](https://github.com/huginn/huginn/blob/v2026.09.21/doc/manual/outbound-requests.md).

## Runtime and Docker fixes

- Upgrade Ruby to 4.0.7 and the Docker base to Ubuntu Noble, fixing a `mini_racer` load error during asset precompilation. [#3753](https://github.com/huginn/huginn/pull/3753)
- Make single-process Docker workers wait for pending migrations before starting. [#3746](https://github.com/huginn/huginn/issues/3746)
- Fix FtpsiteAgent initialization on Ruby 4 when FTP timeout options were mistaken for the host.
- Refresh dependencies and keep `json` below 3.0 pending dependency compatibility.

Docker images are available for amd64 and arm64 on GHCR and Docker Hub, tagged `v2026.09.21`.

**Full Changelog**: https://github.com/huginn/huginn/compare/v2026.09.09...v2026.09.21

Related Repositories