Troubleshoot conda-presto#
Start with the symptom that matches the failing workflow. Keep broker, Docker, and ordinary HTTP deployments separate because they have different lifecycle and solver capabilities.
The conda commands are missing#
Verify that conda-presto is installed in the active conda environment:
conda presto --help
conda broker list
If conda presto works but conda-presto.server is absent from the broker
list, check provider discovery:
conda broker doctor
conda broker doctor --json
Do not assume that a package installed in another conda environment is visible to the current plugin registry.
The broker service does not become ready#
An empty repodata cache can make the first startup slow. Wait with the service health-check start period in mind:
conda broker wait conda-presto.server --timeout 180
Then inspect process state, lifecycle events, and logs:
conda broker status conda-presto.server --json
conda broker events --lines 100
conda broker logs conda-presto.server --lines 200
Check channel reachability, credentials, repodata cache permissions, and the
configured channels and platforms. A persistent worker that fails or times out
causes /health to return 503 until conda-broker replaces the service process.
The Presto solver reports no ready service#
Start and wait for the exact registered service:
conda broker start conda-presto.server
conda broker wait conda-presto.server --timeout 180
conda broker endpoint conda-presto.server
The solver accepts only a ready loopback endpoint supplied by conda-broker. There is no remote solver URL override.
A solver operation is rejected before a request#
The internal backend rejects offline solves, --update-deps, and conda-build
caller-provided indexes. Use another conda solver for those operations.
See Use the Presto solver backend for supported command shapes and Presto solver backend for the complete boundary.
A repeated solver request is not clearly faster#
A final-state hit still performs broker discovery, HTTP encoding and decoding, and repodata freshness checks. It also requires the solve-affecting state to match, including installed records, history, pins, virtual packages, requested specs, channels, and solver settings.
A completed package transaction usually changes the installed state and the next cache identity. Timing alone cannot identify a hit because no per-request cache status is exposed.
A resolve response has no Location header#
The result was returned but not retained. Check:
CONDA_PRESTO_RESULT_CACHE_SIZECONDA_PRESTO_RESULT_CACHE_MAX_MEMORY_MBpersistent-store connection and permissions
service logs for read, write, or metadata warnings
whether repodata markers changed while the solve was running
See Configure result caching for a retrieval check.
A cached result is not reused after repodata changes#
This is expected. /resolve cache identity includes local repodata cache-file
markers. The solver final-state cache applies the caller’s effective repodata
policy and requires current markers to match the stored entry.
Different dependency versions or solve-affecting request fields also select a different entry.
Scheduled refresh does not run#
Check every prerequisite:
the process is the
conda-presto.serverbroker childpersistent-worker mode is enabled by the provider
CONDA_PRESTO_SOLVER_CACHE_WARM_INTERVAL_Sis greater than zeroCONDA_PRESTO_SOLVER_CACHE_WARM_BATCH_SIZEis greater than zeroCONDA_PRESTO_SOLVER_CACHE_WARM_CANDIDATE_SIZEis greater than zerothe result cache has in-process capacity or a persistent backend
the same successful cacheable solver request has been used at least twice
at least 30 seconds have elapsed since readiness for the first cycle
If variables were exported after the broker daemon started, stop the broker and start it again. Restarting only the service retains the daemon’s old environment.
Use Refresh cached solver results for the complete setup.
Persistent candidate startup fails#
CONDA_PRESTO_SOLVER_CACHE_WARM_CANDIDATE_PERSIST=true requires a file or
Redis result-cache backend. Configure that backend first.
Credential-bearing requests are intentionally excluded from persistence. They remain memory-only even when persistence is enabled.
A file cache fails in Docker#
The image runs as UID and GID 10001. Ensure the mounted cache directory is writable by that identity. Follow the volume initialization in Run conda-presto with Docker.
Docker cannot use the Presto solver or scheduled refresh#
This is expected. The Docker server has a persistent foreground worker but no
conda-broker child identity. It omits /solver/v1 and does not run scheduled
solver-result refresh.
Use the broker-managed local service for those features.
The server rejects a requested channel#
Add the channel to CONDA_PRESTO_ALLOWED_CHANNELS and restart the server. Keep
the allowlist narrow for deployments that accept untrusted requests.
Clients receive HTTP 429 behind a proxy#
Either reduce request volume or adjust CONDA_PRESTO_RATE_LIMIT. When a
reverse proxy terminates client connections, configure uvicorn’s
--forwarded-allow-ips so rate limiting uses the intended client address.
A raw file upload is rejected#
Match the Content-Type to the input and pass filename when the type is
ambiguous. Do not wrap a raw upload in JSON unless using the JSON request shape.
Accepted media types and error statuses are listed in HTTP API reference.
For the exact cache and monitoring contracts, see Cache reference and Observability reference.