)]}'
{"nova/cmd/manage.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"89966a1f7d3c534ad93ce3a4891b4e05c080f992","unresolved":false,"context_lines":[{"line_number":1759,"context_line":"        # return None if we can\u0027t communicate with Placement, and the"},{"line_number":1760,"context_line":"        # response can have an empty {\u0027allocations\u0027: {}} response if"},{"line_number":1761,"context_line":"        # there are no allocations for the instance so handle both"},{"line_number":1762,"context_line":"        if not allocations or not allocations.get(\u0027allocations\u0027):"},{"line_number":1763,"context_line":"            # This instance doesn\u0027t have allocations"},{"line_number":1764,"context_line":"            return self._heal_missing_alloc("},{"line_number":1765,"context_line":"                ctxt, instance, node_cache, dry_run, output, placement)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_c67562ce","line":1762,"range":{"start_line":1762,"start_character":8,"end_line":1762,"end_character":26},"updated":"2019-07-03 16:45:38.000000000","message":"Per L1756 above, doesn\u0027t this change the logic such that if we failed to get the allocations above we could overwrite them now? Although maybe that was always broken and I1b79cc2c556fb06b8ffb8b9d6cabf980fa08a3aa papered over it by removing the TODO to fail fast if we can\u0027t get the allocations above.","commit_id":"9adcf53210747d34248702874494537ef2a46781"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11ca653aa067dd49b009b570c559ba7ed4c2cdfe","unresolved":false,"context_lines":[{"line_number":1759,"context_line":"        # return None if we can\u0027t communicate with Placement, and the"},{"line_number":1760,"context_line":"        # response can have an empty {\u0027allocations\u0027: {}} response if"},{"line_number":1761,"context_line":"        # there are no allocations for the instance so handle both"},{"line_number":1762,"context_line":"        if not allocations or not allocations.get(\u0027allocations\u0027):"},{"line_number":1763,"context_line":"            # This instance doesn\u0027t have allocations"},{"line_number":1764,"context_line":"            return self._heal_missing_alloc("},{"line_number":1765,"context_line":"                ctxt, instance, node_cache, dry_run, output, placement)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_57835005","line":1762,"range":{"start_line":1762,"start_character":8,"end_line":1762,"end_character":26},"in_reply_to":"7faddb67_c67562ce","updated":"2019-07-04 13:21:07.000000000","message":"I think this is already broken before this change. If ConsumerAllocationRetrievalFailed was caught then the allocations is set to None (Base L1756) then at Base L1786 we call _heal_missing_alloc and that code creates a new allocation for the instance regardless if it had any.\n\nHowever I\u0027m not sure when we get other than HTTP 200 from placement. OK, we can get HTTP 500 if there is a software bug but nothing more. Could this be a misunderstanding about what placement returns when the consumer not exits? I think it should be safe to handle ConsumerAllocationRetrievalFailed the same way as ClientException.","commit_id":"9adcf53210747d34248702874494537ef2a46781"}]}
