)]}'
{"keystone/server/common.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"094d170dd9b55f9a388ed1236681ece4c103d927","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import abc"},{"line_number":15,"context_line":"import logging"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_174c85c7","line":16,"updated":"2015-02-25 15:06:19.000000000","message":"six is thirdparty and should be in the next section.","commit_id":"962e7bfe38079a71b17c93b516e906f8c3e56059"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"95018502d0b50176ee21f8e60ac332b118c84de6","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import abc"},{"line_number":15,"context_line":"import logging"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_72194fd6","line":16,"in_reply_to":"ba7be1f8_174c85c7","updated":"2015-02-25 15:16:41.000000000","message":"Done","commit_id":"962e7bfe38079a71b17c93b516e906f8c3e56059"}],"keystone/server/eventlet.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"d85b90a0d5001808000deade2c2632eb92dad84e","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    # NOTE(amakarov): logging must be set up after eventlet patching, otherwise"},{"line_number":128,"context_line":"    # logging handlers will be left with generic locks instead of using patched"},{"line_number":129,"context_line":"    # eventlet semaphores."},{"line_number":130,"context_line":"    if monkeypatch_thread:"},{"line_number":131,"context_line":"        config.setup_logging()"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def create_servers():"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_b7102f4f","line":130,"updated":"2015-02-11 16:46:59.000000000","message":"Think this is supposed to be in the common code after this function returns, and without the check for monkeypoath thread, so it is always called.","commit_id":"4fa20c8282bdab7ea7472cb3a6cfdadefa9eb2f4"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"36caa4490f5b9e336f81d73e8a0f0b40c1d3beee","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    # NOTE(amakarov): logging must be set up after eventlet patching, otherwise"},{"line_number":128,"context_line":"    # logging handlers will be left with generic locks instead of using patched"},{"line_number":129,"context_line":"    # eventlet semaphores."},{"line_number":130,"context_line":"    if monkeypatch_thread:"},{"line_number":131,"context_line":"        config.setup_logging()"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def create_servers():"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_c81dfe10","line":130,"in_reply_to":"da86d52c_b7102f4f","updated":"2015-02-11 17:54:52.000000000","message":"Done","commit_id":"4fa20c8282bdab7ea7472cb3a6cfdadefa9eb2f4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6a194863893dd63a53118256a6acea15beeb5a07","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    # NOTE(amakarov): logging must be set up after eventlet patching, otherwise"},{"line_number":128,"context_line":"    # logging handlers will be left with generic locks instead of using patched"},{"line_number":129,"context_line":"    # eventlet semaphores."},{"line_number":130,"context_line":"    config.setup_logging()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_servers():"},{"line_number":133,"context_line":"        admin_worker_count \u003d _get_workers(\u0027admin_workers\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_8467de24","line":130,"updated":"2015-02-23 01:34:04.000000000","message":"rather than move this code out of common.configure() and require the callers to call it, change common.configure() to take a function ref, like pre_setup_logging and then have common.configure() call it just before it calls config.setup_logging...\n\n\n # need to monkeypatch eventlet before setting up logging to ensure logging gets the correct _get_ident()\n def do_eventlet_monkeypatching():\n     monkeypatch_thread \u003d not CONF.standard_threads\n     ...\n\n common.configure(\n      version\u003dpbr.version.VersionInfo(\u0027keystone\u0027).version_string(),\n      config_files\u003dconfig_files,\n      pre_setup_logging\u003ddo_eventlet_monkeypatching\n )\n\nSince this is getting kind of complicated it would be best to create a class for the eventlet and wsgi servers, but that can wait for later.","commit_id":"0d5695793041b9e1af3ec739f66acd565c4d13b5"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"585d893771d041123838b5c3dde25c69e43c9ab5","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    # NOTE(amakarov): logging must be set up after eventlet patching, otherwise"},{"line_number":128,"context_line":"    # logging handlers will be left with generic locks instead of using patched"},{"line_number":129,"context_line":"    # eventlet semaphores."},{"line_number":130,"context_line":"    config.setup_logging()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_servers():"},{"line_number":133,"context_line":"        admin_worker_count \u003d _get_workers(\u0027admin_workers\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_2d6a55b3","line":130,"in_reply_to":"ba7be1f8_8467de24","updated":"2015-02-24 14:44:29.000000000","message":"Done","commit_id":"0d5695793041b9e1af3ec739f66acd565c4d13b5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"094d170dd9b55f9a388ed1236681ece4c103d927","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        admin_worker_count \u003d self._get_workers(\u0027admin_workers\u0027)"},{"line_number":97,"context_line":"        public_worker_count \u003d self._get_workers(\u0027public_workers\u0027)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        self.servers.append("},{"line_number":100,"context_line":"            self._create_server(\u0027admin\u0027,"},{"line_number":101,"context_line":"                                CONF.eventlet_server.admin_bind_host,"},{"line_number":102,"context_line":"                                int(CONF.eventlet_server.admin_port),"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_776a21ef","line":99,"updated":"2015-02-25 15:06:19.000000000","message":"How does this work? I don\u0027t see where self.servers is defined.","commit_id":"962e7bfe38079a71b17c93b516e906f8c3e56059"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"95018502d0b50176ee21f8e60ac332b118c84de6","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        admin_worker_count \u003d self._get_workers(\u0027admin_workers\u0027)"},{"line_number":97,"context_line":"        public_worker_count \u003d self._get_workers(\u0027public_workers\u0027)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        self.servers.append("},{"line_number":100,"context_line":"            self._create_server(\u0027admin\u0027,"},{"line_number":101,"context_line":"                                CONF.eventlet_server.admin_bind_host,"},{"line_number":102,"context_line":"                                int(CONF.eventlet_server.admin_port),"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_d2f91b81","line":99,"in_reply_to":"ba7be1f8_776a21ef","updated":"2015-02-25 15:16:41.000000000","message":"Correct: it does not (","commit_id":"962e7bfe38079a71b17c93b516e906f8c3e56059"}],"keystone/server/wsgi.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6a194863893dd63a53118256a6acea15beeb5a07","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def initialize_application(name):"},{"line_number":37,"context_line":"    common.configure()"},{"line_number":38,"context_line":"    config.setup_logging()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    # Log the options used when starting if we\u0027re in debug mode..."},{"line_number":41,"context_line":"    if CONF.debug:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_a445c271","line":38,"updated":"2015-02-23 01:34:04.000000000","message":"don\u0027t need to do this if change common.configure to take a function ref as described in eventlet.py.","commit_id":"0d5695793041b9e1af3ec739f66acd565c4d13b5"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"585d893771d041123838b5c3dde25c69e43c9ab5","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def initialize_application(name):"},{"line_number":37,"context_line":"    common.configure()"},{"line_number":38,"context_line":"    config.setup_logging()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    # Log the options used when starting if we\u0027re in debug mode..."},{"line_number":41,"context_line":"    if CONF.debug:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_cda299fc","line":38,"in_reply_to":"ba7be1f8_a445c271","updated":"2015-02-24 14:44:29.000000000","message":"Done","commit_id":"0d5695793041b9e1af3ec739f66acd565c4d13b5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"094d170dd9b55f9a388ed1236681ece4c103d927","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        pass"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def loadapp(self):"},{"line_number":38,"context_line":"        return self.get_wsgi_app(self.app_name)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def initialize_application(name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_524feb6a","line":38,"updated":"2015-02-25 15:06:19.000000000","message":"Where is self.app_name defined?","commit_id":"962e7bfe38079a71b17c93b516e906f8c3e56059"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"95018502d0b50176ee21f8e60ac332b118c84de6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        pass"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def loadapp(self):"},{"line_number":38,"context_line":"        return self.get_wsgi_app(self.app_name)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def initialize_application(name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_124733bd","line":38,"in_reply_to":"ba7be1f8_524feb6a","updated":"2015-02-25 15:16:41.000000000","message":"Done","commit_id":"962e7bfe38079a71b17c93b516e906f8c3e56059"}]}
