-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] AttributeError: 'Process' object has no attribute '_args_for_getstate' #57742
Comments
@saltstack/team-core someone with MacOS Kung-Fu skills might take a look into this one |
Same for '
Update: Lines 705 to 714 in 8a23ec9
So method Lines 745 to 766 in 8a23ec9
Update 2: This part of the code has been untouched for more than 5 years, so the issue could be related with having changed from Python 3.7 to 3.8 on macOS with salt 3001 update Homebrew/homebrew-core#56461 |
I ran into this just running a test.ping against a mac minion. Getting my dev environment setup and going to take a swing at digging into this as time allows. |
This is a temporary solution until the bug is fixed. Edit the Homebrew diff --git a/Formula/salt.rb b/Formula/salt.rb
index d4a87977f..196e27648 100644
--- a/Formula/salt.rb
+++ b/Formula/salt.rb
@@ -17,7 +17,7 @@ class Salt < Formula
depends_on "libgit2"
depends_on "libyaml"
depends_on "[email protected]"
- depends_on "[email protected]"
+ depends_on "python"
depends_on "zeromq"
on_linux do
@@ -61,7 +61,7 @@ class Salt < Formula
# https://github.com/Homebrew/homebrew-core/pull/52835#issuecomment-617502578
File.write(buildpath/"pkg/osx/req_pyobjc.txt", "")
- venv = virtualenv_create(libexec, Formula["[email protected]"].bin/"python3.8")
+ venv = virtualenv_create(libexec, "python3")
venv.pip_install resources
system libexec/"bin/pip", "install", "-v", "--ignore-installed", buildpath then: brew uninstall salt
sudo rm -rf /usr/local/Cellar/salt/3001
brew install --build-from-source salt May be we could create a PR at homebrew-core to apply this patch to the formula until the next Salt released is ready with the bug fixed. |
I have tried adding this changes to diff --git a/salt/utils/process.py b/salt/utils/process.py
index 2ac797b5f3..34e22b84cc 100644
--- a/salt/utils/process.py
+++ b/salt/utils/process.py
@@ -744,6 +744,9 @@ class Process(multiprocessing.Process, NewStyleClassMixIn):
# __setstate__ and __getstate__ are only used on Windows.
def __setstate__(self, state):
+ if not salt.utils.platform.is_windows():
+ self.__dict__.update(state)
+ return
args = state["args"]
kwargs = state["kwargs"]
# This will invoke __init__ of the most derived class.
@@ -752,6 +755,8 @@ class Process(multiprocessing.Process, NewStyleClassMixIn):
self._finalize_methods = self._finalize_methods
def __getstate__(self):
+ if not salt.utils.platform.is_windows():
+ return self.__dict__
args = self._args_for_getstate
kwargs = self._kwargs_for_getstate
if "log_queue" not in kwargs: but then, the following error is reported:
It looks this is the origin of the issue: https://docs.python.org/3/library/multiprocessing.html
Update Similar issue solved here: horovod/horovod#1904 |
Gonna need to put up the @s0undt3ch bat signal on this one. He’s already working on it here #57028 |
Turning multiprocessing off in the minion config may patch this as well. If homebrew is going to be py3.8 |
This is a known issue being worked on in #57028 for magnesium |
I will look at the PR and see if I can help in the test suite at all and look at if we can bring this into the point release. |
This is really a blocker somehow, using @cdalvaro 's solution worked fine on one laptop.. but not on the other.. Dunno why :( |
It is not working anymore because python formula has been upgraded from 3.7 to 3.8 ...
We need to fix the code for making it to work with python 3.8 Applying the following patch to your salt formula ( diff --git a/Formula/salt.rb b/Formula/salt.rb
index d4a87977f..196e27648 100644
--- a/Formula/salt.rb
+++ b/Formula/salt.rb
@@ -17,7 +17,7 @@ class Salt < Formula
depends_on "libgit2"
depends_on "libyaml"
depends_on "[email protected]"
- depends_on "[email protected]"
+ depends_on "[email protected]"
depends_on "zeromq"
on_linux do
@@ -61,7 +61,7 @@ class Salt < Formula
# https://github.com/Homebrew/homebrew-core/pull/52835#issuecomment-617502578
File.write(buildpath/"pkg/osx/req_pyobjc.txt", "")
- venv = virtualenv_create(libexec, Formula["[email protected]"].bin/"python3.8")
+ venv = virtualenv_create(libexec, Formula["[email protected]"].bin/"python3.7")
venv.pip_install resources
system libexec/"bin/pip", "install", "-v", "--ignore-installed", buildpath
Undo your formula changes after installing it to allow future updates for the salt formula. |
Do you have a workaround again maybe? |
Looks like the PR was re-labeled as |
I'm getting the same error on Big Sur. Homebrew installs python 3.9.5 and the salt version is 3003.1 |
yeah, just discovered this trying to help some coworkers with salt on their Macs. this is a big blocker for us, is there any update on getting it fixed? |
I don't have much time available at the moment. |
I'll try to at least rebase the PR against the latest master in the next couple of days... |
Fixes saltstack#57742 Signed-off-by: Pedro Algarvio <[email protected]>
Fixes #57742 Signed-off-by: Pedro Algarvio <[email protected]>
Fixes saltstack#57742 Signed-off-by: Pedro Algarvio <[email protected]>
* Making the retry state system feature available when parallel is set to True. * swapping out using time.sleep Salt function for Python time.sleep. * Skipping parallel tests on Windows. * Fixing items, values, and keys functions in the data module. Moving integration to functional tests. Converting unit test over to pytest. * adding changleog. * fixes #62044 add ignore_missing to file.comment state * fixes #61662 fix file.comment reports changes in test mode * add 61662.fixed changelog * add final test mode run after comment is successful * fix uncomment_regex * fix uncomment_regex * Try not to trigger the GLIBC race condition. See https://sourceware.org/bugzilla/show_bug.cgi?id=19329 Fixes #62071 Signed-off-by: Pedro Algarvio <[email protected]> * Add missing CLI example to ``network.fqdns`` Signed-off-by: Pedro Algarvio <[email protected]> * Sleep between submitting new jobs to thread pool Signed-off-by: Pedro Algarvio <[email protected]> * Sleep before trying to resolve instead Signed-off-by: Pedro Algarvio <[email protected]> * Shorter sleeps * fixes #61944 fixed backslash literal bytestring * When states are running in parallel, ensure that the total run time produced by the highstate outputter takes that into account. * removing unrelated change * Adding changelog. * Skip parallel test on Windows. * skip pdbedit unit tests on ubuntu 2204 because md4 is not supported as a hash type * refresh db at the beginning for destructive aptpkg functional tests * fix failing test_pkgrepo_managed_absent and actually capture and keep signed-by information in salt/modules/aptpkg.py custom implementation of apt repository management * Update tests/unit/modules/test_pdbedit.py Co-authored-by: Pedro Algarvio <[email protected]> * Disable hack to force allowing forking on macOS * Use the newer nox platforms file which installs Py3.9 Signed-off-by: Pedro Algarvio <[email protected]> * Support macOS defaulting to spawn as the default multiprocessing method * Remove unused attribute * Switch to ``salt.utils.platform.spawning_platform()`` Signed-off-by: Pedro Algarvio <[email protected]> * Reconstruct client instances on spawning platforms * Also skip this test for now on macOS Signed-off-by: Pedro Algarvio <[email protected]> * Reconstruct the ``State`` class on spawned processes. Signed-off-by: Pedro Algarvio <[email protected]> * Force a reference to ``salt.ext.tornado.iostream.StreamClosedError`` to avoid ``NameError`` issues Signed-off-by: Pedro Algarvio <[email protected]> * Skip, for now, problematic tests on spawning platforms Signed-off-by: Pedro Algarvio <[email protected]> * DeltaProxy minions do not work on spawning platforms Signed-off-by: Pedro Algarvio <[email protected]> * Avoid a ``NameError`` when failing to initialize the process list Signed-off-by: Pedro Algarvio <[email protected]> * Use Python 3.9 on macOS Signed-off-by: Pedro Algarvio <[email protected]> * Drop requirements on Darwin for Py<3.9 Signed-off-by: Pedro Algarvio <[email protected]> * Same test run timeout as windows Signed-off-by: Pedro Algarvio <[email protected]> * Don't shell out! Access the database directly and properly escape values. Signed-off-by: Pedro Algarvio <[email protected]> * Fixes for the new macOS Catalina and BigSur CICD images Signed-off-by: Pedro Algarvio <[email protected]> * Migrate ``integration.modules.test_mac_pkgutil`` to PyTest and functional tests. Fixes #60819 Signed-off-by: Pedro Algarvio <[email protected]> * Add changelog for #57742 Fixes #57742 Signed-off-by: Pedro Algarvio <[email protected]> * Add changelog entry. Fixes #55847 Signed-off-by: Pedro Algarvio <[email protected]> * initial Proxy Module * inital pass of restconf states * adding codeauthor * adding restconf module * doc update * doc update * doc update * add requirements chefk to states module * doc update * doc update * doc update * add changelog entry * Update salt/proxy/restconf.py Co-authored-by: Wayne Werner <[email protected]> * Update salt/proxy/restconf.py Co-authored-by: Wayne Werner <[email protected]> * remove noqa statements * docs update & opts defaults * docs update * error checks + https transport method * docs update * docs update * doing a fix for commit check * adding test and updating modules * removing old code * DRY * docs update * output updates * prepping for deepdiff switch * states testing * more tests * changed changelog from fixed to added * force pre-commit checks * new style of diff output that is readable * updating tests and output * updating output style to make YAML diff more readable * add test for restconf module * adjusting based on pr review * adjusting based on pr review * adjusting true/false verify based on pr review * change uri to path and clean args list Co-authored-by: Wayne Werner <[email protected]> * adjusting uri to path based on pr review * adjusting capabilities path based on pr review * Update salt/modules/restconf.py Co-authored-by: Wayne Werner <[email protected]> * adjusting val based on pr review * caps to confirm to RFC 8040 * WIP: refactor based on feedback * WIP: changed results to be any kind of falsey val * linting - pre-commit * updating docs * Update salt/states/restconf.py Co-authored-by: Wayne Werner <[email protected]> * updating style * fixes for lint and nox pass * fixing * blacken * Update restconf.py * add cli examples * change logging type * add pytest skip for ordereddict issue with legacy python * add sys library for pytest mark skipif check * pre-commit fixes * Update salt/proxy/restconf.py Co-authored-by: Pedro Algarvio <[email protected]> * Update salt/states/restconf.py Co-authored-by: Pedro Algarvio <[email protected]> * Update tests/pytests/unit/modules/test_restconf.py Co-authored-by: Pedro Algarvio <[email protected]> * Update tests/pytests/unit/states/test_restconf.py Co-authored-by: Pedro Algarvio <[email protected]> * Update tests/pytests/unit/proxy/test_restconf.py Co-authored-by: Pedro Algarvio <[email protected]> * pre-commit fix * update logging * Update restconf.py * some rest apis dont follow the standard correctly (cisco) and need another header * fixes #61946 sync_after_install immutabledict error * add configurable sync sleep for create * add testing around the particular sync command called * Adds the ability to get file version information on Windows - Adds file.version that will get just the version - Adds file.version_details to get additional information - Adds tests - Adds changelog @amalaguti originally submitted a PR for this: #59770, but he has since deleted his branch. Recognizing his contribution here. * Update states.chef for version 16.x and 17.x Chef Infra Client output * Support previous Chef version plus version 16.x and 17.x output. * Remove legacy chef unit test * Add unit tests for chef state These tests cover the entire state, but are only concerned with the ret["result"] of the outputs. It would be a good idea to test other outputs as well - these tests could be modified to include assertions about the other parts of ret. (Obviously they would need to be slightly renamed. Maybe to `..._return_expected_ret` * Update salt-bootstrap to 2022.03.15 release * Update state.py Fixing lint. * Running pre-commit manually. * swap out salt.utils.platform.is_windows for salt.utils.platform.spawning_platform. Bump up duration for test_retry_option_success_parallel to 30 seconds to account for test running on Mac OS. Co-authored-by: Megan Wilhite <[email protected]> Co-authored-by: nicholasmhughes <[email protected]> Co-authored-by: Pedro Algarvio <[email protected]> Co-authored-by: emmadionne1 <[email protected]> Co-authored-by: MKLeb <[email protected]> Co-authored-by: Caleb Beard <[email protected]> Co-authored-by: Pedro Algarvio <[email protected]> Co-authored-by: Jamie Murphy <[email protected]> Co-authored-by: Jamie (Bear) Murphy <[email protected]> Co-authored-by: Jamie Murphy <[email protected]> Co-authored-by: Wayne Werner <[email protected]> Co-authored-by: Cassandra Durnford <[email protected]> Co-authored-by: Jamie Murphy <[email protected]> Co-authored-by: Jamie (Bear) Murphy <[email protected]> Co-authored-by: Twangboy <[email protected]> Co-authored-by: Eric Ham <[email protected]> Co-authored-by: Wayne Werner <[email protected]> Co-authored-by: krionbsd <[email protected]>
Description
salt-ssh crashes with an exception before doing seemingly anything
Setup
Just upgraded to salt 3001, 3000 was working fine
Steps to Reproduce the behavior
salt-ssh $host state.highstate test=True
AttributeError: 'Process' object has no attribute '_args_for_getstate'
Expected behavior
Salt executes on the host
Versions Report
salt --versions-report
(Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)The text was updated successfully, but these errors were encountered: