Skip to content

Commit c554f13

Browse files
authored
Merge pull request #69081 from TeddyAndrieux/bugfix/none-opts-when-set-logging
fix(logging): tolerate unset options dict in worker bootstrap
2 parents 6746c31 + 356218b commit c554f13

4 files changed

Lines changed: 37 additions & 1 deletion

File tree

changelog/68332.fixed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed worker process crash when salt is used outside CLI tools.

salt/_logging/impl.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,8 @@ def set_logging_options_dict(opts):
434434
"""
435435
Create a logging related options dictionary based off of the loaded salt config
436436
"""
437+
if opts is None:
438+
return
437439
try:
438440
if isinstance(set_logging_options_dict.__options_dict__, ImmutableDict):
439441
raise RuntimeError(
@@ -969,7 +971,7 @@ def setup_log_granular_levels(log_granular_levels):
969971
def setup_logging():
970972
opts = get_logging_options_dict()
971973
if not opts:
972-
raise RuntimeError("The logging options have not been set yet.")
974+
return
973975
if (
974976
opts.get("configure_console_logger", True)
975977
and not is_console_handler_configured()

tests/pytests/functional/utils/test_process.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,3 +125,18 @@ def test_process_preimports_multiprocessing_connection_68573(tmp_path):
125125
cwd=str(tmp_path),
126126
)
127127
assert result.returncode == 0, f"stdout={result.stdout!r} stderr={result.stderr!r}"
128+
129+
130+
def test_process_unseeded_logging_options():
131+
"""
132+
Regression test for issue #68332.
133+
"""
134+
135+
def target():
136+
pass
137+
138+
salt._logging.set_logging_options_dict.__options_dict__ = None
139+
proc = salt.utils.process.Process(target=target)
140+
proc.start()
141+
proc.join()
142+
assert proc.exitcode == 0

tests/pytests/unit/_logging/test_impl.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313
SaltLogRecord,
1414
get_log_record_factory,
1515
set_log_record_factory,
16+
set_logging_options_dict,
17+
setup_logging,
1618
)
19+
from tests.support.mock import patch
1720

1821

1922
@pytest.fixture
@@ -119,3 +122,18 @@ def test_deferred_records_flushed_through_color_formatter(
119122
output = console_stream.getvalue()
120123
assert "buffered message" in output
121124
assert "DEBUG" in output
125+
126+
127+
def test_set_logging_options_dict_with_none():
128+
"""
129+
Regression test for issue #68332.
130+
"""
131+
set_logging_options_dict(None)
132+
133+
134+
def test_setup_logging_with_unseeded_options():
135+
"""
136+
Regression test for issue #68332.
137+
"""
138+
with patch.object(set_logging_options_dict, "__options_dict__", None, create=True):
139+
setup_logging()

0 commit comments

Comments
 (0)