Skip to content

[with PYTEST-XDIST] Error while pickling worker's harvested results #84

@smarie

Description

@smarie

Apparently the cloudpickle fix is not enough (#75 ).
I ran into this today:

Traceback (most recent call last):
  File "C:\...\.nox\dev\Lib\site-packages\pytest_harvest\plugin.py", line 421, in pytest_harvest_xdist_worker_dump
    cloudpickle.dump((session_items, fixture_store), f)
  File "C:\...\.nox\dev\Lib\site-packages\cloudpickle\cloudpickle.py", line 1526, in dump
    Pickler(file, protocol=protocol, buffer_callback=buffer_callback).dump(obj)
  File "C:\...\.nox\dev\Lib\site-packages\cloudpickle\cloudpickle.py", line 1313, in dump
    return super().dump(obj)
           ^^^^^^^^^^^^^^^^^
TypeError: cannot pickle 'weakref.ReferenceType' object

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python311\Lib\logging\__init__.py", line 1110, in emit
    msg = self.format(record)
          ^^^^^^^^^^^^^^^^^^^
  File "C:\Python311\Lib\logging\__init__.py", line 953, in format
    return fmt.format(record)
           ^^^^^^^^^^^^^^^^^^
  File "C:\...\.nox\dev\Lib\site-packages\logistro\_api.py", line 68, in format
    message = str(record.msg) % record.args if record.args else str(record.msg)
              ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
TypeError: not enough arguments for format string
Call stack:
  File "<string>", line 1, in <module>
  File "<string>", line 8, in <module>
  File "C:\...\.nox\dev\Lib\site-packages\execnet\gateway_base.py", line 1806, in serve
    WorkerGateway(io=io, id=id, _startcount=2).serve()
  File "C:\...\.nox\dev\Lib\site-packages\execnet\gateway_base.py", line 1273, in serve
    self._execpool.integrate_as_primary_thread()
  File "C:\...\.nox\dev\Lib\site-packages\execnet\gateway_base.py", line 389, in integrate_as_primary_thread
    self._perform_spawn(reply)
  File "C:\...\.nox\dev\Lib\site-packages\execnet\gateway_base.py", line 411, in _perform_spawn
    reply.run()
  File "C:\...\.nox\dev\Lib\site-packages\execnet\gateway_base.py", line 341, in run
    self._result = func(*args, **kwargs)
  File "C:\...\.nox\dev\Lib\site-packages\execnet\gateway_base.py", line 1291, in executetask
    exec(co, loc)
  File "C:\...\.nox\dev\Lib\site-packages\xdist\remote.py", line 427, in <module>
    config.hook.pytest_cmdline_main(config=config)
  File "C:\...\.nox\dev\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "C:\...\.nox\dev\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\...\.nox\dev\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "C:\...\.nox\dev\Lib\site-packages\_pytest\main.py", line 336, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "C:\...\.nox\dev\Lib\site-packages\_pytest\main.py", line 324, in wrap_session
    config.hook.pytest_sessionfinish(
  File "C:\...\.nox\dev\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "C:\...\.nox\dev\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\...\.nox\dev\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "C:\...\.nox\dev\Lib\site-packages\pytest_harvest\plugin.py", line 467, in pytest_sessionfinish
    session.config.hook.pytest_harvest_xdist_worker_dump(worker_id=wid, session_items=session_items,
  File "C:\...\.nox\dev\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "C:\...\.nox\dev\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\...\.nox\dev\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "C:\...\.nox\dev\Lib\site-packages\pytest_harvest\plugin.py", line 423, in pytest_harvest_xdist_worker_dump
    warning("Error while pickling worker %s's harvested results: [%s] %s", (worker_id, e.__class__, e))
Message: "Error while pickling worker %s's harvested results: [%s] %s"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions