)]}'
{"nova/objects/instance.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"66f6de486e699baaff589ade9a41decb6c7c7b54","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"            LOG.error("},{"line_number":1389,"context_line":"                (\u0027Instance %(uuid)s has been purged, but an instance_extra \u0027"},{"line_number":1390,"context_line":"                 \u0027record remains for it. Unable to migrate.\u0027),"},{"line_number":1391,"context_line":"                {\u0027uuid\u0027: db_extra.instance_uuid})"},{"line_number":1392,"context_line":"            continue"},{"line_number":1393,"context_line":"        key_name \u003d db_extra.instance.key_name"},{"line_number":1394,"context_line":"        keypairs \u003d objects.KeyPairList(objects\u003d[])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ffa3b31_6d66fac3","line":1391,"updated":"2017-04-20 16:20:39.000000000","message":"it would be helpful to explain how to get out of this, like what the delete command should be.","commit_id":"566671043ad81c8fa581569c1eecd48d31b65b6a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1e608a821d2dd255be225f470e1d4818d3293743","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"            LOG.error("},{"line_number":1389,"context_line":"                (\u0027Instance %(uuid)s has been purged, but an instance_extra \u0027"},{"line_number":1390,"context_line":"                 \u0027record remains for it. Unable to migrate.\u0027),"},{"line_number":1391,"context_line":"                {\u0027uuid\u0027: db_extra.instance_uuid})"},{"line_number":1392,"context_line":"            continue"},{"line_number":1393,"context_line":"        key_name \u003d db_extra.instance.key_name"},{"line_number":1394,"context_line":"        keypairs \u003d objects.KeyPairList(objects\u003d[])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ffa3b31_ad708209","line":1391,"in_reply_to":"7ffa3b31_6d66fac3","updated":"2017-04-20 16:29:11.000000000","message":"The \"delete command\" is SQL. You want me to emit SQL here? :)","commit_id":"566671043ad81c8fa581569c1eecd48d31b65b6a"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"16554af4a7dda41dbc37570ca7551c871397fb67","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"            LOG.error("},{"line_number":1389,"context_line":"                (\u0027Instance %(uuid)s has been purged, but an instance_extra \u0027"},{"line_number":1390,"context_line":"                 \u0027record remains for it. Unable to migrate.\u0027),"},{"line_number":1391,"context_line":"                {\u0027uuid\u0027: db_extra.instance_uuid})"},{"line_number":1392,"context_line":"            continue"},{"line_number":1393,"context_line":"        key_name \u003d db_extra.instance.key_name"},{"line_number":1394,"context_line":"        keypairs \u003d objects.KeyPairList(objects\u003d[])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_370f7ae2","line":1391,"in_reply_to":"7ffa3b31_ad708209","updated":"2017-04-25 19:18:20.000000000","message":"Honestly, yes, or a link to \"here is how to resolve this\" which has that command. We actually know how to fix this issue for the user.\n\n  DELETE from instance_extra where uuid not in (select uuid from instance)\n\nThen life is good again for them. It\u0027s also probably fine if, knowing lots of people hit this kind of issue, just making that scrub something that can be done. Basically an fsck for the database.","commit_id":"566671043ad81c8fa581569c1eecd48d31b65b6a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c5ab7bfb405c49ddeb90ab818a4db315294a32e7","unresolved":false,"context_lines":[{"line_number":1386,"context_line":"    for db_extra in db_extras:"},{"line_number":1387,"context_line":"        if db_extra.instance is None:"},{"line_number":1388,"context_line":"            LOG.error("},{"line_number":1389,"context_line":"                (\u0027Instance %(uuid)s has been purged, but an instance_extra \u0027"},{"line_number":1390,"context_line":"                 \u0027record remains for it. Unable to migrate.\u0027),"},{"line_number":1391,"context_line":"                {\u0027uuid\u0027: db_extra.instance_uuid})"},{"line_number":1392,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_079067ec","line":1389,"range":{"start_line":1389,"start_character":60,"end_line":1389,"end_character":74},"updated":"2017-04-21 00:36:18.000000000","message":"We could put the instance_extra id in here.\n\nOr alternatively, tell them to delete all instance_extra records that don\u0027t have a related instance record, because hitting this row by row would get annoying. I guess if you put two seconds of thought into the cleanup pattern though you could just figure it out and clean them all up in a single delete query.\n\nBut this doesn\u0027t stop the migration, so I\u0027m OK with it as-is.","commit_id":"2cee5bb4d14a5ad6a037857bd3624833317cd931"}]}
