Hi, it is very much reproducible. We’re having the same issue. updated from 2.2.0p25 enterprise to 2.3.0 enterprise
$OMD_ROOT/var/log/web.log output here:
2024-05-09 12:13:28,708 [40] [cmk.gui.wsgi.app 3792329] Exception on /evos_ss/check_mk/parent_child_topology.py [GET]
Traceback (most recent call last):
File "/omd/sites/evos_ss/lib/python3/cmk/gui/wsgi/applications/checkmk.py", line 183, in _process_request
resp = page_handler()
^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/gui/wsgi/applications/utils.py", line 112, in _call_auth
func()
File "/omd/sites/evos_ss/lib/python3/cmk/gui/pages.py", line 187, in wrapper
return hc().handle_page()
^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/gui/pages.py", line 51, in handle_page
self.page()
File "/omd/sites/evos_ss/lib/python3/cmk/gui/nodevis/topology.py", line 204, in page
self.show_topology()
File "/omd/sites/evos_ss/lib/python3/cmk/gui/nodevis/topology.py", line 216, in show_topology
self.show_topology_content()
File "/omd/sites/evos_ss/lib/python3/cmk/gui/nodevis/topology.py", line 221, in show_topology_content
topology_configuration = get_topology_configuration(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/gui/nodevis/topology.py", line 1598, in get_topology_configuration
topology_configuration = TopologyConfiguration.parse(serialized_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/gui/nodevis/type_defs.py", line 197, in parse
cls._migrate_legacy_data(serialized_config)
File "/omd/sites/evos_ss/lib/python3/cmk/gui/nodevis/type_defs.py", line 224, in _migrate_legacy_data
"filter": TopologyFilterConfiguration().ident,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 3, in __init__
TypeError: 'int' object is not callable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/omd/sites/evos_ss/lib/python3.12/site-packages/flask/app.py", line 1463, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/site-packages/flask/app.py", line 873, in full_dispatch_request
return self.finalize_request(rv)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/site-packages/flask/app.py", line 892, in finalize_request
response = self.make_response(rv)
^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/site-packages/flask/app.py", line 1188, in make_response
rv = self.response_class.force_type(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/site-packages/werkzeug/wrappers/response.py", line 237, in force_type
response = Response(*run_wsgi_app(response, environ))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/site-packages/werkzeug/test.py", line 1262, in run_wsgi_app
app_rv = app(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/gui/wsgi/applications/utils.py", line 48, in __call__
return self.wsgi_app(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/gui/wsgi/middleware.py", line 63, in wsgi_app
return self.app(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/gui/wsgi/applications/checkmk.py", line 162, in wsgi_app
return _process_request(environ, start_response, debug=self.debug)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/gui/wsgi/applications/checkmk.py", line 224, in _process_request
resp = handle_unhandled_exception()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/gui/wsgi/applications/utils.py", line 209, in handle_unhandled_exception
handle_exception_as_gui_crash_report(
File "/omd/sites/evos_ss/lib/python3/cmk/gui/crash_handler.py", line 56, in handle_exception_as_gui_crash_report
crash = GUICrashReport.from_exception(details=details)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/gui/crash_handler.py", line 32, in from_exception
return super().from_exception(
^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/utils/crash_reporting.py", line 166, in from_exception
"crash_info": _get_generic_crash_info(cls.type(), details or {}),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/utils/crash_reporting.py", line 265, in _get_generic_crash_info
"local_vars": _get_local_vars_of_last_exception(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3/cmk/utils/crash_reporting.py", line 283, in _get_local_vars_of_last_exception
_format_var_for_export(pprint.pformat(local_vars).encode("utf-8"), maxsize=5 * 1024 * 1024)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/pprint.py", line 62, in pformat
underscore_numbers=underscore_numbers).pformat(object)
^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/pprint.py", line 161, in pformat
self._format(object, sio, 0, 0, {}, 0)
File "/omd/sites/evos_ss/lib/python3.12/pprint.py", line 178, in _format
rep = self._repr(object, context, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/pprint.py", line 458, in _repr
repr, readable, recursive = self.format(object, context.copy(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/pprint.py", line 471, in format
return self._safe_repr(object, context, maxlevels, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/pprint.py", line 589, in _safe_repr
vrepr, vreadable, vrecur = self.format(
^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/pprint.py", line 471, in format
return self._safe_repr(object, context, maxlevels, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/pprint.py", line 632, in _safe_repr
rep = repr(object)
^^^^^^^^^^^^
File "/omd/sites/evos_ss/lib/python3.12/dataclasses.py", line 262, in wrapper
result = user_function(self)
^^^^^^^^^^^^^^^^^^^
File "<string>", line 3, in __repr__
AttributeError: 'TopologyFilterConfiguration' object has no attribute 'max_nodes'