-
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
pillar.data and state.highstate do not always update the pillar on the minion #5716
Comments
saltutil.refresh_pillar did the trick. |
I was under the impression that |
I was even under the impression that |
|
Well, not according to my copy/pasted shell log from above. Should've mentioned that I only inserted some comments into something that I copied verbatim from my terminal. |
Well, I've put this at the top of my to-do list, we'll definitely look into it. |
Hope you can reproduce it... I've found no logs of significance today (ie. /var/log/salt/* is silent for today on both the master and the minion) |
Ya, me too. =\ We'll see. |
I can confirm this behavior with 0.16.2. Buggy pillars remain in the cache, breaking highstate, until "salt '*' saltutil.refresh_pillar" is run, at which point things are fine. Easy enough to work around once you know the issue is there, but looking forward to 0.17 and the fix :-) |
I was just hiy by this....... I even blew away my pillar folder and it was still matching to broken items in the cache. |
I took a look at this on CentOS 6 today, using the latest from the git develop branch, and was unable to reproduce the error. After intentionally triggering a yaml render error in my pillar SLS, I fixed it and ran a highstate, and the pillar data was updated before the highstate was run. Can anyone who experienced this before test again against git? |
@terminalmage the original issue I was seeing (from issue #6083) is apparently still present on git develop (
After running
This confirms the custom grain is synced successfully after a manual run. I can then execute |
I'm having the same problem, also with a custom grain. [this is on 0.16.4] These steps should (hopefully) reproduce the problem:
def revision():
parts = __opts__.get('id', '').split('.')
return {'revision': (parts[1] if len(parts) >1 else '')}
Observe error:
(if the custom grain had already been synced, it wouldn't be listed in the output) The fact that this sync actually sent a custom grain implies that (At this point, there's still some bad pillar or grain cache somewhere, and |
OK, giving this another look now. |
I was able to replicate this given the procedure laid out by @RoboTeddy last night. It's clear that we need to sync the grains before compiling the pillar, but I'm looking into the best way of doing this. |
Great work @terminalmage. That solves a long standing bug for me 👍 |
For those interested, the proposed fix is in #7630, though it needs to be discussed, refined and reviewed before it is ultimately merged. |
Not to throw a wrench in the process, but I don't think I was using custom grains yet when I reported this. I did have a custom state and a custom module, though, but I don't think they were involved in the pillar I mentioned. |
Looks like this is fixed in the pull req, please re-open if this is not so |
@thatch45, I can confirm the pull request from @terminalmage fixed this issue. Thank you! |
Awesome! |
I had a pillar that generated an error (bug #5608 test, it's called list-all-minions).
here I remove the reference to the pillar:
And here I run highstate on that minion:
pillar data works:
But state.highstate still does not work:
Is this related to test=true looking at another cache? No, without test=true I still get the error.
I thought you had said pillar.data always updates the cache on the minion...
The text was updated successfully, but these errors were encountered: