Re: [sqlalchemy] Bad context when trying to joinedload model's relationship

2017-03-26 Thread mike bayer

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" > 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 '))
  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((,
))


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 =

{
: Column('id', BIGINT(),
table=<%(137911348719792 b)s>, primary_key=True,
nullable=False), : 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
 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
.



--
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.


Re: [sqlalchemy] Bad context when trying to joinedload model's relationship

2017-03-25 Thread mike bayer
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" > 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 '))
  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((,
))


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 =

{
: Column('id', BIGINT(),
table=<%(137911348719792 b)s>, primary_key=True,
nullable=False), : 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
 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
.



--
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.


Re: [sqlalchemy] Bad context when trying to joinedload model's relationship

2017-03-25 Thread Mike Bayer
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" 
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'))
>>   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((,
>> ))
>
>
> 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 =
>
> {
>> : Column('id', BIGINT(),
>> table=<%(137911348719792 b)s>, primary_key=True, nullable=False), 
>> > 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 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.
>

-- 
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.


[sqlalchemy] Bad context when trying to joinedload model's relationship

2017-03-24 Thread Martin Latrille
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'))
>   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((, 
> ))


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 =

{
> : Column('id', BIGINT(), 
> table=<%(137911348719792 b)s>, primary_key=True, nullable=False), 
>  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 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.