)]}'
{"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3eb50f4de474b33a316f4851379263da3f846202","unresolved":false,"context_lines":[{"line_number":2911,"context_line":"        # NOTE(tr3buchet): just in case someone blows away an instance\u0027s"},{"line_number":2912,"context_line":"        #                  cache entry, re-create it."},{"line_number":2913,"context_line":"        info_cache \u003d models.InstanceInfoCache()"},{"line_number":2914,"context_line":"        values[\u0027instance_uuid\u0027] \u003d instance_uuid"},{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"    try:"},{"line_number":2917,"context_line":"        with main_context_manager.writer.savepoint.using(context):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_900dd839","line":2914,"updated":"2016-03-09 02:26:42.000000000","message":"Should assert that this is set in this case also...","commit_id":"ccd7c779430a26962207b678f42ee69f70033ced"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"bec11ec5775736444181b1c8059a2a6d83bc1262","unresolved":false,"context_lines":[{"line_number":2916,"context_line":"    try:"},{"line_number":2917,"context_line":"        with main_context_manager.writer.savepoint.using(context):"},{"line_number":2918,"context_line":"            info_cache.update(values)"},{"line_number":2919,"context_line":"            info_cache.save(context.session)"},{"line_number":2920,"context_line":""},{"line_number":2921,"context_line":"    except db_exc.DBDuplicateEntry:"},{"line_number":2922,"context_line":"        # NOTE(sirp): Possible race if two greenthreads attempt to"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_cc56925b","line":2919,"updated":"2016-03-09 11:59:43.000000000","message":"So it\u0027s not necessary to hit two times database. You should to add condition.\n\nIn line 2904 we have retrieved info_cache from database, you could to have boolean variable like \u0027needs_create\u0027 if info_cache is None.","commit_id":"318af511d9abd486cfd30c939276a76b43ca8450"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"fdc444332f09a01570f003fa0caccef08652a976","unresolved":false,"context_lines":[{"line_number":2916,"context_line":"    try:"},{"line_number":2917,"context_line":"        with main_context_manager.writer.savepoint.using(context):"},{"line_number":2918,"context_line":"            info_cache.update(values)"},{"line_number":2919,"context_line":"            info_cache.save(context.session)"},{"line_number":2920,"context_line":""},{"line_number":2921,"context_line":"    except db_exc.DBDuplicateEntry:"},{"line_number":2922,"context_line":"        # NOTE(sirp): Possible race if two greenthreads attempt to"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_4a89c274","line":2919,"in_reply_to":"5aef4532_cc56925b","updated":"2016-03-09 12:18:16.000000000","message":"Done","commit_id":"318af511d9abd486cfd30c939276a76b43ca8450"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ef1f14d8bed48c75169a8da31cbd793b0a40c26f","unresolved":false,"context_lines":[{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"    try:"},{"line_number":2917,"context_line":"        with main_context_manager.writer.savepoint.using(context):"},{"line_number":2918,"context_line":"            info_cache.update(values)"},{"line_number":2919,"context_line":"    except db_exc.DBDuplicateEntry:"},{"line_number":2920,"context_line":"        # NOTE(sirp): Possible race if two greenthreads attempt to"},{"line_number":2921,"context_line":"        # recreate the instance cache entry at the same time. First one"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_208f3776","side":"PARENT","line":2918,"updated":"2016-03-09 12:51:01.000000000","message":"I may don\u0027t see reason but why do we call update if info_cache is not already stored in database ?","commit_id":"4c18867424f09332cf5f7f5678e1f3a984b03618"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"24d7c2791a3e9ba411221cc054e2d00b3fcc65f4","unresolved":false,"context_lines":[{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"    try:"},{"line_number":2917,"context_line":"        with main_context_manager.writer.savepoint.using(context):"},{"line_number":2918,"context_line":"            info_cache.update(values)"},{"line_number":2919,"context_line":"    except db_exc.DBDuplicateEntry:"},{"line_number":2920,"context_line":"        # NOTE(sirp): Possible race if two greenthreads attempt to"},{"line_number":2921,"context_line":"        # recreate the instance cache entry at the same time. First one"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_4051a335","side":"PARENT","line":2918,"in_reply_to":"5aef4532_208f3776","updated":"2016-03-09 13:00:38.000000000","message":"because in \u0027values\u0027 can be stored e.g. network_info, so we should update the model not only with uuid but also some other fields","commit_id":"4c18867424f09332cf5f7f5678e1f3a984b03618"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e67ae46aff65b1fad2857d5d877fe1bcbd103d03","unresolved":false,"context_lines":[{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"    try:"},{"line_number":2917,"context_line":"        with main_context_manager.writer.savepoint.using(context):"},{"line_number":2918,"context_line":"            info_cache.update(values)"},{"line_number":2919,"context_line":"    except db_exc.DBDuplicateEntry:"},{"line_number":2920,"context_line":"        # NOTE(sirp): Possible race if two greenthreads attempt to"},{"line_number":2921,"context_line":"        # recreate the instance cache entry at the same time. First one"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_deaf5328","side":"PARENT","line":2918,"in_reply_to":"5aef4532_4051a335","updated":"2016-03-09 13:47:45.000000000","message":"What about to initialize well \u0027info_cache\u0027 when it\u0027s not yet in database, something like:\n\n  (line2914) info_cache \u003d InstanceInfoCache(**values)\n\nSo it wouldn\u0027t be necessary to use \u0027update\u0027 anymore, right ?","commit_id":"4c18867424f09332cf5f7f5678e1f3a984b03618"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"17e9831d4b3d92ca6f0703d08e1a5441757a2d4e","unresolved":false,"context_lines":[{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"    try:"},{"line_number":2917,"context_line":"        with main_context_manager.writer.savepoint.using(context):"},{"line_number":2918,"context_line":"            info_cache.update(values)"},{"line_number":2919,"context_line":"    except db_exc.DBDuplicateEntry:"},{"line_number":2920,"context_line":"        # NOTE(sirp): Possible race if two greenthreads attempt to"},{"line_number":2921,"context_line":"        # recreate the instance cache entry at the same time. First one"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_4b5d2d46","side":"PARENT","line":2918,"in_reply_to":"5aef4532_b47a5a86","updated":"2016-03-09 17:50:01.000000000","message":"yes, sorry, understand, I also was too direct in my answers) this should work and look better, thanks!","commit_id":"4c18867424f09332cf5f7f5678e1f3a984b03618"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"c887225bb3bec4fc0397ef225f9c0a2b0f5748f7","unresolved":false,"context_lines":[{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"    try:"},{"line_number":2917,"context_line":"        with main_context_manager.writer.savepoint.using(context):"},{"line_number":2918,"context_line":"            info_cache.update(values)"},{"line_number":2919,"context_line":"    except db_exc.DBDuplicateEntry:"},{"line_number":2920,"context_line":"        # NOTE(sirp): Possible race if two greenthreads attempt to"},{"line_number":2921,"context_line":"        # recreate the instance cache entry at the same time. First one"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_f324fdc5","side":"PARENT","line":2918,"in_reply_to":"5aef4532_deaf5328","updated":"2016-03-09 16:13:28.000000000","message":"we can initialize as you write but the code will work wrong if the we should really do the \u0027update\u0027 operation (I mean if info_cache is already in db and we should update e.g. network_info field)","commit_id":"4c18867424f09332cf5f7f5678e1f3a984b03618"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9822cdce02b13c40e4c4774bd57a66c8f374af80","unresolved":false,"context_lines":[{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"    try:"},{"line_number":2917,"context_line":"        with main_context_manager.writer.savepoint.using(context):"},{"line_number":2918,"context_line":"            info_cache.update(values)"},{"line_number":2919,"context_line":"    except db_exc.DBDuplicateEntry:"},{"line_number":2920,"context_line":"        # NOTE(sirp): Possible race if two greenthreads attempt to"},{"line_number":2921,"context_line":"        # recreate the instance cache entry at the same time. First one"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_b47a5a86","side":"PARENT","line":2918,"in_reply_to":"5aef4532_f324fdc5","updated":"2016-03-09 16:47:09.000000000","message":"I was not clear enough, sorry, we still kept the \u0027update\u0027 but we do it only if we don\u0027t do the insert:\n\nWhen info_cache is None:\n\n  info_cache \u003d InstanceInfoCache(values)\n\nThen:\n\n  if needs_create:\n    info_cache.insert(ctx)\n  else:\n    info_cache.update(values)\n\nSo we continue to hit only one time database and we guarantee to store it if something change as Andrew explained to me.","commit_id":"4c18867424f09332cf5f7f5678e1f3a984b03618"}],"nova/tests/unit/db/test_db_api.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"2dad98a85ebb30452407386cac00a2ca493fb05a","unresolved":false,"context_lines":[{"line_number":9640,"context_line":""},{"line_number":9641,"context_line":"    def test_instance_info_cache_create_using_update(self):"},{"line_number":9642,"context_line":"        network_info \u003d \u0027net\u0027"},{"line_number":9643,"context_line":"        instance_uuid \u003d \u0027uuid\u0027"},{"line_number":9644,"context_line":"        db.instance_info_cache_update(self.context, instance_uuid,"},{"line_number":9645,"context_line":"                                      {\u0027network_info\u0027: network_info})"},{"line_number":9646,"context_line":"        info_cache \u003d db.instance_info_cache_get(self.context, instance_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5aef4532_e00581c2","line":9643,"updated":"2016-03-08 17:00:48.000000000","message":"In case we are able to put better restrictions in place later on what a valid uuid is you should use uuidutils.generate_uuid() here.","commit_id":"3571fa6739e4617025576ae57f9763ab63a70f72"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"dc0dcfc909cffc07bd56624a702124ed6952aedf","unresolved":false,"context_lines":[{"line_number":9640,"context_line":""},{"line_number":9641,"context_line":"    def test_instance_info_cache_create_using_update(self):"},{"line_number":9642,"context_line":"        network_info \u003d \u0027net\u0027"},{"line_number":9643,"context_line":"        instance_uuid \u003d \u0027uuid\u0027"},{"line_number":9644,"context_line":"        db.instance_info_cache_update(self.context, instance_uuid,"},{"line_number":9645,"context_line":"                                      {\u0027network_info\u0027: network_info})"},{"line_number":9646,"context_line":"        info_cache \u003d db.instance_info_cache_get(self.context, instance_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5aef4532_cd48758a","line":9643,"in_reply_to":"5aef4532_e00581c2","updated":"2016-03-08 19:43:25.000000000","message":"ok, done","commit_id":"3571fa6739e4617025576ae57f9763ab63a70f72"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1bbb393ca358b4c6122c601250fec5b3db72b874","unresolved":false,"context_lines":[{"line_number":9644,"context_line":"        db.instance_info_cache_update(self.context, instance_uuid,"},{"line_number":9645,"context_line":"                                      {\u0027network_info\u0027: network_info})"},{"line_number":9646,"context_line":"        info_cache \u003d db.instance_info_cache_get(self.context, instance_uuid)"},{"line_number":9647,"context_line":"        self.assertEqual(network_info, info_cache.network_info)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_ad135b65","line":9647,"updated":"2016-03-09 02:25:38.000000000","message":"You could also assert that the instance_uuid is set in the info_cache record.","commit_id":"ccd7c779430a26962207b678f42ee69f70033ced"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"e7d3863c73755731c597dc7fb5715162b2b4fd21","unresolved":false,"context_lines":[{"line_number":9644,"context_line":"        db.instance_info_cache_update(self.context, instance_uuid,"},{"line_number":9645,"context_line":"                                      {\u0027network_info\u0027: network_info})"},{"line_number":9646,"context_line":"        info_cache \u003d db.instance_info_cache_get(self.context, instance_uuid)"},{"line_number":9647,"context_line":"        self.assertEqual(network_info, info_cache.network_info)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_13f38dd7","line":9647,"in_reply_to":"5aef4532_ad135b65","updated":"2016-03-09 06:53:42.000000000","message":"yes, done","commit_id":"ccd7c779430a26962207b678f42ee69f70033ced"}]}
