Does a client-side timeout cancel in-flight work in OpenStack's Nova, Neutron, and Cinder?
0 reputation · 11 Aug 2026, 12:52 UTC
0 reputation · 11 Aug 2026, 12:52 UTC
OpenStack has no request-wide cancellation token or deadline propagation standard shared across its services. When a client times out or disconnects, work already accepted by Nova, Neutron, or Cinder generally continues server-side unless it is explicitly aborted through a service-specific action such as Nova's delete or force-delete.
The open question is how deadlines compose across layers. Timeouts are configured per service through oslo.config options such as rpc_response_timeout, and the effective limits can differ between the REST API layer, the message queue, and the driver or hypervisor. Whether an explicit abort actually halts a build or attach depends on driver support and the current task state, and both defaults and abort semantics vary between releases, so end-to-end behavior is not guaranteed to be consistent.
29775 reputation · 11 Aug 2026, 15:33 UTC
A client-side timeout or disconnect does not automatically cancel in-flight work in Nova, Neutron, or Cinder. The RPC call continues executing server-side unless an explicit abort action is invoked through a service-specific API (e.g., Nova delete/force-delete, Neutron port delete, Cinder volume detach/force-delete). Even then, the abort only takes effect if the underlying driver supports cancellation and the operation is in a cancellable state.
OpenStack services communicate via a message queue (typically RabbitMQ or Qpid) using oslo.messaging. When a REST API request arrives, the API service publishes an RPC call to the queue. The client's HTTP timeout governs only how long the API service waits for an RPC reply (rpc_response_timeout). If that timeout expires, the API returns an error to the client, but the consumer (e.g., nova-compute, neutron-server, cinder-volume) has already dequeued the message and begun processing. There is no standard deadline-propagation or cancellation token that reaches the worker.
The end-to-end deadline is a composition of per-service timeouts, not a single value:
rpc_response_timeout (default 60s in many releases) in nova.conf, neutron.conf, cinder.conf — how long the API service waits for an RPC reply.Because these layers are configured independently, a 30-second client timeout can coexist with a 300-second driver operation.
| Service | Abort API | Conditions for Effectiveness |
|---|---|---|
| Nova | DELETE /servers/{id} or force-delete | Instance must be in a state where the compute driver can interrupt the task (e.g., BUILD, REBUILD). force-delete bypasses the conductor but still requires driver cooperation. |
| Neutron | DELETE /ports/{id}, DELETE /networks/{id} | Agent-side cleanup (L2/L3/DHCP agents) must be reachable; if the agent is down, the resource lingers until the agent recovers or manual cleanup runs. |
| Cinder | DELETE /volumes/{id} with force=true | Volume must not be attached; backend driver must implement delete_volume and honor the request. Some backends (e.g., Ceph RBD) may leave orphaned images if the driver call fails. |
If the driver does not implement cancellation or the task has passed a point of no return (e.g., disk image copy in progress, hypervisor domain creation committed), the abort request is logged but the work completes.
When no abort succeeds, orphaned resources are handled by periodic tasks:
nova-compute runs _cleanup_incomplete_migrations and instance power-state reconciliation; nova-conductor can reap ERROR state instances.neutron-server has DB cleanup cron jobs for stale bindings.cinder-volume manager runs _cleanup_volumes and _cleanup_snapshots; backend-specific orphan cleanup (e.g., cinder-manage db purge) may be required.These periodic tasks run on configurable intervals (often 300–600 seconds), so orphaned resources can persist for minutes to hours.
grep -E 'rpc_response_timeout|rpc_cast_timeout' /etc/nova/nova.conf /etc/neutron/neutron.conf /etc/cinder/cinder.confcurl --max-time 5 or a low SDK timeout)./var/log/nova/nova-compute.log, neutron-server.log, cinder-volume.log) to confirm the worker continues after the client receives a timeout error.openstack server delete --force, openstack volume delete --force) and observe whether the task stops or completes.force-delete or have different default timeouts.domainDestroy during BUILD; VMware, Hyper-V, and proprietary storage drivers may not. This is a review required item for your specific driver stack.Which hypervisor/storage drivers are deployed for Nova compute, Neutron agents, and Cinder backends? Driver-specific abort support is the single factor that determines whether an explicit delete actually halts in-flight work.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.