)]}'
{"doc/source/reference/queue_def.rst":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"96790816fc1b5c13370903c8c2de3c0f26811f9b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      Queues by default define a single queue for all projects and"},{"line_number":35,"context_line":"      branches that use it. This is especially important if projects"},{"line_number":36,"context_line":"      want to do upgrade tests between different branches in"},{"line_number":37,"context_line":"      the :term:`gate`. If a project doesn\u0027t have this use case it can"},{"line_number":38,"context_line":"      configure the queue to create a shared queue per branch for all"},{"line_number":39,"context_line":"      projects. This can be useful for large projects to improve the"},{"line_number":40,"context_line":"      throughput of a gate pipeline as this results in shorter queues"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1f493fa4_763c0dc8","line":37,"updated":"2020-04-24 16:08:55.000000000","message":"If you revise this (eg to address Simon\u0027s comment) maybe change \"project\" to \"set of projects\", just to keep it clear that this isn\u0027t something that affects single projects in isolation.","commit_id":"1094e5913f3306a6c14fe627a3df1e11f95f647c"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"90a6d8341499d0ebbad1c85582bd392cb36bdd6b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      Queues by default define a single queue for all projects and"},{"line_number":35,"context_line":"      branches that use it. This is especially important if projects"},{"line_number":36,"context_line":"      want to do upgrade tests between different branches in"},{"line_number":37,"context_line":"      the :term:`gate`. If a project doesn\u0027t have this use case it can"},{"line_number":38,"context_line":"      configure the queue to create a shared queue per branch for all"},{"line_number":39,"context_line":"      projects. This can be useful for large projects to improve the"},{"line_number":40,"context_line":"      throughput of a gate pipeline as this results in shorter queues"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1f493fa4_32792d2f","line":37,"in_reply_to":"1f493fa4_763c0dc8","updated":"2020-05-05 17:18:58.000000000","message":"Done","commit_id":"1094e5913f3306a6c14fe627a3df1e11f95f647c"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"a2b3ada9cd555afa76aeaabc4e1122e32ab4e8bb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"      configure the queue to create a shared queue per branch for all"},{"line_number":39,"context_line":"      projects. This can be useful for large projects to improve the"},{"line_number":40,"context_line":"      throughput of a gate pipeline as this results in shorter queues"},{"line_number":41,"context_line":"      and thus less impact when a job fails in the gate."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f4c43b2_ac92e19d","line":41,"updated":"2020-04-16 08:14:29.000000000","message":"Maybe we should mention that there can be some unexpected cases with cross project gating and default/fallback branches.\n\nE.g. when you have this option enabled and doing cross project gating and one of the projects is using a fallback branch, you have to merge the dependency first before the dependent change can enter the gate since they no longer share the same change queue.","commit_id":"1094e5913f3306a6c14fe627a3df1e11f95f647c"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"90a6d8341499d0ebbad1c85582bd392cb36bdd6b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"      configure the queue to create a shared queue per branch for all"},{"line_number":39,"context_line":"      projects. This can be useful for large projects to improve the"},{"line_number":40,"context_line":"      throughput of a gate pipeline as this results in shorter queues"},{"line_number":41,"context_line":"      and thus less impact when a job fails in the gate."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1f493fa4_9276413e","line":41,"in_reply_to":"3f4c43b2_ac92e19d","updated":"2020-05-05 17:18:58.000000000","message":"Done","commit_id":"1094e5913f3306a6c14fe627a3df1e11f95f647c"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"c633c29bbd1c6e0e26bb40a0ee7f599f912b4791","unresolved":false,"context_lines":[{"line_number":7,"context_line":"This is especially used in a :value:`dependent \u003cpipeline.manager.dependent\u003e`"},{"line_number":8,"context_line":"pipeline. The :attr:`project.\u003cpipeline\u003e.queue` can optionally refer"},{"line_number":9,"context_line":"to a specific :attr:`queue` object that can further configure the"},{"line_number":10,"context_line":"behavior of the queue."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Here is an example ``queue`` configuration."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"ff570b3c_88fe0303","line":10,"updated":"2020-05-26 21:45:05.000000000","message":"We should mention that this can only be defined in a config-project.\n\nHowever, are we sure that\u0027s what we want?  We\u0027re only going to use the first instance of a queue, so would it be harmful to allow untrusted projects to define it?  Today, if a project stanza doesn\u0027t appear in a config-project, that project can name its own queue.  We could permit the same by allowing the queue object to appear anywhere, and if an admin cares enough to specify the queue, they can do it in a config-project (thereby depriving the untrusted-project of the opportunity of specifying the queue).","commit_id":"b5c7091f4be47a0d95be49f5f4933b44dbe6a22a"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"25fe167a667ffe353924711b1beba099dbd223b0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"This is especially used in a :value:`dependent \u003cpipeline.manager.dependent\u003e`"},{"line_number":8,"context_line":"pipeline. The :attr:`project.\u003cpipeline\u003e.queue` can optionally refer"},{"line_number":9,"context_line":"to a specific :attr:`queue` object that can further configure the"},{"line_number":10,"context_line":"behavior of the queue."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Here is an example ``queue`` configuration."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"ff570b3c_f782faa4","line":10,"in_reply_to":"ff570b3c_88fe0303","updated":"2020-05-27 06:40:44.000000000","message":"I agree, I\u0027ll skip that limitation.","commit_id":"b5c7091f4be47a0d95be49f5f4933b44dbe6a22a"}],"tests/unit/test_scheduler.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26aed32c1b1d65af05354fcedb16f62411ea2ee4","unresolved":false,"context_lines":[{"line_number":6260,"context_line":""},{"line_number":6261,"context_line":"class TestChangeQueues(ZuulTestCase):"},{"line_number":6262,"context_line":"    tenant_config_file \u003d \u0027config/change-queues/main.yaml\u0027"},{"line_number":6263,"context_line":"    "},{"line_number":6264,"context_line":"    def _test_dependent_queues_per_branch(self, project):"},{"line_number":6265,"context_line":"        self.create_branch(project, \u0027stable\u0027)"},{"line_number":6266,"context_line":"        self.fake_gerrit.addEvent("}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_830d4740","line":6263,"updated":"2020-04-15 10:51:25.000000000","message":"linters: W293 blank line contains whitespace","commit_id":"075652e8d59b87ef67a2d9c7cf0f6720bf844516"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26aed32c1b1d65af05354fcedb16f62411ea2ee4","unresolved":false,"context_lines":[{"line_number":6313,"context_line":"            dict(name\u003d\u0027project-test\u0027, result\u003d\u0027FAILURE\u0027, changes\u003d\u00271,1\u0027),"},{"line_number":6314,"context_line":"            dict(name\u003d\u0027project-test\u0027, result\u003d\u0027SUCCESS\u0027, changes\u003d\u00272,1\u0027),"},{"line_number":6315,"context_line":"        ], ordered\u003dFalse)"},{"line_number":6316,"context_line":"        "},{"line_number":6317,"context_line":"    def test_dependent_queues_per_branch(self):"},{"line_number":6318,"context_line":"        \"\"\""},{"line_number":6319,"context_line":"        Test that change queues can be different for different branches."}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_630abb26","line":6316,"updated":"2020-04-15 10:51:25.000000000","message":"linters: W293 blank line contains whitespace","commit_id":"075652e8d59b87ef67a2d9c7cf0f6720bf844516"}],"zuul/configloader.py":[{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"a9b37026439fc5fd27612c048629b5fb94cc2c00","unresolved":false,"context_lines":[{"line_number":2044,"context_line":""},{"line_number":2045,"context_line":"        for job in parsed_config.jobs:"},{"line_number":2046,"context_line":"            _cache(\u0027jobs\u0027, job)"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"        for semaphore in parsed_config.semaphores:"},{"line_number":2049,"context_line":"            _cache(\u0027semaphores\u0027, semaphore)"},{"line_number":2050,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bf51134e_696ec32f","line":2047,"updated":"2020-06-22 18:16:29.000000000","message":"It seems like the queue should be cached here to correctly enforce queue object uniqueness property. Otherwise another project can propose a dup key, resulting in a config-error once the change is merged.","commit_id":"e9817f97f5c22a14f2e8119e65ee34c82d5b1048"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"ccf8680480eb6337ed6d0a2e349da3a2083a3506","unresolved":false,"context_lines":[{"line_number":2044,"context_line":""},{"line_number":2045,"context_line":"        for job in parsed_config.jobs:"},{"line_number":2046,"context_line":"            _cache(\u0027jobs\u0027, job)"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"        for semaphore in parsed_config.semaphores:"},{"line_number":2049,"context_line":"            _cache(\u0027semaphores\u0027, semaphore)"},{"line_number":2050,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bf51134e_8d82d1ff","line":2047,"in_reply_to":"bf51134e_696ec32f","updated":"2020-06-30 12:36:26.000000000","message":"Done","commit_id":"e9817f97f5c22a14f2e8119e65ee34c82d5b1048"}],"zuul/manager/__init__.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"fc941b0de981ce3049b879787faff1e428be8731","unresolved":false,"context_lines":[{"line_number":9,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":"import abc"},{"line_number":13,"context_line":"import logging"},{"line_number":14,"context_line":"import textwrap"},{"line_number":15,"context_line":"import urllib"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f493fa4_de5febe2","line":12,"updated":"2020-05-08 16:15:58.000000000","message":"linters: F401 \u0027abc\u0027 imported but unused","commit_id":"0e54682a929f33862744e7c32293fab398b2dbdb"}],"zuul/manager/dependent.py":[{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"1da1b1a6557e0ffee7f5ec69457bf526f7ba4f9b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def getOrCreateQueue(self, project, branch):"},{"line_number":33,"context_line":"        change_queue \u003d None"},{"line_number":34,"context_line":"        if branch in self.created_for_branches:"},{"line_number":35,"context_line":"            change_queue \u003d self.created_for_branches[branch]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if not change_queue:"},{"line_number":38,"context_line":"            p \u003d self.pipeline_manager.pipeline"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_f4404038","line":35,"updated":"2020-04-15 12:31:38.000000000","message":"nit: line 33-25 could be combined as\n\n    change_queue \u003d self.created_for_branches.get(branch)","commit_id":"87bc8b55baee2f6cb3d76557093d827e3da95d30"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"3ebfe6e1fc82afd407c375fac5f75c3d2ad079f9","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def getOrCreateQueue(self, project, branch):"},{"line_number":33,"context_line":"        change_queue \u003d None"},{"line_number":34,"context_line":"        if branch in self.created_for_branches:"},{"line_number":35,"context_line":"            change_queue \u003d self.created_for_branches[branch]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if not change_queue:"},{"line_number":38,"context_line":"            p \u003d self.pipeline_manager.pipeline"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_5d2b1781","line":35,"in_reply_to":"3f4c43b2_f4404038","updated":"2020-04-15 14:49:55.000000000","message":"Done","commit_id":"87bc8b55baee2f6cb3d76557093d827e3da95d30"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"1da1b1a6557e0ffee7f5ec69457bf526f7ba4f9b","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":70,"context_line":"        super(DependentPipelineManager, self).__init__(*args, **kwargs)"},{"line_number":71,"context_line":"        self.change_queue_manager \u003d []"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def buildChangeQueues(self, layout):"},{"line_number":74,"context_line":"        self.log.debug(\"Building shared change queues\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_94445c1d","line":71,"updated":"2020-04-15 12:31:38.000000000","message":"Maybe the plural form would be better here or even changing it to `change_queue_templates`. For me the template/manager naming is a little confusing. Could the `ChangeQueueManager` be a `ChangeQueueTemplate`?","commit_id":"87bc8b55baee2f6cb3d76557093d827e3da95d30"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"3ebfe6e1fc82afd407c375fac5f75c3d2ad079f9","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":70,"context_line":"        super(DependentPipelineManager, self).__init__(*args, **kwargs)"},{"line_number":71,"context_line":"        self.change_queue_manager \u003d []"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def buildChangeQueues(self, layout):"},{"line_number":74,"context_line":"        self.log.debug(\"Building shared change queues\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_fd97838f","line":71,"in_reply_to":"3f4c43b2_94445c1d","updated":"2020-04-15 14:49:55.000000000","message":"I named it at first template but wasn\u0027t sasisfied with the naming since it is more than a template. Thus I renamed it (incompletely) to manager. Next PS will consistently use manager.","commit_id":"87bc8b55baee2f6cb3d76557093d827e3da95d30"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"1da1b1a6557e0ffee7f5ec69457bf526f7ba4f9b","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    # The change queue is global so look again with no branch"},{"line_number":135,"context_line":"                    queue \u003d self.pipeline.getQueue(change.project, None)"},{"line_number":136,"context_line":"                    if queue:"},{"line_number":137,"context_line":"                        return StaticChangeQueueContextManager(queue)"},{"line_number":138,"context_line":"                else:"},{"line_number":139,"context_line":"                    # The change queue is not existing yet for this branch"},{"line_number":140,"context_line":"                    branch \u003d change.branch"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_d48f042c","line":137,"updated":"2020-04-15 12:31:38.000000000","message":"nit: You could rewrite that slightly to eliminate the duplicate fallback to the global queue:\n\n    if matching_templates:\n        template \u003d matching_templates[0]\n        branch \u003d None\n        if template.per_branch:\n            # The change queue is not existing yet for this branch\n            branch \u003d change.branch\n\n            # We have a queue template but no queue yet, so create it\n            return StaticChangeQueueContextManager(\n                template.getOrCreateQueue(change.project, branch)\n            )\n\n    # No specific or per-branch template matched so look again with no branch\n    queue \u003d self.pipeline.getQueue(change.project, None)\n    if queue:\n        return StaticChangeQueueContextManager(queue)","commit_id":"87bc8b55baee2f6cb3d76557093d827e3da95d30"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"3ebfe6e1fc82afd407c375fac5f75c3d2ad079f9","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    # The change queue is global so look again with no branch"},{"line_number":135,"context_line":"                    queue \u003d self.pipeline.getQueue(change.project, None)"},{"line_number":136,"context_line":"                    if queue:"},{"line_number":137,"context_line":"                        return StaticChangeQueueContextManager(queue)"},{"line_number":138,"context_line":"                else:"},{"line_number":139,"context_line":"                    # The change queue is not existing yet for this branch"},{"line_number":140,"context_line":"                    branch \u003d change.branch"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_fd4ae324","line":137,"in_reply_to":"3f4c43b2_d48f042c","updated":"2020-04-15 14:49:55.000000000","message":"Done","commit_id":"87bc8b55baee2f6cb3d76557093d827e3da95d30"}],"zuul/model.py":[{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"5c31724d066ee09a3507c26d2e263f21fd913bbc","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    def getJobs(self):"},{"line_number":426,"context_line":"        return self._jobs"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def addProject(self, project, branch):"},{"line_number":429,"context_line":"        project_branch \u003d (project, branch)"},{"line_number":430,"context_line":"        if project_branch not in self.project_branches:"},{"line_number":431,"context_line":"            self.project_branches.append(project_branch)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4c43b2_178dee7a","line":428,"range":{"start_line":428,"start_character":34,"end_line":428,"end_character":40},"updated":"2020-04-15 13:13:23.000000000","message":"can we comment the semantic of `branch\u003dNone`? And maybe default the `branch` params to `None`? (same for `#matches` and `#getQueue`)?","commit_id":"691a8aa9685e6ff8b9df2446e7ac850df06ce5c1"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"3ebfe6e1fc82afd407c375fac5f75c3d2ad079f9","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    def getJobs(self):"},{"line_number":426,"context_line":"        return self._jobs"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def addProject(self, project, branch):"},{"line_number":429,"context_line":"        project_branch \u003d (project, branch)"},{"line_number":430,"context_line":"        if project_branch not in self.project_branches:"},{"line_number":431,"context_line":"            self.project_branches.append(project_branch)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4c43b2_ddca876c","line":428,"range":{"start_line":428,"start_character":34,"end_line":428,"end_character":40},"in_reply_to":"3f4c43b2_178dee7a","updated":"2020-04-15 14:49:55.000000000","message":"Next PS will comment that. However since branch is not really optional here I wouldn\u0027t set a default here.","commit_id":"691a8aa9685e6ff8b9df2446e7ac850df06ce5c1"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"284c8014ba5b77d28a9db883edac98135ea93811","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    def getJobs(self):"},{"line_number":426,"context_line":"        return self._jobs"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def addProject(self, project, branch):"},{"line_number":429,"context_line":"        project_branch \u003d (project, branch)"},{"line_number":430,"context_line":"        if project_branch not in self.project_branches:"},{"line_number":431,"context_line":"            self.project_branches.append(project_branch)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4c43b2_0f22e700","line":428,"range":{"start_line":428,"start_character":34,"end_line":428,"end_character":40},"in_reply_to":"3f4c43b2_ddca876c","updated":"2020-04-16 09:49:08.000000000","message":"Saw some usage, e.g., in SupercedentPipelineManager.","commit_id":"691a8aa9685e6ff8b9df2446e7ac850df06ce5c1"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"a9b37026439fc5fd27612c048629b5fb94cc2c00","unresolved":false,"context_lines":[{"line_number":3884,"context_line":"        self.semaphores[semaphore.name] \u003d semaphore"},{"line_number":3885,"context_line":""},{"line_number":3886,"context_line":"    def addQueue(self, queue):"},{"line_number":3887,"context_line":"        # Change queues are only allowed to be defined in config projects"},{"line_number":3888,"context_line":"        # and must be unique."},{"line_number":3889,"context_line":"        if queue.name in self.queues:"},{"line_number":3890,"context_line":"            raise Exception(\u0027Queue %s is already defined\u0027 % queue.name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf51134e_69c7e397","line":3887,"range":{"start_line":3887,"start_character":24,"end_line":3887,"end_character":73},"updated":"2020-06-22 18:16:29.000000000","message":"nit: that comment doesn\u0027t seems to be up-to-date, e.g. queue can be defined by untrusted projects.","commit_id":"e9817f97f5c22a14f2e8119e65ee34c82d5b1048"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"ccf8680480eb6337ed6d0a2e349da3a2083a3506","unresolved":false,"context_lines":[{"line_number":3884,"context_line":"        self.semaphores[semaphore.name] \u003d semaphore"},{"line_number":3885,"context_line":""},{"line_number":3886,"context_line":"    def addQueue(self, queue):"},{"line_number":3887,"context_line":"        # Change queues are only allowed to be defined in config projects"},{"line_number":3888,"context_line":"        # and must be unique."},{"line_number":3889,"context_line":"        if queue.name in self.queues:"},{"line_number":3890,"context_line":"            raise Exception(\u0027Queue %s is already defined\u0027 % queue.name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf51134e_12aa5c18","line":3887,"range":{"start_line":3887,"start_character":24,"end_line":3887,"end_character":73},"in_reply_to":"bf51134e_69c7e397","updated":"2020-06-30 12:36:26.000000000","message":"Done","commit_id":"e9817f97f5c22a14f2e8119e65ee34c82d5b1048"}]}
