Hi, Last night, I got a talk with Nicolas about one issue we are going to face with the Active Record. Here is the explaination, the record instance (aka BrowseRecord) has a local_cache of some values read like xxx2xxx or function field. For xxx2xxx fields, we can not store in the global cache because there are references to the cursor, to the context etc. For function fields, we can not store it because the value may need to be recomputed.
The problem with AR willl be that as we pass record instance now everywhere (instead of id), the local cache of will almost never be cleared and so the developper will need to do it manually. And this is not really a clean solution because it will be almost impossible to know when to clear the cache or not, so we will finally clear it at the begin of each methods and we will lose the advantage of AR. So the idea will be to have an automatic clear of the cache when entering in a new method because inside a method the developper can now when to reset or not the cache. To do that, we thought about using `inspect` to retreive the stack and storing it in the local cache with the field value. Like that when we retrieve value from the cache, if the stack is not the same than we clear the cache. The main issue with this design is that inspect.currentframe [1] may not exist on other Python implementation. So the fallback will be to clear the cache anyway. So what do you think? Is there anybody with a better idea? [1] http://docs.python.org/library/inspect.html?highlight=inspect#inspect.currentframe -- Cédric Krier B2CK SPRL Rue de Rotterdam, 4 4000 Liège Belgium Tel: +32 472 54 46 59 Email/Jabber: [email protected] Website: http://www.b2ck.com/
pgptikO1cGsig.pgp
Description: PGP signature
