)]}'
{"octavia/controller/housekeeping/house_keeping.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"94958ab5d15881190a89bf429e84ad64d5ac74d7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            LOG.info(\"Initiating creation of %d spare amphora.\", diff_count)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"            # Call Amphora Create Flow diff_count times"},{"line_number":53,"context_line":"            with futures.ThreadPoolExecutor("},{"line_number":54,"context_line":"                    max_workers\u003dCONF.house_keeping.spare_amphora_pool_size"},{"line_number":55,"context_line":"            ) as executor:"},{"line_number":56,"context_line":"                for i in range(1, diff_count + 1):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_f1063752","line":53,"updated":"2017-08-30 00:26:28.000000000","message":"So just fyi, the behavior changes when you do this.\n\nIf self.cw.create_amphora() raised an exception before (which would have stopped further operations from happening) the behavior now here using an executor won\u0027t (as it exist in this review) raise the same exception(s).\n\nI assume that is fine, but just wanted to check (because it is a logic difference that isn\u0027t super-apparent).","commit_id":"87da12e48d632622d85fafb3304b67da1a825ee6"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"56531627a3030a3c1132b87a6b9f2acbc3c61ea2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            LOG.info(\"Initiating creation of %d spare amphora.\", diff_count)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"            # Call Amphora Create Flow diff_count times"},{"line_number":53,"context_line":"            with futures.ThreadPoolExecutor("},{"line_number":54,"context_line":"                    max_workers\u003dCONF.house_keeping.spare_amphora_pool_size"},{"line_number":55,"context_line":"            ) as executor:"},{"line_number":56,"context_line":"                for i in range(1, diff_count + 1):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_c67734d4","line":53,"in_reply_to":"7f287b81_f1063752","updated":"2017-09-07 08:45:28.000000000","message":"Yeah, that was explicitly the reason for this fix (see the bug attached). Basically, an exception here (in my case, periodic keystone timeouts) would kill the entire daemon, so no more spares pool updates could ever happen until the daemon was restarted manually. T_T\nThis should make an exception not end the whole process, and let it keep doing its thing.","commit_id":"87da12e48d632622d85fafb3304b67da1a825ee6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"ac341e0cd88280889749179d3fa4d62ecd8bef3b","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"            # Call Amphora Create Flow diff_count times"},{"line_number":53,"context_line":"            with futures.ThreadPoolExecutor("},{"line_number":54,"context_line":"                    max_workers\u003dCONF.house_keeping.spare_amphora_pool_size"},{"line_number":55,"context_line":"            ) as executor:"},{"line_number":56,"context_line":"                for i in range(1, diff_count + 1):"},{"line_number":57,"context_line":"                    LOG.debug(\"Starting amphorae number %d ...\", i)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f2577a7_a2b4a436","line":54,"range":{"start_line":54,"start_character":20,"end_line":54,"end_character":74},"updated":"2017-09-08 20:10:51.000000000","message":"So, the other side effect here is it\u0027s going to spawn off these builds all at once.  Build rate limiting, if enabled will help with this, but should we make this a configurable size?","commit_id":"87da12e48d632622d85fafb3304b67da1a825ee6"}]}
