Skip to content

[Bug]: salt-api with cherrypy and runner client, specifying -d timeout raise an exception #68653

@silenius

Description

@silenius

What happened?

I'm testing the salt-api and I'm trying to raise the timeout for the orchestrate runner but it looks like there is a bug, for example:

curl -Si "http://salt.lan:9999/run" -H 'Accept: application/x-yaml' -d client='runner' -d fun='state.orch' -d kwarg="{'mods':'orch.foobar'}" -d timeout=600 -d username='xxx' -d password='xxx' -d eauth='pam'

HTTP/1.1 500 Internal Server Error
Content-Type: application/x-yaml
Server: CherryPy/18.8.0
Date: Thu, 22 Jan 2026 09:14:54 GMT
Allow: GET, HEAD, POST
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: GET, POST
Access-Control-Allow-Credentials: true
Vary: Accept-Encoding
Content-Length: 2225

return: "Traceback (most recent call last):\n File "/usr/local/lib/python3.11/site-packages/salt/netapi/rest_cherrypy/app.py",
line 860, in hypermedia_handler\n ret = cherrypy.serving.request._hypermedia_inner_handler(*args,
**kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n
\ File "/usr/local/lib/python3.11/site-packages/cherrypy/_cpdispatch.py", line
54, in call\n return self.callable(*self.args, **self.kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n
\ File "/usr/local/lib/python3.11/site-packages/salt/netapi/rest_cherrypy/app.py",
line 2164, in POST\n "return": list(self.exec_lowstate()),\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n
\ File "/usr/local/lib/python3.11/site-packages/salt/netapi/rest_cherrypy/app.py",
line 1227, in exec_lowstate\n ret = self.api.run(chunk)\n ^^^^^^^^^^^^^^^^^^^\n
\ File "/usr/local/lib/python3.11/site-packages/salt/netapi/init.py", line
181, in run\n return l_fun(*f_call.get("args", ()), **f_call.get("kwargs",
{}))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File
"/usr/local/lib/python3.11/site-packages/salt/netapi/init.py", line 262, in
runner\n return runner.cmd_sync(kwargs, timeout=timeout, full_return=full_return)\n
\ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File
"/usr/local/lib/python3.11/site-packages/salt/runner.py", line 145, in cmd_sync\n
\ return mixins.SyncClientMixin.cmd_sync(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n
\ File "/usr/local/lib/python3.11/site-packages/salt/client/mixins.py", line 195,
in cmd_sync\n ret = event.get_event(\n ^^^^^^^^^^^^^^^^\n File "/usr/local/lib/python3.11/site-packages/salt/utils/event.py",
line 669, in get_event\n ret = self._get_event(wait, tag, match_func, no_block)\n
\ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/local/lib/python3.11/site-packages/salt/utils/event.py",
line 553, in _get_event\n timeout_at = start + wait\n ~~~~~~^~~~~~\nTypeError:
unsupported operand type(s) for +: 'float' and 'str'\n"
status: 500

This is on FreeBSD with py311-salt-3006.9_6,1:

# pkg info py311-salt
py311-salt-3006.9_6,1
Name           : py311-salt
Version        : 3006.9_6,1
Installed on   : Mon Oct 20 15:06:57 2025 CEST
Origin         : sysutils/py-salt
Architecture   : FreeBSD:14:*
Prefix         : /usr/local
Categories     : python sysutils
Licenses       : APACHE20
Maintainer     : krion@FreeBSD.org
WWW            : https://pypi.org/project/salt/
Comment        : Distributed remote execution and configuration management system
Options        :
        AWS            : off
        BASH           : off
        FISH           : off
        TCP            : off
        ZEROMQ         : on
        ZSH            : on
Annotations    :
        build_timestamp: 2025-10-06T17:17:46+0000
        built_by       : poudriere-git-3.4.2
        cpe            : cpe:2.3:a:saltstack:salt:3006.9:::::freebsd14:x64:6
        flavor         : py311
        port_checkout_unclean: no
        port_git_hash  : 4b546d25f
        ports_top_checkout_unclean: no
        ports_top_git_hash: 4b546d25f
        repo_type      : binary
        repository     : bebif
Flat size      : 91.9MiB
Description    :
Salt : Remote Execution and State Manager
======================================

Salt is a powerful remote execution and state manager that can be
used to administer servers in a fast and efficient way.

See also: https://saltproject.io/
``


### Type of salt install

other (please specify in bug details)

### Major version

3006.x

### What supported OS are you seeing the problem on? Can select multiple. (If bug appears on an unsupported OS, please open a GitHub Discussion instead)

debian-12

### salt --versions-report output

```shell
Client:

# salt --versions-report
Salt Version:
          Salt: 3006.9
 
Python Version:
        Python: 3.11.13 (main, Oct  6 2025, 07:04:08) [Clang 19.1.7 (https://github.com/llvm/llvm-project.git llvmorg-19.1.7-0-gcd7080
 
Dependency Versions:
          cffi: 1.17.1
      cherrypy: Not Installed
  cryptography: 44.0.3
      dateutil: 2.9.0
     docker-py: Not Installed
         gitdb: Not Installed
     gitpython: Not Installed
        Jinja2: 3.1.6
       libgit2: Not Installed
  looseversion: 1.3.0
      M2Crypto: Not Installed
          Mako: Not Installed
       msgpack: 1.1.1
  msgpack-pure: Not Installed
  mysql-python: Not Installed
     packaging: 25.0
     pycparser: 2.22
      pycrypto: Not Installed
  pycryptodome: 3.23.0
        pygit2: Not Installed
  python-gnupg: Not Installed
        PyYAML: 6.0.1
         PyZMQ: 27.0.2
        relenv: Not Installed
         smmap: Not Installed
       timelib: Not Installed
       Tornado: 4.5.3
           ZMQ: 4.3.5
 
System Versions:
          dist: freebsd 14.3 
        locale: utf-8
       machine: amd64
       release: 14.3-RELEASE-p5
        system: FreeBSD
       version: FreeBSD 14.3 

Master:
# salt --versions-report
Salt Version:
          Salt: 3006.8
 
Python Version:
        Python: 3.11.11 (main, Jan 31 2025, 08:24:23) [Clang 18.1.6 (https://github.com/llvm/llvm-project.git llvmorg-18.1.6-0-g1118c2
 
Dependency Versions:
          cffi: 1.17.1
      cherrypy: unknown
      dateutil: 2.9.0
     docker-py: Not Installed
         gitdb: Not Installed
     gitpython: Not Installed
        Jinja2: 3.1.4
       libgit2: Not Installed
  looseversion: 1.3.0
      M2Crypto: Not Installed
          Mako: Not Installed
       msgpack: 1.1.0
  msgpack-pure: Not Installed
  mysql-python: Not Installed
     packaging: 24.2
     pycparser: 2.22
      pycrypto: Not Installed
  pycryptodome: 3.21.0
        pygit2: Not Installed
  python-gnupg: Not Installed
        PyYAML: 6.0.1
         PyZMQ: 25.0.2
        relenv: Not Installed
         smmap: Not Installed
       timelib: Not Installed
       Tornado: 4.5.3
           ZMQ: 4.3.5
 
System Versions:
          dist: freebsd 14.2 
        locale: utf-8
       machine: amd64
       release: 14.3-RELEASE-p5
        system: FreeBSD
       version: FreeBSD 14.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugbroken, incorrect, or confusing behaviorneeds-triage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions