mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
cherry-pick cdata KeyError prevention from #39832
@ninja- noticed there was some useful code already in _call_parallel_target to mitigate KeyErrors for potentially empty cdata, but it wasnt being executed due to the invoking method making the same mistake before calling it. this moves that code up to eliminate that potential stacktrace. this should close #39832
This commit is contained in:
parent
26a96e8933
commit
2c86f16b39
1 changed files with 15 additions and 14 deletions
|
@ -1693,7 +1693,7 @@ class State(object):
|
|||
errors.extend(req_in_errors)
|
||||
return req_in_high, errors
|
||||
|
||||
def _call_parallel_target(self, cdata, low):
|
||||
def _call_parallel_target(self, name, cdata, low):
|
||||
'''
|
||||
The target function to call that will create the parallel thread/process
|
||||
'''
|
||||
|
@ -1707,17 +1707,6 @@ class State(object):
|
|||
**cdata['kwargs'])
|
||||
except Exception:
|
||||
trb = traceback.format_exc()
|
||||
# There are a number of possibilities to not have the cdata
|
||||
# populated with what we might have expected, so just be smart
|
||||
# enough to not raise another KeyError as the name is easily
|
||||
# guessable and fallback in all cases to present the real
|
||||
# exception to the user
|
||||
if len(cdata['args']) > 0:
|
||||
name = cdata['args'][0]
|
||||
elif 'name' in cdata['kwargs']:
|
||||
name = cdata['kwargs']['name']
|
||||
else:
|
||||
name = low.get('name', low.get('__id__'))
|
||||
ret = {
|
||||
'result': False,
|
||||
'name': name,
|
||||
|
@ -1749,11 +1738,23 @@ class State(object):
|
|||
'''
|
||||
Call the state defined in the given cdata in parallel
|
||||
'''
|
||||
# There are a number of possibilities to not have the cdata
|
||||
# populated with what we might have expected, so just be smart
|
||||
# enough to not raise another KeyError as the name is easily
|
||||
# guessable and fallback in all cases to present the real
|
||||
# exception to the user
|
||||
if len(cdata['args']) > 0:
|
||||
name = cdata['args'][0]
|
||||
elif 'name' in cdata['kwargs']:
|
||||
name = cdata['kwargs']['name']
|
||||
else:
|
||||
name = low.get('name', low.get('__id__'))
|
||||
|
||||
proc = salt.utils.process.MultiprocessingProcess(
|
||||
target=self._call_parallel_target,
|
||||
args=(cdata, low))
|
||||
args=(name, cdata, low))
|
||||
proc.start()
|
||||
ret = {'name': cdata['args'][0],
|
||||
ret = {'name': name,
|
||||
'result': None,
|
||||
'changes': {},
|
||||
'comment': 'Started in a separate process',
|
||||
|
|
Loading…
Add table
Reference in a new issue