Skip to content

[13.0] MemoryError in website_sale post-migration with many images #4712

@huguesdk

Description

@huguesdk

module

website_sale

describe the bug

when running a migration from 12.0 to 13.0 with many product.image records, the migration fails after displaying many MemoryError errors.

to reproduce

affected versions: upgrade to 13.0

steps to reproduce the behavior:

  1. have a database in version 12.0 with website_sale installed and having many product.image records (in my case, 21k).
  2. run openupgrade to upgrade to 13.0.

expected behavior
the database and its filestore should be correctly upgraded to 13.0.

additional context

log:

2025-01-15 17:21:08,640 1 INFO odoo-upgrade odoo.modules.migration: module website_sale: Running migration [13.0.1.0>] post-migration 
2025-01-15 17:21:08,643 1 INFO odoo-upgrade OpenUpgrade: website_sale: post-migration script called with version 12.0.1.0 
2025-01-15 17:21:08,643 1 INFO odoo-upgrade odoo.models: Computing parent_path for table product_public_category... 
2025-01-15 17:21:08,659 1 DEBUG odoo-upgrade OpenUpgrade: 0 rows affected after 0:00:00.003386 running 
        UPDATE product_image
        SET name = 'Image ' || id
        WHERE name IS NULL  
2025-01-15 17:23:14,217 1 ERROR odoo-upgrade post-migration: Error while recovering product.image>image for 19497: MemoryError() 
2025-01-15 17:23:14,234 1 ERROR odoo-upgrade post-migration: Error while recovering product.image>image for 19496: MemoryError() 
2025-01-15 17:23:14,235 1 ERROR odoo-upgrade post-migration: Error while recovering product.image>image for 19495: MemoryError() 
2025-01-15 17:23:14,236 1 ERROR odoo-upgrade post-migration: Error while recovering product.image>image for 19494: MemoryError() 
2025-01-15 17:23:14,238 1 ERROR odoo-upgrade post-migration: Error while recovering product.image>image for 19493: MemoryError() 
2
(…)
2025-01-15 17:23:20,981 1 ERROR odoo-upgrade post-migration: Error while recovering product.image>image for 15232: MemoryError() 
2025-01-15 17:23:20,982 1 ERROR odoo-upgrade post-migration: Error while recovering product.image>image for 15231: MemoryError() 
2025-01-15 17:23:20,983 1 ERROR odoo-upgrade post-migration: Error while recovering product.image>image for 15230: MemoryError() 
2025-01-15 17:23:21,010 1 ERROR odoo-upgrade OpenUpgrade: website_sale: error in migration script /odoo_env/src/openupgrade/addons/website_sale/migrations/13.0.1.0/post-migration.py:  
2025-01-15 17:23:21,010 1 ERROR odoo-upgrade OpenUpgrade:  
Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/api.py", line 748, in get
    value = self._data[field][record._ids[0]]
KeyError: 139810

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1038, in __get__
    value = env.cache.get(record, self)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 754, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.attachment(139810,).datas', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/api.py", line 748, in get
    value = self._data[field][record._ids[0]]
KeyError: 139810

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1038, in __get__
    value = env.cache.get(record, self)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 754, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.attachment(139810,).store_fname', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1147, in compute_value
    records._compute_field_value(self)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 4021, in _compute_field_value
    getattr(self, field.compute)()
  File "/odoo_env/src/openupgrade/odoo/addons/base/models/ir_attachment.py", line 199, in _compute_datas
    if attach.store_fname:
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1045, in __get__
    recs._fetch_field(self)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3006, in _fetch_field
    self._read(fnames)
  File "/odoo_env/src/openupgrade/odoo/addons/base/models/ir_attachment.py", line 486, in _read
    return super(IrAttachment, self)._read(fields)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3099, in _read
    self.env.cache.update(fetched, field, values)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 773, in update
    self._data[field].update(zip(records._ids, values))
MemoryError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/addons/website_sale/migrations/13.0.1.0/post-migration.py", line 32, in convert_image_attachments
    Model.browse(attachment.res_id).image_1920 = attachment.datas
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1062, in __get__
    self.compute_value(recs)
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 2001, in compute_value
    super().compute_value(records)
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1150, in compute_value
    env.add_to_compute(field, records)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 690, in add_to_compute
    self.all.tocompute[field].update(records._ids)
MemoryError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/api.py", line 748, in get
    value = self._data[field][record._ids[0]]
