)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"60a4e382f146304e5121cac9cca2d7e569afde50","unresolved":false,"context_lines":[{"line_number":15,"context_line":"important that at least the launcher is created in the child process"},{"line_number":16,"context_line":"so we can\u0027t pass in objects."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This patch also fixes service.launch_service to accept a launcher (it"},{"line_number":19,"context_line":"will still create one if None is passed) and Launcher.launch_service"},{"line_number":20,"context_line":"to accept a workers argument (which must be 1 or a ValueError will be"},{"line_number":21,"context_line":"raised). This latter change is to make ServiceLauncher.launch_service"},{"line_number":22,"context_line":"compatible with ProcessLauncher.launch_service, avoiding awkward \"if"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a122d0e_e5236203","line":19,"range":{"start_line":18,"start_character":22,"end_line":19,"end_character":40},"updated":"2016-04-28 09:58:49.000000000","message":"This should be removed now.","commit_id":"a80af1ef6aca953c5b18b01002a0f50b4cdbead6"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"02f4e23101b5840e13afb2a742058f13bc8e7182","unresolved":false,"context_lines":[{"line_number":15,"context_line":"important that at least the launcher is created in the child process"},{"line_number":16,"context_line":"so we can\u0027t pass in objects."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This patch also fixes service.launch_service to accept a launcher (it"},{"line_number":19,"context_line":"will still create one if None is passed) and Launcher.launch_service"},{"line_number":20,"context_line":"to accept a workers argument (which must be 1 or a ValueError will be"},{"line_number":21,"context_line":"raised). This latter change is to make ServiceLauncher.launch_service"},{"line_number":22,"context_line":"compatible with ProcessLauncher.launch_service, avoiding awkward \"if"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a122d0e_85338e13","line":19,"range":{"start_line":18,"start_character":22,"end_line":19,"end_character":40},"in_reply_to":"1a122d0e_e5236203","updated":"2016-04-28 10:03:13.000000000","message":"Done","commit_id":"a80af1ef6aca953c5b18b01002a0f50b4cdbead6"}],"oslo_service/service.py":[{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"c15cac4e9b27cc3c96f43b5ef84afcd2f24725c8","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        :returns: None"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        \"\"\""},{"line_number":208,"context_line":"        if workers !\u003d 1:"},{"line_number":209,"context_line":"            raise ValueError(_(\"Launcher asked to start multiple workers\"))"},{"line_number":210,"context_line":"        _check_service_base(service)"},{"line_number":211,"context_line":"        service.backdoor_port \u003d self.backdoor_port"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_1b09bf84","line":208,"range":{"start_line":208,"start_character":8,"end_line":208,"end_character":23},"updated":"2016-04-27 08:36:41.000000000","message":"This will fail if workers\u003dNone\n\nhttp://logs.openstack.org/76/289876/7/check/gate-tempest-dsvm-neutron-src-oslo.service/e438c6b/logs/screen-n-cpu.txt.gz?level\u003dTRACE","commit_id":"ba135eeed4f7ec9d52266144273623570e5ad129"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"60a4e382f146304e5121cac9cca2d7e569afde50","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        :param service: The service you would like to start, must be an"},{"line_number":201,"context_line":"                        instance of :class:`oslo_service.service.ServiceBase`"},{"line_number":202,"context_line":"        :param workers: This param makes this method compatible with"},{"line_number":203,"context_line":"                        ProcessLauncher.launch_service. It must be omitted or"},{"line_number":204,"context_line":"                        passed as 1."},{"line_number":205,"context_line":"        :returns: None"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_a5b16ae2","line":204,"range":{"start_line":203,"start_character":64,"end_line":204,"end_character":36},"updated":"2016-04-28 09:58:49.000000000","message":"Please add that it can be None.","commit_id":"a80af1ef6aca953c5b18b01002a0f50b4cdbead6"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"02f4e23101b5840e13afb2a742058f13bc8e7182","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        :param service: The service you would like to start, must be an"},{"line_number":201,"context_line":"                        instance of :class:`oslo_service.service.ServiceBase`"},{"line_number":202,"context_line":"        :param workers: This param makes this method compatible with"},{"line_number":203,"context_line":"                        ProcessLauncher.launch_service. It must be omitted or"},{"line_number":204,"context_line":"                        passed as 1."},{"line_number":205,"context_line":"        :returns: None"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_25527a35","line":204,"range":{"start_line":203,"start_character":64,"end_line":204,"end_character":36},"in_reply_to":"1a122d0e_a5b16ae2","updated":"2016-04-28 10:03:13.000000000","message":"Done","commit_id":"a80af1ef6aca953c5b18b01002a0f50b4cdbead6"}],"oslo_service/tests/test_service.py":[{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"bfafbfd3ae9fefba64b20abe5d0e2bcab070e92b","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                       workers\u003d1,"},{"line_number":87,"context_line":"                       service_maker\u003dNone,"},{"line_number":88,"context_line":"                       launcher_maker\u003dNone):"},{"line_number":89,"context_line":"        # TODO(lxsli): try to remove self.workers"},{"line_number":90,"context_line":"        self.workers \u003d workers"},{"line_number":91,"context_line":"        pid \u003d os.fork()"},{"line_number":92,"context_line":"        if pid \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_8c3e5689","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":49},"updated":"2016-04-26 09:14:23.000000000","message":"Could you please explain why self.workers should be removed?","commit_id":"5ece8028336971b4264ce21fcc9b1d0c9529ff82"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"153f661b29ece290fd4a576825867687fab987ca","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                       workers\u003d1,"},{"line_number":87,"context_line":"                       service_maker\u003dNone,"},{"line_number":88,"context_line":"                       launcher_maker\u003dNone):"},{"line_number":89,"context_line":"        # TODO(lxsli): try to remove self.workers"},{"line_number":90,"context_line":"        self.workers \u003d workers"},{"line_number":91,"context_line":"        pid \u003d os.fork()"},{"line_number":92,"context_line":"        if pid \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_4cc8be22","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":49},"in_reply_to":"1a122d0e_8c3e5689","updated":"2016-04-26 09:34:30.000000000","message":"It seemed unnecessary but having looked more thoroughly, I\u0027ve removed this note","commit_id":"5ece8028336971b4264ce21fcc9b1d0c9529ff82"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"bfafbfd3ae9fefba64b20abe5d0e2bcab070e92b","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"                if launcher_maker:"},{"line_number":106,"context_line":"                    launcher \u003d launcher_maker()"},{"line_number":107,"context_line":"                    if isinstance(launcher, service.ProcessLauncher):"},{"line_number":108,"context_line":"                        launcher.launch_service(serv, workers\u003dworkers)"},{"line_number":109,"context_line":"                    else:"},{"line_number":110,"context_line":"                        launcher.launch_service(serv)"},{"line_number":111,"context_line":"                else:"},{"line_number":112,"context_line":"                    launcher \u003d service.launch(self.conf, serv, workers\u003dworkers)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_ccc5ee8e","line":110,"range":{"start_line":107,"start_character":20,"end_line":110,"end_character":53},"updated":"2016-04-26 09:14:23.000000000","message":"Why checking if a launcher is an instance of ProcessLauncher is needed? Just calling launcher.launch_service(serv, workers\u003dworkers) should be enough - launch_service would then figure out which launcher should be used.","commit_id":"5ece8028336971b4264ce21fcc9b1d0c9529ff82"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"153f661b29ece290fd4a576825867687fab987ca","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"                if launcher_maker:"},{"line_number":106,"context_line":"                    launcher \u003d launcher_maker()"},{"line_number":107,"context_line":"                    if isinstance(launcher, service.ProcessLauncher):"},{"line_number":108,"context_line":"                        launcher.launch_service(serv, workers\u003dworkers)"},{"line_number":109,"context_line":"                    else:"},{"line_number":110,"context_line":"                        launcher.launch_service(serv)"},{"line_number":111,"context_line":"                else:"},{"line_number":112,"context_line":"                    launcher \u003d service.launch(self.conf, serv, workers\u003dworkers)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_acaeb22b","line":110,"range":{"start_line":107,"start_character":20,"end_line":110,"end_character":53},"in_reply_to":"1a122d0e_ccc5ee8e","updated":"2016-04-26 09:34:30.000000000","message":"ServiceLauncher will TypeError if you try to pass it \u0027workers\u0027 because the signatures are incompatible.\n\nIf you meant service.launch - that constructs a launcher itself, you can\u0027t pass one in which is what I want to do here.\n\nMaybe a better change would be to make the types compatible, or allow service.launch to accept a launcher. I was trying to write some tests at the time so I fixed the test helper that was getting in my way.","commit_id":"5ece8028336971b4264ce21fcc9b1d0c9529ff82"}]}
