Consider it done.
On Thursday, February 20, 2020 at 8:02:45 PM UTC-8, Massimo Di Pierro wrote: > > No obvious solution yet but will prioritize this. Would you mind opening > an issue on github about this? > > On Wednesday, 19 February 2020 12:33:32 UTC-8, Carlos Hanson wrote: >> >> It looks like table inheritance is affected by the same issue: >> >> >> monster = db.Table(db, 'monster', Field('color'), Field('size')) >> db.define_table('thing', Field('name'), monster) >> >> >> The following traceback is the same as the error using >> _enable_record_versioning() starting at *table = self.lazy_define_table*: >> >> Traceback (most recent call last): >> File "<stdin>", line 1, in <module> >> File "/home/chanson/py/py4web/apps/thing/__init__.py", line 7, in >> <module> >> from . models import db >> File "/home/chanson/py/py4web/apps/thing/models.py", line 9, in <module> >> db.define_table('thing', Field('name'), monster) >> * File >> "/home/chanson/.local/share/virtualenvs/py4web-recc_4-8/lib/python3.6/site-packages/pydal/base.py", >> >> line 656, in define_table* >> * table = self.lazy_define_table(tablename, *fields, **kwargs)* >> * File >> "/home/chanson/.local/share/virtualenvs/py4web-recc_4-8/lib/python3.6/site-packages/pydal/base.py", >> >> line 676, in lazy_define_table* >> * if field.requires is DEFAULT:* >> * File >> "/home/chanson/.local/share/virtualenvs/py4web-recc_4-8/lib/python3.6/site-packages/threadsafevariable/__init__.py", >> >> line 16, in __get__* >> * return getattr(self.storage, "%s.%s" % (id(instance), id(self)))* >> * File "src/gevent/local.py", line 408, in >> gevent._local.local.__getattribute__* >> AttributeError: 'gevent._local.local' object has no attribute >> '139976984026752.139976984930736' >> >> >> >> On Tuesday, February 18, 2020 at 8:07:25 PM UTC-8, Carlos Hanson wrote: >>> >>> Greetings, >>> >>> I just started using py4web, and I'm very excited to do so. >>> >>> Has there been any more thought on this issue? I was partially into a >>> new web2py app in which I use _enable_record_versioning(), and I am >>> migrating it to py4web. >>> >>> Thanks. >>> >>> >>> On Saturday, August 17, 2019 at 10:34:21 PM UTC-7, Massimo Di Pierro >>> wrote: >>>> >>>> Sorry for the late response. I just run into this myself. Do not have a >>>> good solution at this time, unless we make pydal aware of >>>> ThreadSafeVariable(s). Maybe we have to. >>>> >>>> On Wednesday, 31 July 2019 05:05:50 UTC-7, Manuel Vio wrote: >>>>> >>>>> Ok, I narrowed the problem a bit: >>>>> >>>>> In py4web/core.py, around line 207, there is this adjustment in order >>>>> to make some variables threadsafe: >>>>> >>>>> # make sure some variables in pydal are thread safe >>>>> for _ in ['readable', 'writable', 'default', 'update', 'requires']: >>>>> setattr(pydal.DAL.Field, _, threadsafevariable.ThreadSafeVariable()) >>>>> >>>>> Turns out that PyDAL's _enable_record_versioning(), in order to create >>>>> the archive table, clones all original fields with their properties. Or, >>>>> at >>>>> least, it tries to: it seems that copy() fails to correctly transfer >>>>> threadsafevariable informations when dealing with those variables. >>>>> I guess that when cloned field's requires attribute is accessed those >>>>> information are not valid anymore and py4web throws the aforementioned >>>>> exception. >>>>> I was able to circumvent this error adding an explicit copy of the >>>>> attribute in pydal, but still I'm not sure if this could eventually lead >>>>> to >>>>> thread problems: >>>>> >>>>> for field in self: >>>>> nfk = same_db or not field.type.startswith('reference') >>>>> clone = field.clone(unique=False, type=field.type if nfk else 'bigint' >>>>> ) >>>>> clone.requires = copy.copy(field.requires) >>>>> clones.append( >>>>> clone >>>>> ) >>>>> >>>>> >>>>> Any thougths? >>>>> >>>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/af3187cb-b898-4e03-8532-c06f1d9b7148%40googlegroups.com.