KeyError: 139810

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1038, in __get__
    value = env.cache.get(record, self)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 754, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.attachment(139810,).res_id', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/venv/lib/python3.7/site-packages/openupgradelib/openupgrade.py", line 2285, in wrapped_function
    version,
  File "/odoo_env/src/openupgrade/addons/website_sale/migrations/13.0.1.0/post-migration.py", line 66, in migrate
    convert_image_attachments(env)
  File "/odoo_env/src/openupgrade/addons/website_sale/migrations/13.0.1.0/post-migration.py", line 38, in convert_image_attachments
    attachment.res_id,
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1045, in __get__
    recs._fetch_field(self)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3006, in _fetch_field
    self._read(fnames)
  File "/odoo_env/src/openupgrade/odoo/addons/base/models/ir_attachment.py", line 486, in _read
    return super(IrAttachment, self)._read(fields)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3099, in _read
    self.env.cache.update(fetched, field, values)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 773, in update
    self._data[field].update(zip(records._ids, values))
MemoryError
2025-01-15 17:23:21,082 1 ERROR odoo-upgrade odoo.modules.loading: Error executing post migration script for module website_sale
`-> website_sale_management
`-> website_sale_product_description
`-> website_sale_product_sort
`-> website_sale_product_style_badge
`-> website_sale_require_legal
:  
2025-01-15 17:23:21,086 1 ERROR odoo-upgrade odoo.modules.registry: Failed to load registry 
Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/api.py", line 748, in get
    value = self._data[field][record._ids[0]]
KeyError: 139810

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1038, in __get__
    value = env.cache.get(record, self)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 754, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.attachment(139810,).datas', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/api.py", line 748, in get
    value = self._data[field][record._ids[0]]
KeyError: 139810

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1038, in __get__
    value = env.cache.get(record, self)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 754, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.attachment(139810,).store_fname', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1147, in compute_value
    records._compute_field_value(self)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 4021, in _compute_field_value
    getattr(self, field.compute)()
  File "/odoo_env/src/openupgrade/odoo/addons/base/models/ir_attachment.py", line 199, in _compute_datas
    if attach.store_fname:
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1045, in __get__
    recs._fetch_field(self)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3006, in _fetch_field
    self._read(fnames)
  File "/odoo_env/src/openupgrade/odoo/addons/base/models/ir_attachment.py", line 486, in _read
    return super(IrAttachment, self)._read(fields)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3099, in _read
    self.env.cache.update(fetched, field, values)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 773, in update
    self._data[field].update(zip(records._ids, values))
MemoryError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/addons/website_sale/migrations/13.0.1.0/post-migration.py", line 32, in convert_image_attachments
    Model.browse(attachment.res_id).image_1920 = attachment.datas
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1062, in __get__
    self.compute_value(recs)
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 2001, in compute_value
    super().compute_value(records)
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1150, in compute_value
    env.add_to_compute(field, records)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 690, in add_to_compute
    self.all.tocompute[field].update(records._ids)
MemoryError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/api.py", line 748, in get
    value = self._data[field][record._ids[0]]
KeyError: 139810

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1038, in __get__
    value = env.cache.get(record, self)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 754, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.attachment(139810,).res_id', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/modules/registry.py", line 87, in new
    odoo.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/odoo_env/src/openupgrade/odoo/modules/loading.py", line 489, in load_modules
    force, status, report, loaded_modules, update_module, models_to_check, upg_registry)
  File "/odoo_env/src/openupgrade/odoo/modules/loading.py", line 368, in load_marked_modules
    upg_registry=upg_registry,
  File "/odoo_env/src/openupgrade/odoo/modules/loading.py", line 256, in load_module_graph
    migrations.migrate_module(package, 'post')
  File "/odoo_env/src/openupgrade/odoo/modules/migration.py", line 191, in migrate_module
    migrate(self.cr, installed_version)
  File "/opt/venv/lib/python3.7/site-packages/openupgradelib/openupgrade.py", line 2285, in wrapped_function
    version,
  File "/odoo_env/src/openupgrade/addons/website_sale/migrations/13.0.1.0/post-migration.py", line 66, in migrate
    convert_image_attachments(env)
  File "/odoo_env/src/openupgrade/addons/website_sale/migrations/13.0.1.0/post-migration.py", line 38, in convert_image_attachments
    attachment.res_id,
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1045, in __get__
    recs._fetch_field(self)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3006, in _fetch_field
    self._read(fnames)
  File "/odoo_env/src/openupgrade/odoo/addons/base/models/ir_attachment.py", line 486, in _read
    return super(IrAttachment, self)._read(fields)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3099, in _read
    self.env.cache.update(fetched, field, values)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 773, in update
    self._data[field].update(zip(records._ids, values))
MemoryError
2025-01-15 17:23:21,087 1 CRITICAL odoo-upgrade odoo.service.server: Failed to initialize database `odoo-upgrade`. 
Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/api.py", line 748, in get
    value = self._data[field][record._ids[0]]
KeyError: 139810

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1038, in __get__
    value = env.cache.get(record, self)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 754, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.attachment(139810,).datas', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/api.py", line 748, in get
    value = self._data[field][record._ids[0]]
KeyError: 139810

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1038, in __get__
    value = env.cache.get(record, self)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 754, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.attachment(139810,).store_fname', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1147, in compute_value
    records._compute_field_value(self)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 4021, in _compute_field_value
    getattr(self, field.compute)()
  File "/odoo_env/src/openupgrade/odoo/addons/base/models/ir_attachment.py", line 199, in _compute_datas
    if attach.store_fname:
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1045, in __get__
    recs._fetch_field(self)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3006, in _fetch_field
    self._read(fnames)
  File "/odoo_env/src/openupgrade/odoo/addons/base/models/ir_attachment.py", line 486, in _read
    return super(IrAttachment, self)._read(fields)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3099, in _read
    self.env.cache.update(fetched, field, values)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 773, in update
    self._data[field].update(zip(records._ids, values))
MemoryError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/addons/website_sale/migrations/13.0.1.0/post-migration.py", line 32, in convert_image_attachments
    Model.browse(attachment.res_id).image_1920 = attachment.datas
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1062, in __get__
    self.compute_value(recs)
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 2001, in compute_value
    super().compute_value(records)
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1150, in compute_value
    env.add_to_compute(field, records)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 690, in add_to_compute
    self.all.tocompute[field].update(records._ids)
MemoryError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/api.py", line 748, in get
    value = self._data[field][record._ids[0]]
KeyError: 139810

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1038, in __get__
    value = env.cache.get(record, self)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 754, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.attachment(139810,).res_id', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/odoo_env/src/openupgrade/odoo/service/server.py", line 1194, in preload_registries
    registry = Registry.new(dbname, update_module=update_module)
  File "/odoo_env/src/openupgrade/odoo/modules/registry.py", line 87, in new
    odoo.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/odoo_env/src/openupgrade/odoo/modules/loading.py", line 489, in load_modules
    force, status, report, loaded_modules, update_module, models_to_check, upg_registry)
  File "/odoo_env/src/openupgrade/odoo/modules/loading.py", line 368, in load_marked_modules
    upg_registry=upg_registry,
  File "/odoo_env/src/openupgrade/odoo/modules/loading.py", line 256, in load_module_graph
    migrations.migrate_module(package, 'post')
  File "/odoo_env/src/openupgrade/odoo/modules/migration.py", line 191, in migrate_module
    migrate(self.cr, installed_version)
  File "/opt/venv/lib/python3.7/site-packages/openupgradelib/openupgrade.py", line 2285, in wrapped_function
    version,
  File "/odoo_env/src/openupgrade/addons/website_sale/migrations/13.0.1.0/post-migration.py", line 66, in migrate
    convert_image_attachments(env)
  File "/odoo_env/src/openupgrade/addons/website_sale/migrations/13.0.1.0/post-migration.py", line 38, in convert_image_attachments
    attachment.res_id,
  File "/odoo_env/src/openupgrade/odoo/fields.py", line 1045, in __get__
    recs._fetch_field(self)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3006, in _fetch_field
    self._read(fnames)
  File "/odoo_env/src/openupgrade/odoo/addons/base/models/ir_attachment.py", line 486, in _read
    return super(IrAttachment, self)._read(fields)
  File "/odoo_env/src/openupgrade/odoo/models.py", line 3099, in _read
    self.env.cache.update(fetched, field, values)
  File "/odoo_env/src/openupgrade/odoo/api.py", line 773, in update
    self._data[field].update(zip(records._ids, values))
MemoryError
2025-01-15 17:23:21,090 1 INFO odoo-upgrade odoo.service.server: Initiating shutdown 
2025-01-15 17:23:21,090 1 INFO odoo-upgrade odoo.service.server: Hit CTRL-C again or send a second signal to force the shutdown. 
2025-01-15 17:23:21,090 1 INFO odoo-upgrade odoo.sql_db: ConnectionPool(used=0/count=0/max=64): Closed 1 connections  

i tried using openupgrade.chunked() to iterate over the attachments. it doesn’t prevent the MemoryError errors, but it stops trying later.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions