hashicorp/vagrant · error · Vagrant::Errors::UploaderInterrupted
The upload was interrupted by an external signal. It did not
Error message
The upload was interrupted by an external signal. It did not complete.
What it means
The upload counterpart of DownloaderInterrupted: Vagrant::Util::Uploader wraps its curl upload in Busy.busy with an INT callback; when an external signal interrupts the transfer (interrupted = true) it raises UploaderInterrupted rather than a curl-exit error. This class backs box publication uploads such as `vagrant cloud publish`.
Source
Thrown at lib/vagrant/util/uploader.rb:81
def execute_curl(options, subprocess_options, &data_proc)
options = options.dup
options << subprocess_options
# Create the callback that is called if we are interrupted
interrupted = false
int_callback = Proc.new do
@logger.info("Uploader interrupted!")
interrupted = true
end
# Execute!
result = Busy.busy(int_callback) do
Subprocess.execute("curl", *options, &data_proc)
end
# If the upload was interrupted, then raise a specific error
raise Errors::UploaderInterrupted if interrupted
# If it didn't exit successfully, we need to parse the data and
# show an error message.
if result.exit_code != 0
@logger.warn("Uploader exit code: #{result.exit_code}")
check = result.stderr.match(/\n*curl:\s+\((?<code>\d+)\)\s*(?<error>.*)$/)
if !check
err_msg = result.stderr
else
err_msg = check[:error]
end
raise Errors::UploaderError,
exit_code: result.exit_code,
message: err_msg
end
if @uiView on GitHub (pinned to 35f3160f4a)
Solutions
- Re-run the publish once conditions are stable; first check the Vagrant Cloud UI for a partial/failed version and remove it
- If the SIGINT was unintended, fix the source (timeout wrappers, init signal policies) or exclude vagrant from forwarding
- For very large boxes, shorten the exposure window: upload on a stable link, or prepare/split the artifact beforehand
Defensive patterns
Strategy: retry
Try / catch
tries = 0 begin uploader.upload! rescue Vagrant::Errors::UploaderInterrupted tries += 1 sleep 5 cleanup_partial_cloud_version! retry if tries < 3 end
Prevention
- Do not interrupt cloud publish mid-upload; cancel before it starts
- Remove partial Vagrant Cloud versions before republishing
- Run large box uploads on stable links to avoid manual cancels
When it happens
Trigger: Ctrl-C (or any SIGINT) while `vagrant cloud publish` / a box upload is streaming the .box file; CI cancellations or signal-forwarding supervisors killing the curl child mid-upload.
Common situations: Cancelling slow multi-GB box uploads; CI timeouts aborting publish jobs; wrappers forwarding signals unexpectedly.
Related errors
- The download was interrupted by an external signal. It did n
- An error occurred while uploading the file. The error messag
- Vagrant exited after cleanup due to external interrupt.
- This command was not invoked properly. The help for this com
- Vagrant is automatically disabling direct upload to backend
AI-assisted analysis of hashicorp/vagrant@35f3160f4a (2026-08-21).
Data as JSON: /api/errors/cedad66f60b0ab20.
Report an issue: GitHub.