[FIX] profiler: be more pesimistic
The profiler was too optimistic. If the local variable self was not a cursor, it assumed it was automatically an Odoo model. Instead, only do the custom tracer methods when self is an instance of BaseModel. Full scenario to reproduce explained at odoo/odoo#39237 In case a method like the default_get of utm.mixing was profiled, the tracer crashed when evaluating `__bool__(request)`. The tracer considered self as an Odoo model while it was a werkzeug instance with its custom __getattr__ that crashed while trying to retrieve the content of `_name`. Fixes odoo/odoo#39237 closes odoo/odoo#39524 X-original-commit: c8fa8fb067dcfb15330acde35d66ac41a255f669 Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
This commit is contained in:
@@ -35,7 +35,7 @@ class _LogTracer(object):
|
||||
|
||||
in_self = frame.f_locals['self']
|
||||
|
||||
if isinstance(in_self, (odoo.sql_db.Cursor, odoo.sql_db.TestCursor)):
|
||||
if not isinstance(in_self, odoo.models.BaseModel):
|
||||
return self.tracer
|
||||
|
||||
model = getattr(in_self, '_name', None)
|
||||
|
||||
Reference in New Issue
Block a user