)]}'
{"tripleo_common/image/image_uploader.py":[{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"63d5ccf1b66898abd0fb00b19ba000b410d9c7c8","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from concurrent import futures"},{"line_number":18,"context_line":"import hashlib"},{"line_number":19,"context_line":"import json"},{"line_number":20,"context_line":"import multiprocessing"},{"line_number":21,"context_line":"import netifaces"},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":"import random"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_b7e5cede","line":20,"updated":"2019-10-03 08:32:46.000000000","message":"tldr; it is likely that multiprocessing doesn\u0027t play well with eventlet and Mistral actions are running in a eventlet monkeypatched environment. (I don\u0027t know this for sure, but we have had problems like this in the past.)\n\nUnfortunately we are masking the original exception in Mistral. I have created a patch to expose it. https://review.opendev.org/#/c/686353/","commit_id":"11e40ba4af287ea039d388066f4119642a3ed68f"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"d49483974da51472669ae9333faf89992c9ac451","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"            LOG.warning(\u0027No lock information provided for layer %s\u0027 % layer)"},{"line_number":1132,"context_line":"            return"},{"line_number":1133,"context_line":"        LOG.debug(\u0027Locking layer %s\u0027 % layer)"},{"line_number":1134,"context_line":"        while layer in lock.get_state():"},{"line_number":1135,"context_line":"            LOG.debug(\u0027%s is being fetched by another thread\u0027 % layer)"},{"line_number":1136,"context_line":"            time.sleep(0.5)"},{"line_number":1137,"context_line":"        LOG.debug(\u0027Starting acquire for lock %s\u0027 % layer)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_afe5670c","line":1134,"range":{"start_line":1134,"start_character":28,"end_line":1134,"end_character":37},"updated":"2019-10-04 07:41:28.000000000","message":"nit: if renamed to objects() the code becomes little easier to follow","commit_id":"6f574fa1dff001c50380655cbfd22b6376ca1a1e"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"02708e0337ea31ce5a8728f089026bdf1d1181c0","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"            LOG.warning(\u0027No lock information provided for layer %s\u0027 % layer)"},{"line_number":1132,"context_line":"            return"},{"line_number":1133,"context_line":"        LOG.debug(\u0027Locking layer %s\u0027 % layer)"},{"line_number":1134,"context_line":"        while layer in lock.get_state():"},{"line_number":1135,"context_line":"            LOG.debug(\u0027%s is being fetched by another thread\u0027 % layer)"},{"line_number":1136,"context_line":"            time.sleep(0.5)"},{"line_number":1137,"context_line":"        LOG.debug(\u0027Starting acquire for lock %s\u0027 % layer)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_10d29335","line":1134,"range":{"start_line":1134,"start_character":28,"end_line":1134,"end_character":37},"in_reply_to":"3fa7e38b_afe5670c","updated":"2019-10-04 14:00:33.000000000","message":"k i can rename this","commit_id":"6f574fa1dff001c50380655cbfd22b6376ca1a1e"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"d49483974da51472669ae9333faf89992c9ac451","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"    @classmethod"},{"line_number":1148,"context_line":"    def _layer_fetch_unlock(cls, layer, lock\u003dNone):"},{"line_number":1149,"context_line":"        if not lock:"},{"line_number":1150,"context_line":"            LOG.warning(\u0027No lock information provided for layer %s\u0027 % layer)"},{"line_number":1151,"context_line":"            return"},{"line_number":1152,"context_line":"        LOG.debug(\u0027Unlocking layer %s\u0027 % layer)"},{"line_number":1153,"context_line":"        LOG.debug(\u0027Starting acquire for lock %s\u0027 % layer)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_8fec2bf4","line":1150,"range":{"start_line":1150,"start_character":16,"end_line":1150,"end_character":23},"updated":"2019-10-04 07:41:28.000000000","message":"this should be a debug level message IMO","commit_id":"6f574fa1dff001c50380655cbfd22b6376ca1a1e"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"02708e0337ea31ce5a8728f089026bdf1d1181c0","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"    @classmethod"},{"line_number":1148,"context_line":"    def _layer_fetch_unlock(cls, layer, lock\u003dNone):"},{"line_number":1149,"context_line":"        if not lock:"},{"line_number":1150,"context_line":"            LOG.warning(\u0027No lock information provided for layer %s\u0027 % layer)"},{"line_number":1151,"context_line":"            return"},{"line_number":1152,"context_line":"        LOG.debug(\u0027Unlocking layer %s\u0027 % layer)"},{"line_number":1153,"context_line":"        LOG.debug(\u0027Starting acquire for lock %s\u0027 % layer)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_30d78f26","line":1150,"range":{"start_line":1150,"start_character":16,"end_line":1150,"end_character":23},"in_reply_to":"3fa7e38b_8fec2bf4","updated":"2019-10-04 14:00:33.000000000","message":"no because we shouldn\u0027t be running this w/o locking.  And actually there is a bug somewhere because this is triggering in my testing.","commit_id":"6f574fa1dff001c50380655cbfd22b6376ca1a1e"}],"tripleo_common/utils/locks.py":[{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"d49483974da51472669ae9333faf89992c9ac451","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def get_lock(self):"},{"line_number":21,"context_line":"        return self._lock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def get_state(self):"},{"line_number":24,"context_line":"        return self._state"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_0fafdb94","line":23,"range":{"start_line":23,"start_character":8,"end_line":23,"end_character":17},"updated":"2019-10-04 07:41:28.000000000","message":"nit: so may be objects() ?..","commit_id":"6f574fa1dff001c50380655cbfd22b6376ca1a1e"}]}
