this is fixed for release 1.1.7 most likely tomorrow.

if you can *please* confirm this resolves the issue on your end so that we can be 100% sure this is it, I was able to reproduce. thanks!



On 03/25/2017 10:21 PM, mike bayer wrote:
I've isolated the bug in
https://bitbucket.org/zzzeek/sqlalchemy/issues/3947/race-condition-in-joined-eager-load-perf
and a gerrit is running through right now.   The plan is to get this
merged and released by monday for 1.1.7.



On 03/25/2017 09:53 AM, Mike Bayer wrote:
There have been changes in this area and it is critical that you please
send me a complete stack trace and details on your models ASAP.   Please
send the stack trace at least immediately, if there is an issue here it
will affect a lot of people and I need to push a fix out ASAP.   Also,
is there any pickling of models in use?

On Mar 24, 2017 9:16 PM, "Martin Latrille" <martin.latri...@outlook.com
<mailto:martin.latri...@outlook.com>> wrote:

    Hey,

    I'm having a trouble with `joinedload`ing relationships in my
    models, since I updated SQLAlchemy from 1.1.2 to 1.1.6.
    Sometimes, (and when I say sometimes, i mean 1 out of 50 times or
    something like that), when spinning up a server of my python app
    which uses SQLAlchemy, I will face this error:

        AttributeError: 'NoneType' object has no attribute '_annotations'


    I did some digging in the code, and it turns out the
    `memoized_setups` for this relationship has empty values in the
columns.

    Lets say I have two models:


        class A(Model):
          id = Column(Integer, primary_key=True)
          b_id = Column(Integer, ForeignKey('b.id <http://b.id>'))
          b = relationship(B)



        class B(Model):
          id = Column(Integer, primary_key=True)
          foo = Column(String)


    When I face the error, and dig up in the code, I find:

    In |sqlalchemy/orm/strategies.py| in |create_row_processor||:|

        our_path = PropRegistry((<Mapper at 0x7f4fe2ae9048; A>,
        <RelationshipProperty at 0x7f4fe2ae1c48; b>))


    which calls _instance_processor in |sqlalchemy/orm/loading.py:
     (|with `context=context` and `path=our_path[mapper]`)

        quick_populators = path.get(
        context.attributes, "memoized_setups", _none_set)


    with leads to: quick_populators =

        {
        <ColumnProperty at 0x7f3fe2d01710; id>: Column('id', BIGINT(),
        table=<%(137911348719792 b)s>, primary_key=True,
        nullable=False), <ColumnProperty at 0x7f3fe2d01808; foo>: None, }

    |
    |
    |It's then when trying to get quick_populator[column_object] (which
    is None) that I get the error above.|
    |
    |
    |It looks like the context which is passed to `_instance_processor`
    had bad memoized data. I have absolutely no clue about what's
    happening, nor about a reliable way to reproduce the issue; as said,
    it happens (randomly?) once in a while when spinning up a server.
    |

    Has it ever happened to you? Do you have a solution for that? Is
    there more data you need to evaluate the bug?
    NB: everytime this happens (which is not often), I just have to
    restart the server and it works. Guess it is just bad data memoized
    at setup time.

    Thanks for reading,
    Martin
    |
    |
    |
    |






    --
    SQLAlchemy -
    The Python SQL Toolkit and Object Relational Mapper

    http://www.sqlalchemy.org/

    To post example code, please provide an MCVE: Minimal, Complete, and
    Verifiable Example. See http://stackoverflow.com/help/mcve
    <http://stackoverflow.com/help/mcve> for a full description.
    ---
    You received this message because you are subscribed to the Google
    Groups "sqlalchemy" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to sqlalchemy+unsubscr...@googlegroups.com
    <mailto:sqlalchemy+unsubscr...@googlegroups.com>.
    To post to this group, send email to sqlalchemy@googlegroups.com
    <mailto:sqlalchemy@googlegroups.com>.
    Visit this group at https://groups.google.com/group/sqlalchemy
    <https://groups.google.com/group/sqlalchemy>.
    For more options, visit https://groups.google.com/d/optout
    <https://groups.google.com/d/optout>.


--
SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to