Skip to content

Investigate issue with pydantic 2.12.0 #428

@tomuben

Description

@tomuben

Using pydantic 2.12.0 throws following error when running the Text AI notebook:

Caught exception during cleanup after an exception.
Traceback (most recent call last):
  File "/home/jupyter/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/python_query_handler_runner.py", line 64, in run
    result = self._handle_continue(result)
  File "/home/jupyter/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/python_query_handler_runner.py", line 84, in _handle_continue
    _result = self._state.query_handler.handle_query_result(input_query_result)
  File "/home/jupyter/jupyterenv/lib/python3.10/site-packages/exasol/analytics/audit/audit_query_handler.py", line 108, in handle_query_result
    action = self._child.query_handler.handle_query_result(query_result)
  File "exasol/ai/text/impl/orchestrator/orchestrator_query_handler.py", line 117, in exasol.ai.text.impl.orchestrator.orchestrator_query_handler.OrchestratorQueryHandler.handle_query_result
  File "/home/jupyter/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/graph/stage/sql/execution/query_handler.py", line 58, in handle_query_result
    result = self._run_until_continue_or_last_stage_finished()
  File "/home/jupyter/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/graph/stage/sql/execution/query_handler.py", line 68, in _run_until_continue_or_last_stage_finished
    result = handler.start()
  File "exasol/ai/text/impl/stage_graph/query_handlers/udf_algo_query_handler.py", line 501, in exasol.ai.text.impl.stage_graph.query_handlers.udf_algo_query_handler.UDFAlgoQueryHandler.start
  File "exasol/ai/text/impl/stage_graph/query_handlers/udf_algo_query_handler.py", line 292, in exasol.ai.text.impl.stage_graph.query_handlers.udf_algo_query_handler.UDFAlgoQueryHandler.create_udf_query
  File "exasol/ai/text/impl/nlp/udf_factory.py", line 52, in exasol.ai.text.impl.nlp.udf_factory.UDFFactory.create_udf_query
  File "/home/jupyter/jupyterenv/lib/python3.10/site-packages/pydantic/main.py", line 528, in model_dump_json
    return self.__pydantic_serializer__.to_json(
pydantic_core._pydantic_core.PydanticSerializationError: Unable to serialize unknown type: <class 'sortedcontainers_pydantic.SortedSet'>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jupyter/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/python_query_handler_runner.py", line 72, in run
    self._handle_finish()
  File "/home/jupyter/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/python_query_handler_runner.py", line 105, in _handle_finish
    self._state.top_level_query_handler_context.release()
  File "/home/jupyter/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/context/top_level_query_handler_context.py", line 127, in release
    self._check_if_children_released()
  File "/home/jupyter/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/context/top_level_query_handler_context.py", line 311, in _check_if_children_released
    raise ChildContextNotReleasedError(
exasol.analytics.query_handler.context.top_level_query_handler_context.ChildContextNotReleasedError: The following child contexts were not released,
please release all contexts to avoid ressource leakage:
- <exasol.analytics.query_handler.context.top_level_query_handler_context._ChildQueryHandlerContext object at 0x785ebed02e00>
- <exasol.analytics.query_handler.context.top_level_query_handler_context._ChildQueryHandlerContext object at 0x785e1f6a2d10>
- <exasol.analytics.query_handler.context.top_level_query_handler_context._ChildQueryHandlerContext object at 0x785e1f6f4f40>

---------------------------------------------------------------------------
PydanticSerializationError                Traceback (most recent call last)
File ~/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/python_query_handler_runner.py:64, in PythonQueryHandlerRunner.run(self)
     63 while isinstance(result, Continue):
---> 64     result = self._handle_continue(result)
     65 if isinstance(result, Finish):

File ~/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/python_query_handler_runner.py:84, in PythonQueryHandlerRunner._handle_continue(self, result)
     83 input_query_result = self._run_input_query(result)
---> 84 _result = self._state.query_handler.handle_query_result(input_query_result)
     85 return _result

File ~/jupyterenv/lib/python3.10/site-packages/exasol/analytics/audit/audit_query_handler.py:108, in AuditQueryHandler.handle_query_result(self, query_result)
    107 if self._phase == Phase.MAIN:
--> 108     action = self._child.query_handler.handle_query_result(query_result)
    109     return self._handle_action(action)

File exasol/ai/text/impl/orchestrator/orchestrator_query_handler.py:117, in exasol.ai.text.impl.orchestrator.orchestrator_query_handler.OrchestratorQueryHandler.handle_query_result()

File ~/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/graph/stage/sql/execution/query_handler.py:58, in SQLStageGraphExecutionQueryHandler.handle_query_result(self, query_result)
     55 elif (
     56     result_handler_return_value == ResultHandlerReturnValue.CONTINUE_PROCESSING
     57 ):
---> 58     result = self._run_until_continue_or_last_stage_finished()
     59 else:

File ~/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/graph/stage/sql/execution/query_handler.py:68, in SQLStageGraphExecutionQueryHandler._run_until_continue_or_last_stage_finished(self)
     67 handler = self._state.get_current_query_handler()
---> 68 result = handler.start()
     69 result_handler_return_value = self._state.handle_result(result)

File exasol/ai/text/impl/stage_graph/query_handlers/udf_algo_query_handler.py:501, in exasol.ai.text.impl.stage_graph.query_handlers.udf_algo_query_handler.UDFAlgoQueryHandler.start()

File exasol/ai/text/impl/stage_graph/query_handlers/udf_algo_query_handler.py:292, in exasol.ai.text.impl.stage_graph.query_handlers.udf_algo_query_handler.UDFAlgoQueryHandler.create_udf_query()

File exasol/ai/text/impl/nlp/udf_factory.py:52, in exasol.ai.text.impl.nlp.udf_factory.UDFFactory.create_udf_query()

File ~/jupyterenv/lib/python3.10/site-packages/pydantic/main.py:528, in BaseModel.model_dump_json(self, indent, ensure_ascii, include, exclude, context, by_alias, exclude_unset, exclude_defaults, exclude_none, exclude_computed_fields, round_trip, warnings, fallback, serialize_as_any)
    499 """!!! abstract "Usage Documentation"
    500     [`model_dump_json`](../concepts/serialization.md#json-mode)
    501 
   (...)
    526     A JSON string representation of the model.
    527 """
--> 528 return self.__pydantic_serializer__.to_json(
    529     self,
    530     indent=indent,
    531     ensure_ascii=ensure_ascii,
    532     include=include,
    533     exclude=exclude,
    534     context=context,
    535     by_alias=by_alias,
    536     exclude_unset=exclude_unset,
    537     exclude_defaults=exclude_defaults,
    538     exclude_none=exclude_none,
    539     exclude_computed_fields=exclude_computed_fields,
    540     round_trip=round_trip,
    541     warnings=warnings,
    542     fallback=fallback,
    543     serialize_as_any=serialize_as_any,
    544 ).decode()

PydanticSerializationError: Unable to serialize unknown type: <class 'sortedcontainers_pydantic.SortedSet'>

The above exception was the direct cause of the following exception:

RuntimeError                              Traceback (most recent call last)
File <timed eval>:1

Cell In[22], line 2, in run_text_ai_preprocessing()
      1 def run_text_ai_preprocessing():
----> 2     extraction.run(ai_lab_config)

File ~/jupyterenv/lib/python3.10/site-packages/exasol/nb_connector/text_ai_extension_wrapper.py:246, in Extraction.run(self, conf)
    244 with open_pyexasol_connection(conf, compression=True) as connection:
    245     connection.execute(query=activation_sql)
--> 246     TextAiExtraction(
    247         extractor=self.extractor,
    248         output=self.output,
    249         defaults=defaults,
    250     ).run(
    251         pyexasol_con=connection,
    252         temporary_db_object_schema=conf.db_schema,
    253         language_alias=LANGUAGE_ALIAS,
    254     )

File exasol/ai/text/extraction/extraction.py:29, in exasol.ai.text.extraction.extraction.Extraction.run()

File exasol/ai/text/extraction/extraction.py:31, in exasol.ai.text.extraction.extraction.Extraction.run()

File exasol/ai/text/impl/orchestrator/python_extraction_runner.py:94, in exasol.ai.text.impl.orchestrator.python_extraction_runner.PythonExtractionRunner.run()

File ~/jupyterenv/lib/python3.10/site-packages/exasol/analytics/query_handler/python_query_handler_runner.py:75, in PythonQueryHandlerRunner.run(self)
     73 except Exception as e1:
     74     LOGGER.exception("Caught exception during cleanup after an exception.")
---> 75 raise RuntimeError(
     76     f"Execution of query handler {self._state.query_handler} failed."
     77 ) from e

RuntimeError: Execution of query handler <exasol.analytics.audit.audit_query_handler.AuditQueryHandler object at 0x785ebed02ec0> failed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugUnwanted / harmful behavior

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions