Compare commits

...
Sign in to create a new pull request.

1 commit

Author SHA1 Message Date
Jarek Prokop
a8e1ccde1f Fix "HandleBox not defined" error with parallel operations.
This error shows up with defining multiple vagrant machines
and running operations like `vagrant up`.

Resolves: rhbz#2100543
2023-05-29 11:57:25 +02:00
2 changed files with 80 additions and 0 deletions

View file

@ -0,0 +1,68 @@
From 709745261a4401f3418378e08be615ff6d24c865 Mon Sep 17 00:00:00 2001
From: Jarek Prokop <jprokop@redhat.com>
Date: Mon, 22 May 2023 17:40:13 +0200
Subject: [PATCH] Use require for HandleBox, SyncedFolders, WaitForCommunicator
Using `autoload` fairly consistently results in 'constant not defined'
errors for each of HandleBox, SyncedFolders, WaitForCommunicator
when using ruby 3.1. Presumably there's some sort of race condition.
Explicitly using `require` for these three makes the problem go away.
It might be a bit ugly to have those `require` lines right at the
point where those symbols are used, vs. the neat `autoload` section
at the top of the file, but I'm not sure how better to structure this.
Suggestions most welcome :-)
===
This patch is originally from PR
<https://github.com/vagrant-libvirt/vagrant-libvirt/pull/1485>
Fedora user named Shawn K. O'Shea adapted the patch for version 0.7.0.
https://bugzilla.redhat.com/show_bug.cgi?id=2100543#c4
---
lib/vagrant-libvirt/action.rb | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/vagrant-libvirt/action.rb b/lib/vagrant-libvirt/action.rb
index 17b3a60..1b79d92 100644
--- a/lib/vagrant-libvirt/action.rb
+++ b/lib/vagrant-libvirt/action.rb
@@ -35,6 +35,7 @@ module VagrantPlugins
b2.use StartDomain
else
b2.use HandleStoragePool
+ require 'vagrant/action/builtin/handle_box'
b2.use HandleBox
b2.use HandleBoxImage
b2.use CreateDomainVolume
@@ -103,6 +104,7 @@ module VagrantPlugins
b3.use PrepareNFSValidIds
b3.use SyncedFolderCleanup
+ require 'vagrant/action/builtin/synced_folders'
b3.use SyncedFolders
# Start it..
@@ -111,6 +113,7 @@ module VagrantPlugins
# Machine should gain IP address when comming up,
# so wait for dhcp lease and store IP into machines data_dir.
b3.use WaitTillUp
+ require 'vagrant/action/builtin/wait_for_communicator'
b3.use WaitForCommunicator, [:running]
b3.use ForwardPorts
@@ -392,11 +395,8 @@ module VagrantPlugins
autoload :PackageSetupFiles, 'vagrant/action/general/package_setup_files'
autoload :PackageSetupFolders, 'vagrant/action/general/package_setup_folders'
autoload :SSHRun, 'vagrant/action/builtin/ssh_run'
- autoload :HandleBox, 'vagrant/action/builtin/handle_box'
- autoload :SyncedFolders, 'vagrant/action/builtin/synced_folders'
autoload :SyncedFolderCleanup, 'vagrant/action/builtin/synced_folder_cleanup'
autoload :ProvisionerCleanup, 'vagrant/action/builtin/provisioner_cleanup'
- autoload :WaitForCommunicator, 'vagrant/action/builtin/wait_for_communicator'
end
end
end
--
2.41.0.rc1

View file

@ -25,6 +25,13 @@ Patch1: vagrant-libvirt-0.7.0-Reduce-patching-for-distro-default-session-use.pat
# A bit modified: spec/support/libvirt_acceptance_context.rb does not exist
# with 0.7.0 yet
Patch2: vagrant-libvirt-pr1709-ruby32-File_exists-URL-parse.patch
# Vagrant-libvirt uses autoload feature. This is not necessarily thread safe
# https://github.com/vagrant-libvirt/vagrant-libvirt/issues/1445#issuecomment-1044276044
# This patch is taken from reported bug's attachment "Proposed patch":
# https://bugzilla.redhat.com/show_bug.cgi?id=2100543
# Which is functionally this commit adapted for 0.7.0:
# https://github.com/vagrant-libvirt/vagrant-libvirt/commit/3bdb1c93e63886a95d472091ff8381f53338f632
Patch3: vagrant-libvirt-0.7.0-Fix-HandleBox-not-defined-error-on-parallel-operation.patch
# Enable QEMU Session by default
# https://github.com/vagrant-libvirt/vagrant-libvirt/pull/969
@ -70,6 +77,7 @@ Documentation for %{name}.
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch100 -p1
%build
@ -139,6 +147,10 @@ popd
%{vagrant_plugin_instdir}/spec
%changelog
* Mon May 22 2023 Jarek Prokop <jprokop@redhat.com> - 0.7.0-5
- Fix parallel vagrant up with libvirt provider.
Resolves: rhbz#2100543
* Fri Jan 20 2023 Mamoru TASAKA <mtasaka@fedoraproject.org> - 0.7.0-5
- Backport upstream fix for ruby3.2 compatibility
(File.exists? removal, URI#parse host name result change)