3049760fe6
See bug, issue occurs with variable frequency when changing between simple and extended views in a user account (non-administrator at least): saving the user account leads to a clearing of the menu cache, this is followed by two search/read in parallel (one to get the full menu listing and one to get the list of applications for the home page), which leads to ir_ui_menu.search (thus ir_ui_menu._filter_visible_menus) being called concurrently, and this apparently somehow wrecks havoc on some browse_record's caches yielding to incoherent behaviors (menus which do have children in db not having children in the browse_record, and thus being pruned from the list of menus). Putting a big lock around 1. clear_cache (just in case) and 2. _filter_visible_menu (to make cache-filling essentially atomic) seems to solve the issue or at least make it disappear, ideally more time should be spent understanding what breaks in browse_record. A reentrant lock is needed as _filter_visible_menu may recurse when accessing e.g. a menu's child_id (which yield a search([parent_id=menu.id]) and thus a _filter_visible_menu) lp bug: https://launchpad.net/bugs/920332 fixed bzr revid: xmo@openerp.com-20120125115823-rpu03zdv14t11lp3 |
||
---|---|---|
addons | ||
bin | ||
debian | ||
doc | ||
history | ||
install | ||
openerp | ||
win32 | ||
.bzrignore | ||
LICENSE | ||
LICENSE.web | ||
MANIFEST.in | ||
Makefile | ||
README | ||
README.web | ||
babel.cfg | ||
gen_translations.sh | ||
gunicorn.conf.py | ||
logging.json | ||
npybabel.py | ||
openerp-server | ||
openerp-web | ||
openerp-web.cfg | ||
setup.cfg | ||
setup.nsi | ||
setup.py | ||
setup_rpm.sh |
README
pydot - Python interface to Graphviz's Dot language Ero Carrera (c) 2004-2007 ero@dkbza.org This code is distributed under the MIT license. Requirements: ------------- pyparsing: pydot requires the pyparsing module in order to be able to load DOT files. GraphViz: is needed in order to render the graphs into any of the plethora of output formats supported. Installation: ------------- Should suffice with doing: python setup.py install Needless to say, no installation is needed just to use the module. A mere: import pydot should do it, provided that the directory containing the modules is on Python module search path.