[16.0][FIX] fs_attachment: Fix attachment store after upgrade#304
Open
[16.0][FIX] fs_attachment: Fix attachment store after upgrade#304
Conversation
3ff4888 to
e49f7e7
Compare
Contributor
Author
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
sbidoul
reviewed
Nov 25, 2023
| # 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") |
Member
There was a problem hiding this comment.
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.
Contributor
There was a problem hiding this comment.
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.