Skip to content

[18.0][fs_attachment] On incomming helpdesk email [Errno 2] No such file or directory #639

Description

@CRogos

Module

fs_attachment

Describe the bug

This problem occures with the Odoo Enterprise Helpdesk module, when a customer answers on a ticket. The eMail response cannot be added to the ticket thread, and the sender receives an error message via email.

@lmignon do you have an idea what is happening here?
I would expect some rename from "azure-helpdesk://33/90/3390c0744f0da406a690ecdadff93121e4a9436e" to
"azure-helpdesk://33/90/logo_group_signatur_300dpi_377x134_c9a381b8-bb6d-43bf-bac2-7021ffd2ea88-605375-0.png", but not "azure-helpdesk/33/90/3390c0744f0da406a690ecdadff93121e4a9436e"?

To Reproduce

Affected versions:
18.0

Additional context

2026-06-25 07:53:44,011 55954 ERROR c4a8-production-1830547 odoo.http: Exception during request handling. 
Traceback (most recent call last):
  File "/home/odoo/src/odoo/odoo/http.py", line 2577, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/http.py", line 2104, in _serve_db
    return self._transactioning(
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/http.py", line 2167, in _transactioning
    return service_model.retrying(func, env=self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/service/model.py", line 157, in retrying
    result = func()
             ^^^^^^
  File "/home/odoo/src/odoo/odoo/http.py", line 2134, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/http.py", line 2295, in dispatch
    return self.request.registry['ir.http']._dispatch(endpoint)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_http.py", line 333, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/http.py", line 754, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/addons/base/controllers/rpc.py", line 165, in xmlrpc_2
    response = self._xmlrpc(service)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/addons/base/controllers/rpc.py", line 139, in _xmlrpc
    result = dispatch_rpc(service, method, params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/http.py", line 412, in dispatch_rpc
    return dispatch(method, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/odoo.sh/odoosh/bin/odoo-rpc", line 35, in dispatch
    return odoo_dispatch(method, [db, SUPERUSER_ID, None] + list(params))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/service/model.py", line 59, in dispatch
    res = execute_kw(db, uid, *params[3:])
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/service/model.py", line 82, in execute_kw
    return execute(db, uid, obj, method, *args, **kw or {})
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/service/model.py", line 88, in execute
    res = execute_cr(cr, uid, obj, method, *args, **kw)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/service/model.py", line 73, in execute_cr
    result = retrying(partial(odoo.api.call_kw, recs, method, args, kw), env)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/odoo/service/model.py", line 157, in retrying
    result = func()
             ^^^^^^
  File "/home/odoo/src/odoo/odoo/api.py", line 535, in call_kw
    result = getattr(recs, name)(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 1439, in message_process
    thread_id = self._message_route_process(message, msg_dict, routes)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/user/modules/c4a8/enterprise/email_from/models/ir_build_email.py", line 11, in _message_route_process
    return super(MailThread, self.with_context(process_incomming_email=True))._message_route_process(message, message_dict, routes)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/addons/mass_mailing/models/mail_thread.py", line 29, in _message_route_process
    return super(MailThread, self)._message_route_process(message, message_dict, routes)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/user/modules/c4a8/community/mail_header/models/mail_thread.py", line 22, in _message_route_process
    return super()._message_route_process(message, message_dict, routes)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 1362, in _message_route_process
    new_msg = thread_root.message_post(**post_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/user/modules/c4a8/enterprise/helpdesk_ticket_stage/models/helpdesk_ticket.py", line 15, in message_post
    msg = super().message_post(**kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/addons/sms/models/mail_thread.py", line 52, in message_post
    return super().message_post(*args, body=body, message_type=message_type, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/addons/rating/models/mail_thread.py", line 182, in message_post
    return super().message_post(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 2286, in message_post
    self._process_attachments_for_post(attachments, attachment_ids, msg_values)
  File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 2436, in _process_attachments_for_post
    new_attachments = self._create_attachments_for_post(attachement_values_list, attachement_extra_list)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 2469, in _create_attachments_for_post
    return self.env['ir.attachment'].sudo().create(values_list)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-305>", line 2, in create
  File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/enterprise/documents_account/models/ir_attachment.py", line 10, in create
    attachments = super().create(vals_list)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-228>", line 2, in create
  File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/addons/hr_expense/models/ir_attachment.py", line 9, in create
    attachments = super().create(vals_list)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-203>", line 2, in create
  File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/addons/website/models/ir_attachment.py", line 22, in create
    return super().create(vals_list)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-168>", line 2, in create
  File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/enterprise/documents/models/ir_attachment.py", line 95, in create
    attachments = super().create(vals_list)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-103>", line 2, in create
  File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/addons/product/models/ir_attachment.py", line 12, in create
    attachments = super().create(vals_list)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-82>", line 2, in create
  File "/home/odoo/src/odoo/odoo/api.py", line 498, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/user/modules/oca/storage/fs_attachment/models/ir_attachment.py", line 293, in create
    attachments._enforce_meaningful_storage_filename()
  File "/home/odoo/src/user/modules/oca/storage/fs_attachment/models/ir_attachment.py", line 488, in _enforce_meaningful_storage_filename
    fs.rename(filename, new_filename_with_path)
  File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/spec.py", line 1783, in rename
    return self.mv(path1, path2, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/implementations/dirfs.py", line 345, in mv
    return self.fs.mv(
           ^^^^^^^^^^^
  File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/spec.py", line 1218, in mv
    self.copy(
  File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/asyn.py", line 118, in wrapper
    return sync(self.loop, func, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/asyn.py", line 103, in sync
    raise return_result
  File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/asyn.py", line 56, in _runner
    result[0] = await coro
                ^^^^^^^^^^
  File "/home/odoo/.local/lib/python3.12/site-packages/fsspec/asyn.py", line 372, in _copy
    paths1 = await self._expand_path(
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/.local/lib/python3.12/site-packages/adlfs/spec.py", line 1629, in _expand_path
    out = await self._expand_path(
          ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/.local/lib/python3.12/site-packages/adlfs/spec.py", line 1674, in _expand_path
    raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), path)
FileNotFoundError: [Errno 2] No such file or directory: ['azure-helpdesk/33/90/3390c0744f0da406a690ecdadff93121e4a9436e']

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions