UPDATED: How do I prevent website common asset files from constantly not being found? IOError: [Errno 2] No such file or directory
Fresh Install of Odoo 9 using Official Docker Hub image and a standard Postgres Docker Image. We have this sitting behind an Nginx docker container, but otherwise as per the standard odoo docker image guidelines.
We keep having rendered files disappear from the filestore that are crucial to the website functioning (odoo common assets scripts). The logs show this:
2015-10-30 15:28:28,266 1 INFO db-test werkzeug: 172.17.0.25 - - [30/Oct/2015 15:28:28] "GET /web/content/407-17599c5/website.assets_frontend.js HTTP/1.0" 200 -
2015-10-30 15:28:28,281 1 INFO db-test openerp.addons.base.ir.ir_attachment: _read_file reading /var/lib/odoo/filestore/db-test/e6/e69e06808b908fc0d85ebfea58fbc7df3788e72e
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_attachment.py", line 151, in _file_read
r = open(full_path,'rb').read().encode('base64')
IOError: [Errno 2] No such file or directory: u'/var/lib/odoo/filestore/db-test/e6/e69e06808b908fc0d85ebfea58fbc7df3788e72e'
This happens with various filenames (generated hash values), but all of them are for the same actual file content which is related to script assets for the website. The content changes slightly as Apps are installed, which forces a change of the filename.
This happens frequently, e.g. within an hour of installation.
I've found a number of log entries for ir.attachments records being deleted, I assume as part of a housekeeping task that occurs at the end of a user action.
2015-10-31 13:34:07,916 1 INFO db-test openerp.models.unlink: User #1 deleted ir.attachment records with IDs: 
2015-10-31 13:34:09,034 1 INFO db-test openerp.models.unlink: User #1 deleted ir.attachment records with IDs: 
This is not initiated by a user (i.e. me) specifically, but happens regularly even when no missing file issue occurs. However it does happen near the time of the missing file (coincidental or not), so thought it worth mentioning.
The result of this is that the website and entire app becomes unusable - on the front end, the page will show from a specific url, but no menus will activate, on the backend, obviously nothing works, as the menu and content are brought back via XHR. This obviously renders Odoo completely unusable unless this file is restored.
We tried this with a fresh install (no configuration), just apps installed.
We've eliminated a DB issue - this is a fresh install from the official postgres docker image, set-up as per odoo instructions, and has worked fine for v8.
We've eliminated any backup, restore and migrate jobs we had set-up, as these have not been used on this fresh install
We doubt it is to do with the EBS backed AWS EC2 Instance or CentOS or Docker on LVM, simply because it is the same file (although with different file names) each time, even when re-installed on a completely different server and disk and docker storage configuration.
Checked the automated jobs, but none seem to affect this type of thing, and running some of them manually didn't effect the file in this way
It only happens when the website builder is installed.
It only happens when the website is publicly accessible - when firewalled off just to me, this DOES NOT happen.
This strongly suggests that a request of some sort is triggering something in Odoo that triggers the deletion of the file, or the update/refresh of the file, which doesn't work / complete properly.
HELP NEEDED: Not being intimately familiar with Odoo architecture or codebase, or being a python developer, I would appreciate pointers to how the resource request pipeline in odoo actually works (so I can trace the code path) and what related functionality could possibly do this.
Any Ideas would be greatly appreciated - we are almost at the point of giving up on Odoo, as it is just not stable enough to run a business on given this issue.
In the database run the command delete , the number in like show in the log error, delete all cod error
"public"."ir_attachment"."store_fname" LIKE '%9739bf1f391e10051ed840fef5b341f9351d0536%'
this record load with data demostration, not load if is possible.
odoo needs create the "odoo" system user, the calls for file temp redirects to: /opt/odoo in your log
the files existing in /opt/odoo not in /var/lib/ , run the process with user "odoo"
I don't know if the OP was having the same issue, but I'm testing a Docker install of Odoo and had the same problem after I had to remove my container: all rendered files are cached inside the container instead of in the db (that being the main purpose of caching them :-) ) so I'd say this is to be expected. Truncating the ir_attachment table as @Aldo said fixed the problem for me (the cached assets are recreated)
I guess that to avoid this a *different* host file system directory should be mapped on var/lib/odoo/filestore/odoo/ for each different Odoo instance that we want to run on the server.
from https://hub.docker.com/_/odoo/ :
By default, Odoo 8.0 uses a filestore (located at /var/lib/odoo/filestore/) for attachments. You should restore this filestore in your new Odoo instance by running
$ docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t odoo
You can also simply prevent Odoo from using the filestore by setting the system parameter
db-storage in Settings->Parameters->System Parameters (requires technical features).
Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!
About This Community
|Asked: 10/30/15, 11:47 AM|
|Seen: 3608 times|
|Last updated: 3/15/16, 12:45 AM|