<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In kilo (yeah I know it’s an old release, but still :)), I was getting a nova errors for DetachedInstanceError on instance.get_by_uuid().<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 ERROR nova.api.metadata.handler [req-5aa7b422-d6c0-424e-b40f-cea79d3a3963 - - - - -] Failed to get metadata for instance id: 859aba9c-7620-4cbf-a5aa-f6f29c320980<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler Traceback (most recent call last):<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/nova/api/metadata/handler.py", line 220, in _handle_instance_id_request<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     remote_address)<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/nova/api/metadata/handler.py", line 106, in get_metadata_by_instance_id<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     instance_id, address)<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/nova/api/metadata/base.py", line 531, in get_metadata_by_instance_id<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     instance = objects.Instance.get_by_uuid(ctxt, instance_id)<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/nova/objects/base.py", line 163, in wrapper<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     result = fn(cls, context, *args, **kwargs)<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/nova/objects/instance.py", line 654, in get_by_uuid<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     expected_attrs)<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/nova/objects/instance.py", line 608, in _from_db_object<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     instance._maybe_migrate_flavor(db_inst, expected_attrs)<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/nova/objects/instance.py", line 535, in _maybe_migrate_flavor<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     if instance_extra.get('flavor') is not None:<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/oslo_db/sqlalchemy/models.py", line 60, in get<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     return getattr(self, key, default)<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/attributes.py", line 239, in __get__<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     return self.impl.get(instance_state(instance), dict_)<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/attributes.py", line 591, in get<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     value = self.callable_(state, passive)<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler   File "/usr/lib64/python2.7/site-packages/sqlalchemy/orm/strategies.py", line 279, in _load_for_state<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler     (orm_util.state_str(state), self.key)<o:p></o:p></p>
<p class="MsoNormal">2016-10-05 18:30:53.791 103618 TRACE nova.api.metadata.handler DetachedInstanceError: Parent instance <InstanceExtra at 0x6f43390> is not bound to a Session; deferred load operation of attribute 'flavor' cannot proceed<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Now I've fixed it by adding a "joinedload" in the database query (in instance_get_by_uuid()) on 'extra'.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">So this fixes the issue, what I'd like to understand is why in most cases (like 99.9% of the time), the code was still working without the "joinedload" ?  What could explain that the children object was loaded but at some point dropped
 from the session ?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I tried to reproduce the issue in mitaka (sorry didn't had a newton setup), but it appears I can’t reproduce it there ...  I was hoping to reproduce it and make sure there is no latent bug in nova.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Has anybody seen this issue before or something similar ?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks for the help,<o:p></o:p></p>
<p class="MsoNormal">/ludovic<o:p></o:p></p>
</div>
</body>
</html>