saltstack / saltstack/salt

[BUG] 3007.0 TCP Publish Client encountered an exception when option scheduler_before_connect is set

Open
#66,498 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug needs-triage
Dominant language
Python
Stars
15.7k
Forks
5.6k
Avg merge
2d 44m
Merged PRs (30d)
80

Description

Description
The following error is thron in the 3007.0 Windows minion log when option scheduler_before_connect: True is used

PS C:\Users\adrian> salt-minion -l info
02:35:10,325 [salt.cli.daemons                           :301 ][INFO    ][4372] Setting up the Salt Minion "minion-win-3"
02:35:10,622 [salt.cli.daemons                           :83  ][INFO    ][4372] Starting up the Salt Minion
02:35:11,857 [salt.minion                                                              :1305][INFO    ][4372] Creating minion process manager
02:35:12,669 [salt.minion                                                              :1305][INFO    ][4372] Creating minion process manager
02:35:12,810 [salt.transport.tcp                                                       :1410][ERROR   ][4372] Publish server binding pub to 127.0.0.1:4510 ssl=None
02:35:13,466 [salt.loader.172.21.0.10.int.module.cmdmod                                :438 ][INFO    ][4372] Executing command tzutil in directory 'C:\Users\adrian'
02:35:13,700 [salt.utils.schedule                                                      :1792][INFO    ][4372] Running scheduled job: __mine_interval with jid 20240510023513700784
02:35:16,872 [salt.transport.tcp                                                       :311 ][WARNING ][4372] TCP Publish Client encountered an exception while connecting to 127.0.0.1:4510: TimeoutError(), will reconnect in 1 seconds -   File "C:\Program Files\Salt Project\Salt\Lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,

  File "C:\Program Files\Salt Project\Salt\Lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)

  File "C:\Program Files\Salt Project\Salt\salt-minion.exe\__main__.py", line 7, in <module>
    sys.exit(salt_minion())

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\scripts.py", line 187, in salt_minion
    minion.start()

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\cli\daemons.py", line 345, in start
    self._real_start()

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\cli\daemons.py", line 357, in _real_start
    self.minion.tune_in()

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\minion.py", line 1194, in tune_in
    self._bind()

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\minion.py", line 1065, in _bind
    self.event = salt.utils.event.get_event(

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\utils\event.py", line 135, in get_event
    return SaltEvent(

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\utils\event.py", line 265, in __init__
    self.connect_pub()

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\utils\event.py", line 348, in connect_pub
    self.subscriber = salt.transport.ipc_publish_client(

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\transport\base.py", line 210, in ipc_publish_client
    return publish_client(opts, io_loop, **kwargs)

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\transport\base.py", line 152, in publish_client
    return salt.transport.tcp.PublishClient(

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\transport\tcp.py", line 219, in __init__
    super().__init__(opts, io_loop, **kwargs)

  File "C:\Program Files\Salt Project\Salt\Lib\site-packages\salt\transport\base.py", line 398, in __init__
    super().__init__()

02:35:17,091 [salt.utils.schedule                                                      :411 ][INFO    ][4372] Updating job settings for scheduled job: __mine_interval

Setup
3007.0 WIndows minion, scheduler_before_connect: True in the minion config

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure on a 3007.0 Windows minion with scheduler_before_connect: True, then trace the connection path through salt/utils/event.py, salt/transport/base.py, and salt/transport/tcp.py. Compare the publish-client setup with the minion binding flow in salt/minion.py; done means the reported TCP Publish Client timeout no longer occurs in this setup.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
infrastructure, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.