New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[16.0][FIX] fs_attachment: Fix attachment store after upgrade #304
base: 16.0
Are you sure you want to change the base?
[16.0][FIX] fs_attachment: Fix attachment store after upgrade #304
Conversation
3ff4888
to
e49f7e7
Compare
Prerequisites: * The fs_attachment addon is installed, and specific filesystem storage is configured. * All the attachments are already stored in the appropriate filesystem storage. (We assume that if you've installed the addon on an existing database, you'vealready migrated the existing attachments appropriately. Context: * You run an upgrade command on your Odoo server. Problem: Some attachments could be created during the upgrade process before the load of the fs_attachment module or the configuration of the filesystem storage backends. This is especially true for the attachments created by addons to store the app icons or even attachments from XML data files. As a result, you end up with attachments.that could be found by some Odoo instances if, for example, you have multiple Odoo instances running on different servers since these attachments are stored in the odoo filestore of the server that created them. Solution: A solution to this problem is to hook the end of the upgrade process through the implementation of the *_register_hook* method on our *ir.attachment* model. Since This method is called after the completion of the upgrade process and the full initialization of the odoo registry, we can safely expect that all the information We need to know where to store the attachments that are available. From there, we can simply search for all the attachments that are not linked to any specific storage and store them in the appropriate storage.
e49f7e7
to
777c459
Compare
# done during the initialization. We need to move the attachments that | ||
# could have been created or updated in other addons before this addon | ||
# was loaded | ||
update_module = load_modules_frame.f_locals.get("update_module") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it not too much magic? I don't know, I think I prefer to do these kind of operations that can potentially lose data explicitly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couldn't this be simplified by simply running it every time?
If there's nothing to do the cost shouldn't be too expensive.
The manual solution has the issue to be an additional hurdle for deployment that requires to be well documented, or the user might face some troubles that might be bad for adoption.
In addition I think there is an issue with force_storage #310 |
Fix attachments stored in Odoo after an addon upgrade.
Prerequisites:
configured.
(We assume that if you've installed the addon on an existing database,
you'vealready migrated the existing attachments appropriately.
Context:
Problem:
Some attachments could be created during the upgrade process before the load of
the fs_attachment module or the configuration of the filesystem storage backends.
This is especially true for the attachments created by addons to store the app
icons or even attachments from XML data files. As a result, you end up with
attachments that could not be found by some Odoo instances if, for example, you have
multiple Odoo instances running on different servers since these attachments are stored
in the odoo filestore of the server that created them.
Solution:
A solution to this problem is to hook the end of the upgrade process through the
implementation of the _register_hook method on our ir.attachment model. Since
this method is called after the completion of the upgrade process and the full
initialization of the odoo registry, we can safely expect that all the information
we need to know where to store the attachments are available.
From there, we can simply search for all the attachments that are not linked to
any specific storage and store them in the appropriate storage.