Hi Stuart,

On Mon, Jan 06, 2025 at 05:41:48PM +0000, Stuart Henderson wrote:
> On 2025/01/06 16:17, Mikolaj Kucharski wrote:
> > Hi,
> > 
> > Not sure is this actually related to python3.12, but I've notived it
> > today on few machines after upgrading -current.
> > 
> > I didn't troubleshoot this yet.
> 
> >   File 
> > "/usr/local/lib/python3.12/site-packages/salt/ext/tornado/netutil.py", line 
> > 57, in <module>
> >     import backports.ssl_match_hostname
> > ModuleNotFoundError: No module named 'backports'
> 
> I don't use salt, but please try this. (Alternatively it looks like
> updating to 3007.1 should also fix).

This fixes initial issue, but then breaks later in different way, from
/var/log/salt/minion file:

2025-01-06 21:12:54,002 [salt.cli.daemons                         :284 ][INFO   
 ][89450] Setting up the Salt Minion "pce-0033.home.lan"
2025-01-06 21:12:54,005 [salt.utils.process                       :284 ][INFO   
 ][89450] pidfile: /var/run/process_responsibility_salt-minion.pid not found
2025-01-06 21:12:55,544 [salt.cli.daemons :284 ][INFO    ][44897] Starting up 
the Salt Minion
2025-01-06 21:12:55,553 [salt.utils.event :284 ][INFO    ][44897] Starting pull 
socket on /var/run/salt/minion/minion_event_3edb48dc8f_pull.ipc
2025-01-06 21:12:57,344 [salt.minion                                            
     :284 ][INFO    ][44897] Creating minion process manager
2025-01-06 21:12:57,347 [salt.minion                                            
     :284 ][INFO    ][44897] Minion sleeping for 160 seconds due to configured 
startup_delay between 0 and 180 seconds
2025-01-06 21:15:37,964 [salt.minion                                            
     :284 ][CRITICAL][44897] Unexpected error while connecting to 
fde4:f456:48c2:13c0::1
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/salt/minion.py", line 1148, in 
_connect_minion
    yield minion.connect_master(failed=failed)
  File "/usr/local/lib/python3.12/site-packages/salt/ext/tornado/gen.py", line 
1056, in run
    value = future.result()
            ^^^^^^^^^^^^^^^
  File 
"/usr/local/lib/python3.12/site-packages/salt/ext/tornado/concurrent.py", line 
249, in result
    raise_exc_info(self._exc_info)
  File "<string>", line 4, in raise_exc_info
  File "/usr/local/lib/python3.12/site-packages/salt/ext/tornado/gen.py", line 
1064, in run
    yielded = self.gen.throw(*exc_info)
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/salt/minion.py", line 1389, in 
connect_master
    master, self.pub_channel = yield self.eval_master(
                               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/salt/ext/tornado/gen.py", line 
1056, in run
    value = future.result()
            ^^^^^^^^^^^^^^^
  File 
"/usr/local/lib/python3.12/site-packages/salt/ext/tornado/concurrent.py", line 
249, in result
    raise_exc_info(self._exc_info)
  File "<string>", line 4, in raise_exc_info
  File "/usr/local/lib/python3.12/site-packages/salt/ext/tornado/gen.py", line 
309, in wrapper
    yielded = next(result)
              ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/salt/minion.py", line 817, in 
eval_master
    pub_channel = salt.channel.client.AsyncPubChannel.factory(
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/salt/channel/client.py", line 
393, in factory
    transport = salt.transport.publish_client(opts, io_loop)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/salt/transport/base.py", line 
90, in publish_client
    import salt.transport.zeromq
  File "/usr/local/lib/python3.12/site-packages/salt/transport/zeromq.py", line 
15, in <module>
    import zmq.eventloop.future
  File "/usr/local/lib/python3.12/site-packages/zmq/eventloop/__init__.py", 
line 3, in <module>
    from tornado.ioloop import IOLoop
ModuleNotFoundError: No module named 'tornado'

..and loops with that `No module named 'tornado'` error filling up the
logs.

Trying:

        # pkg_add -i py3-tornado

stops the exception of no module named tornado, but OpenBSD 7.6-stable
with salt-3006.9p0 cannot talk to -current with salt-3006.9p2. I think
this is different issue, so out of scope of what I reported. Minion now
complains with:

2025-01-06 21:39:36,584 [salt.minion:284 ][ERROR   ][34129] Error while 
bringing up minion for multi-master. Is master at fde4:f456:48c2:13c0::1 
responding? The error message was Unable to sign_in to master: Attempt to 
authenticate with the salt master failed with timeout error

However there is network IPv6 connectivity to the master, as it was for
many months:

pce-0033# nc -v -w5 fde4:f456:48c2:13c0::1 4505 | cat -v
Connection to fde4:f456:48c2:13c0::1 4505 port [tcp/*] succeeded!

pce-0033# nc -v -w5 fde4:f456:48c2:13c0::1 4506 | cat -v
Connection to fde4:f456:48c2:13c0::1 4506 port [tcp/*] succeeded!

I guess problem is again within Salt itself.


> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/sysutils/salt/Makefile,v
> diff -u -p -r1.188 Makefile
> --- Makefile  21 Dec 2024 11:38:54 -0000      1.188
> +++ Makefile  6 Jan 2025 17:40:39 -0000
> @@ -15,9 +15,9 @@
> 
>  COMMENT =            remote execution and configuration management system
> 
> -MODPY_DISTV =        3006.9
> +MODPY_DISTV =                3006.9
>  DISTNAME =           salt-${MODPY_DISTV}
> -REVISION =           1
> +REVISION =           2
> 
>  CATEGORIES =         sysutils net devel
> 
> Index: patches/patch-salt_ext_tornado_netutil_py
> ===================================================================
> RCS file: patches/patch-salt_ext_tornado_netutil_py
> diff -N patches/patch-salt_ext_tornado_netutil_py
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-salt_ext_tornado_netutil_py 6 Jan 2025 17:40:39 -0000
> @@ -0,0 +1,16 @@
> +Index: salt/ext/tornado/netutil.py
> +--- salt/ext/tornado/netutil.py.orig
> ++++ salt/ext/tornado/netutil.py
> +@@ -54,9 +54,9 @@ if hasattr(ssl, 'match_hostname') and hasattr(ssl, 'Ce
> + elif ssl is None:
> +     ssl_match_hostname = SSLCertificateError = None  # type: ignore
> + else:
> +-    import backports.ssl_match_hostname
> +-    ssl_match_hostname = backports.ssl_match_hostname.match_hostname
> +-    SSLCertificateError = backports.ssl_match_hostname.CertificateError  # 
> type: ignore
> ++    import urllib3.util.ssl_match_hostname
> ++    ssl_match_hostname = urllib3.util.ssl_match_hostname
> ++    SSLCertificateError = urllib3.util.ssl_match_hostname.CertificateError  
> # type: ignore
> +
> + if hasattr(ssl, 'SSLContext'):
> +     if hasattr(ssl, 'create_default_context'):
> 

-- 
Regards,
 Mikolaj

Reply via email to