ZEO.Exceptions.ServerException: ('builtins.FileNotFoundError', (2, 'No such file or directory')) in Plone 6.0.7

I am doing a Plone migration import using collective.exportimport into Plone 6.0.7.

With some content-types, the import fails badly due to this ZEO error:

    new = self.handle_new_object(item, index, new)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/src/collective.exportimport/src/collective/exportimport/import_content.py", line 450, in handle_new_object
    raise e
  File "/home/ajung/src/unibo/incronaca-plone6/src/collective.exportimport/src/collective/exportimport/import_content.py", line 435, in handle_new_object
    new = deserializer(validate_all=False, data=item)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/plone.restapi-8.43.3-py3.11.egg/plone/restapi/deserializer/dxcontent.py", line 60, in __call__
    raise BadRequest(errors)
zExceptions.BadRequest: [{'field': 'autori', 'message': ('autori is a required field.', 'Setting it to null is not allowed.'), 'error': 'ValidationError'}]
Traceback (most recent call last):
  File "/home/ajung/src/unibo/incronaca-plone6/parts/instance/bin/interpreter", line 304, in <module>
    exec(_val)
  File "<string>", line 1, in <module>
  File "scripts/migration-import.py", line 491, in <module>
    import_ct(ct)
  File "scripts/migration-import.py", line 235, in import_ct
    import_content(jsonfile=data, return_json=True)
  File "/home/ajung/src/unibo/incronaca-plone6/src/collective.exportimport/src/collective/exportimport/import_content.py", line 184, in __call__
    msg = self.do_import(data)
          ^^^^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/src/collective.exportimport/src/collective/exportimport/import_content.py", line 254, in do_import
    transaction.commit()
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/transaction-3.1.0-py3.11.egg/transaction/_manager.py", line 257, in commit
    return self.manager.commit()
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/transaction-3.1.0-py3.11.egg/transaction/_manager.py", line 134, in commit
    return self.get().commit()
           ^^^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/transaction-3.1.0-py3.11.egg/transaction/_transaction.py", line 283, in commit
    reraise(t, v, tb)
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/transaction-3.1.0-py3.11.egg/transaction/_compat.py", line 50, in reraise
    raise value
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/transaction-3.1.0-py3.11.egg/transaction/_transaction.py", line 274, in commit
    self._commitResources()
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/transaction-3.1.0-py3.11.egg/transaction/_transaction.py", line 457, in _commitResources
    reraise(t, v, tb)
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/transaction-3.1.0-py3.11.egg/transaction/_compat.py", line 50, in reraise
    raise value
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/transaction-3.1.0-py3.11.egg/transaction/_transaction.py", line 434, in _commitResources
    rm.tpc_vote(self)
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/ZODB-5.8.1-py3.11.egg/ZODB/Connection.py", line 688, in tpc_vote
    s = vote(transaction)
        ^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/ZEO-5.4.1-py3.11.egg/ZEO/ClientStorage.py", line 846, in tpc_vote
    for oid in self._call('vote', id(txn)) or ():
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/ZEO-5.4.1-py3.11.egg/ZEO/asyncio/client.py", line 883, in call
    return self.io_call(
           ^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/ZEO-5.4.1-py3.11.egg/ZEO/asyncio/client.py", line 862, in io_call
    return future.result() if wait else future
           ^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/ZEO-5.4.1-py3.11.egg/ZEO/asyncio/futures.py", line 230, in result
    return Future.result(self)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/ZEO-5.4.1-py3.11.egg/ZEO/asyncio/futures.py", line 81, in result
    raise self._result
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/ZEO-5.4.1-py3.11.egg/ZEO/asyncio/futures.py", line 273, in step
    result = self.coro.throw(await_result)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/ZEO-5.4.1-py3.11.egg/ZEO/asyncio/client.py", line 716, in call_sync_co
    _ = yield self.protocol.call_sync(method, args)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/ZEO-5.4.1-py3.11.egg/ZEO/asyncio/futures.py", line 259, in step
    await_result = awaiting.result()
                   ^^^^^^^^^^^^^^^^^
  File "/home/ajung/src/unibo/incronaca-plone6/eggs/ZEO-5.4.1-py3.11.egg/ZEO/asyncio/futures.py", line 81, in result
    raise self._result
ZEO.Exceptions.ServerException: ('builtins.FileNotFoundError', (2, 'No such file or directory'))

Any idea?

  1. Schema validation says that the field autori is required and there is missing data. We usually handle this by customizing the import script or temporary switching of required field input.
  2. Can you update your checked out collective.exportimport to the latest master and try again. The traceback info import_content.py", line 254, in do_import points to an outdated line number.

The problem is likely related to some ZEO race condition. Restarting the server solved the problem.
Such an application-level error should not cause such a ZEO problem...no idea why this happened.
Solved for now .)