)]}'
{"octavia/api/app.py":[{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"91e7404172688a5c3abc0109b80b1c78c6c8f470","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    octavia_service.prepare_service(argv)"},{"line_number":49,"context_line":"    cfg.CONF.log_opt_values(LOG, logging.DEBUG)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    rpc.init()"},{"line_number":52,"context_line":"    _init_drivers()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    if not pecan_config:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_e4dd64dd","line":51,"range":{"start_line":51,"start_character":4,"end_line":51,"end_character":14},"updated":"2019-02-13 10:08:36.000000000","message":"prepare_service in L48 will already execute init. The import in L27 could then be dropped","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"d757f8619fce89bc603684add8008505c30923e4","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    octavia_service.prepare_service(argv)"},{"line_number":49,"context_line":"    cfg.CONF.log_opt_values(LOG, logging.DEBUG)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    rpc.init()"},{"line_number":52,"context_line":"    _init_drivers()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    if not pecan_config:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_0d1e7fba","line":51,"range":{"start_line":51,"start_character":4,"end_line":51,"end_character":14},"in_reply_to":"9fdfeff1_e4dd64dd","updated":"2019-02-13 18:26:38.000000000","message":"Good catch - I initially only did this for the api.","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"737db6ff688cee23819aceffab8fe54f05e9d6d2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    octavia_service.prepare_service(argv)"},{"line_number":49,"context_line":"    cfg.CONF.log_opt_values(LOG, logging.DEBUG)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    rpc.init()"},{"line_number":52,"context_line":"    _init_drivers()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    if not pecan_config:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_b5eea41f","line":51,"range":{"start_line":51,"start_character":4,"end_line":51,"end_character":14},"in_reply_to":"9fdfeff1_e4dd64dd","updated":"2019-02-13 22:03:42.000000000","message":"right, since it was added there as well, this is redundant -- so yeah. this file won\u0027t even be in the change if we remove these two changed lines. :)","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"6ffe18211d27e9d2342def43e6bd36b9b1015eba","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from octavia.common import constants"},{"line_number":25,"context_line":"from octavia.common import exceptions"},{"line_number":26,"context_line":"from octavia.common import keystone"},{"line_number":27,"context_line":"from octavia.common import rpc"},{"line_number":28,"context_line":"from octavia.common import service as octavia_service"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_93e60eb0","line":27,"updated":"2019-02-13 19:56:00.000000000","message":"Unused import?","commit_id":"af9d3dce89e8eeee638daf4926d6b5cf7cc5b891"}],"octavia/api/handlers/queue/producer.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"737db6ff688cee23819aceffab8fe54f05e9d6d2","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    used to send messages via the Class variables load_balancer, listener,"},{"line_number":231,"context_line":"    health_monitor, member, l7policy and l7rule."},{"line_number":232,"context_line":"    \"\"\""},{"line_number":233,"context_line":"    def __init__(self):"},{"line_number":234,"context_line":"        self.load_balancer \u003d LoadBalancerProducer()"},{"line_number":235,"context_line":"        self.listener \u003d ListenerProducer()"},{"line_number":236,"context_line":"        self.pool \u003d PoolProducer()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_b5d7844b","line":233,"updated":"2019-02-13 22:03:42.000000000","message":"Guess it\u0027s worth checking if there\u0027s anywhere else those were treated as class variables, as this makes them instance vars instead. Trying to do a quick scan though, and I cannot for the life of me figure out where we ACTUALLY USE THIS in v2. The levels of abstraction here are killing me. Maybe some factory somewhere? O_o","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"8a64e5b32856607234c190e290fcc711bb959288","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    used to send messages via the Class variables load_balancer, listener,"},{"line_number":231,"context_line":"    health_monitor, member, l7policy and l7rule."},{"line_number":232,"context_line":"    \"\"\""},{"line_number":233,"context_line":"    def __init__(self):"},{"line_number":234,"context_line":"        self.load_balancer \u003d LoadBalancerProducer()"},{"line_number":235,"context_line":"        self.listener \u003d ListenerProducer()"},{"line_number":236,"context_line":"        self.pool \u003d PoolProducer()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_e7eeb420","line":233,"in_reply_to":"9fdfeff1_b5d7844b","updated":"2019-02-13 23:08:24.000000000","message":"We don\u0027t use this in V2, it\u0027s a v1 hold over. It\u0027s history when we remove v1","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"}],"octavia/common/rpc.py":[{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"0017365fb14986d1eeac9ec8265596668767f85a","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def init():"},{"line_number":24,"context_line":"    global TRANSPORT"},{"line_number":25,"context_line":"    TRANSPORT \u003d create_transport(get_transport_url())"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def cleanup():"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_892d8496","line":25,"range":{"start_line":25,"start_character":4,"end_line":25,"end_character":53},"updated":"2019-02-13 17:27:17.000000000","message":"if not TRANSPORT:\n  TRANSPORT \u003d create_transport(get_transport_url())\n\nEven though init should never be called twice, it is good to add some protection against that.","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"91e7404172688a5c3abc0109b80b1c78c6c8f470","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    TRANSPORT \u003d create_transport(get_transport_url())"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def cleanup():"},{"line_number":29,"context_line":"    global TRANSPORT"},{"line_number":30,"context_line":"    assert TRANSPORT is not None"},{"line_number":31,"context_line":"    TRANSPORT.cleanup()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_24afec2a","line":28,"range":{"start_line":28,"start_character":4,"end_line":28,"end_character":11},"updated":"2019-02-13 10:08:36.000000000","message":"This def is never called, or am I missing something?","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3e246a51f1b7bc011042c85d35821135412fdf58","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    TRANSPORT \u003d create_transport(get_transport_url())"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def cleanup():"},{"line_number":29,"context_line":"    global TRANSPORT"},{"line_number":30,"context_line":"    assert TRANSPORT is not None"},{"line_number":31,"context_line":"    TRANSPORT.cleanup()"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_b3bb170d","line":28,"range":{"start_line":28,"start_character":4,"end_line":28,"end_character":11},"in_reply_to":"9fdfeff1_24afec2a","updated":"2019-02-13 16:26:19.000000000","message":"It will be in the event streamer cleanup.","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"91e7404172688a5c3abc0109b80b1c78c6c8f470","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def cleanup():"},{"line_number":29,"context_line":"    global TRANSPORT"},{"line_number":30,"context_line":"    assert TRANSPORT is not None"},{"line_number":31,"context_line":"    TRANSPORT.cleanup()"},{"line_number":32,"context_line":"    TRANSPORT \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def get_transport_url(url_str\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_8462583d","line":32,"range":{"start_line":30,"start_character":0,"end_line":32,"end_character":20},"updated":"2019-02-13 10:08:36.000000000","message":"I\u0027m not a fan of the assert. Maybe following instead?\n\n  if TRANSPORT\n      TRANSPORT.cleanup()\n  TRANSPORT \u003d None\n\nHmmm, checking now other projects they also do assert.","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3e246a51f1b7bc011042c85d35821135412fdf58","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def cleanup():"},{"line_number":29,"context_line":"    global TRANSPORT"},{"line_number":30,"context_line":"    assert TRANSPORT is not None"},{"line_number":31,"context_line":"    TRANSPORT.cleanup()"},{"line_number":32,"context_line":"    TRANSPORT \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def get_transport_url(url_str\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_f3c51f8f","line":32,"range":{"start_line":30,"start_character":0,"end_line":32,"end_character":20},"in_reply_to":"9fdfeff1_8462583d","updated":"2019-02-13 16:26:19.000000000","message":"Yeah, I am not a fan of the assert either.","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"651fb4946349dc170094886b9621ec6eb34b1305","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def cleanup():"},{"line_number":29,"context_line":"    global TRANSPORT"},{"line_number":30,"context_line":"    assert TRANSPORT is not None"},{"line_number":31,"context_line":"    TRANSPORT.cleanup()"},{"line_number":32,"context_line":"    TRANSPORT \u003d None"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def get_transport_url(url_str\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_8d24af61","line":32,"range":{"start_line":30,"start_character":0,"end_line":32,"end_character":20},"in_reply_to":"9fdfeff1_f3c51f8f","updated":"2019-02-13 18:15:43.000000000","message":"While I am no fan either. I would prefer to stick with the general implementation used by all other projects (e.g. nova/neutron).","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"91e7404172688a5c3abc0109b80b1c78c6c8f470","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def get_client(target, version_cap\u003dNone, serializer\u003dNone,"},{"line_number":40,"context_line":"               call_monitor_timeout\u003dNone):"},{"line_number":41,"context_line":"    assert TRANSPORT is not None"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    return messaging.RPCClient(TRANSPORT,"},{"line_number":44,"context_line":"                               target,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_c47ce0b7","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":32},"updated":"2019-02-13 10:08:36.000000000","message":"ditto. If transport is not yet initiated, either init it here or raise a good exception.\n\n\nHmm^2. ditto.","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3e246a51f1b7bc011042c85d35821135412fdf58","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def get_client(target, version_cap\u003dNone, serializer\u003dNone,"},{"line_number":40,"context_line":"               call_monitor_timeout\u003dNone):"},{"line_number":41,"context_line":"    assert TRANSPORT is not None"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    return messaging.RPCClient(TRANSPORT,"},{"line_number":44,"context_line":"                               target,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_933cd393","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":32},"in_reply_to":"9fdfeff1_c47ce0b7","updated":"2019-02-13 16:26:19.000000000","message":"Agreed","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"91e7404172688a5c3abc0109b80b1c78c6c8f470","unresolved":false,"context_lines":[{"line_number":50,"context_line":"def get_server(target, endpoints, executor\u003d\u0027threading\u0027,"},{"line_number":51,"context_line":"               access_policy\u003ddispatcher.DefaultRPCAccessPolicy,"},{"line_number":52,"context_line":"               serializer\u003dNone):"},{"line_number":53,"context_line":"    assert TRANSPORT is not None"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    return messaging.get_rpc_server(TRANSPORT,"},{"line_number":56,"context_line":"                                    target,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_e479e4c4","line":53,"range":{"start_line":53,"start_character":4,"end_line":53,"end_character":32},"updated":"2019-02-13 10:08:36.000000000","message":"ditto","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"737db6ff688cee23819aceffab8fe54f05e9d6d2","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def get_client(target, version_cap\u003dNone, serializer\u003dNone,"},{"line_number":40,"context_line":"               call_monitor_timeout\u003dNone):"},{"line_number":41,"context_line":"    assert TRANSPORT is not None"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    return messaging.RPCClient(TRANSPORT,"},{"line_number":44,"context_line":"                               target,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_5c3993d4","line":41,"updated":"2019-02-13 22:03:42.000000000","message":"Why can\u0027t this just be a singleton-type operation and do the init() if it wasn\u0027t already done? Then we wouldn\u0027t even really need to run the init anywhere.","commit_id":"049660f4bd71f9e50a1fc71d44b4a3a37f0a0240"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"86d07b2b56744eda484ef5b5683cf97a722fb46d","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def get_client(target, version_cap\u003dNone, serializer\u003dNone,"},{"line_number":40,"context_line":"               call_monitor_timeout\u003dNone):"},{"line_number":41,"context_line":"    assert TRANSPORT is not None"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    return messaging.RPCClient(TRANSPORT,"},{"line_number":44,"context_line":"                               target,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_676724eb","line":41,"in_reply_to":"9fdfeff1_5c3993d4","updated":"2019-02-13 23:02:36.000000000","message":"We could, but I am strongly in favor of adopting the pattern every other service uses. I want to avoid doing our own thing, as it was what got us into this situation in the first place.","commit_id":"049660f4bd71f9e50a1fc71d44b4a3a37f0a0240"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"8ef2975187a4efe19227def594c14fd14058dad6","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def get_client(target, version_cap\u003dNone, serializer\u003dNone,"},{"line_number":40,"context_line":"               call_monitor_timeout\u003dNone):"},{"line_number":41,"context_line":"    assert TRANSPORT is not None"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    return messaging.RPCClient(TRANSPORT,"},{"line_number":44,"context_line":"                               target,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_6248722c","line":41,"in_reply_to":"9fdfeff1_676724eb","updated":"2019-02-14 00:16:22.000000000","message":"As a follow up we could work with the oslo team to come up with a more modern pattern.","commit_id":"049660f4bd71f9e50a1fc71d44b4a3a37f0a0240"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"737db6ff688cee23819aceffab8fe54f05e9d6d2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"def get_server(target, endpoints, executor\u003d\u0027threading\u0027,"},{"line_number":51,"context_line":"               access_policy\u003ddispatcher.DefaultRPCAccessPolicy,"},{"line_number":52,"context_line":"               serializer\u003dNone):"},{"line_number":53,"context_line":"    assert TRANSPORT is not None"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    return messaging.get_rpc_server(TRANSPORT,"},{"line_number":56,"context_line":"                                    target,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_1c2f8b88","line":53,"updated":"2019-02-13 22:03:42.000000000","message":"Same","commit_id":"049660f4bd71f9e50a1fc71d44b4a3a37f0a0240"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8f0af9344046734305f970308de2ab47268cadee","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def get_client(target, version_cap\u003dNone, serializer\u003dNone,"},{"line_number":40,"context_line":"               call_monitor_timeout\u003dNone):"},{"line_number":41,"context_line":"    assert TRANSPORT is not None"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    return messaging.RPCClient(TRANSPORT,"},{"line_number":44,"context_line":"                               target,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_e27ea2e2","line":41,"updated":"2019-02-14 00:25:15.000000000","message":"We know a more modern pattern -- it\u0027s called a singleton.\n\n```\nif not TRANSPORT:\n   init()\n```\n\nWhy are we pretending that\u0027s difficult? :P","commit_id":"a3231d55bd08afe5ccdde47f3e1894a957ce4a2b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f80518c653064928e9f84d56e960272b53aa2295","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def get_client(target, version_cap\u003dNone, serializer\u003dNone,"},{"line_number":40,"context_line":"               call_monitor_timeout\u003dNone):"},{"line_number":41,"context_line":"    assert TRANSPORT is not None"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    return messaging.RPCClient(TRANSPORT,"},{"line_number":44,"context_line":"                               target,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_a2ebba75","line":41,"in_reply_to":"9fdfeff1_e27ea2e2","updated":"2019-02-14 00:33:14.000000000","message":"I agree that it makes a lot more sense to me to just make it into a singleton. runtime assertions maybe let you fail faster if someone codes wrong, but I would prefer to error on the side of self-fixing.","commit_id":"a3231d55bd08afe5ccdde47f3e1894a957ce4a2b"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"5086d325b1782732df7f45e96fe4bff6c3ab9174","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def get_client(target, version_cap\u003dNone, serializer\u003dNone,"},{"line_number":40,"context_line":"               call_monitor_timeout\u003dNone):"},{"line_number":41,"context_line":"    if not TRANSPORT:"},{"line_number":42,"context_line":"        init()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    return messaging.RPCClient(TRANSPORT,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_413df5b8","line":41,"updated":"2019-02-16 23:37:44.000000000","message":"Nit: We probably want to change this to be \n\u003e if TRANSPORT is None:","commit_id":"6d67ecbcbd34fe8347b11819e90ad05ef071a4eb"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"9444d4f4131dddd0951d60ff932c89749f3f8779","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def get_client(target, version_cap\u003dNone, serializer\u003dNone,"},{"line_number":40,"context_line":"               call_monitor_timeout\u003dNone):"},{"line_number":41,"context_line":"    if not TRANSPORT:"},{"line_number":42,"context_line":"        init()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    return messaging.RPCClient(TRANSPORT,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_fb211ab7","line":41,"in_reply_to":"9fdfeff1_413df5b8","updated":"2019-02-18 23:27:51.000000000","message":"you\u0027re correct, fixing","commit_id":"6d67ecbcbd34fe8347b11819e90ad05ef071a4eb"}],"octavia/controller/queue/event_queue.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bc05028797159e40c9d523831b8202052248c093","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def __init__(self):"},{"line_number":61,"context_line":"        topic \u003d cfg.CONF.oslo_messaging.event_stream_topic"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # TODO(eandersson): This should move to octavia.common.rpc as well."},{"line_number":64,"context_line":"        if cfg.CONF.oslo_messaging.event_stream_transport_url:"},{"line_number":65,"context_line":"            # Use custom URL"},{"line_number":66,"context_line":"            self.transport \u003d oslo_messaging.get_rpc_transport("}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_53718ba7","line":63,"updated":"2019-02-13 16:21:41.000000000","message":"Maybe just do a __del__?\nI think this is rarely used, if ever and is planned to be removed later this year with the retirement of neutron.","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"651fb4946349dc170094886b9621ec6eb34b1305","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def __init__(self):"},{"line_number":61,"context_line":"        topic \u003d cfg.CONF.oslo_messaging.event_stream_topic"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # TODO(eandersson): This should move to octavia.common.rpc as well."},{"line_number":64,"context_line":"        if cfg.CONF.oslo_messaging.event_stream_transport_url:"},{"line_number":65,"context_line":"            # Use custom URL"},{"line_number":66,"context_line":"            self.transport \u003d oslo_messaging.get_rpc_transport("}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_6d1f0b08","line":63,"in_reply_to":"9fdfeff1_53718ba7","updated":"2019-02-13 18:15:43.000000000","message":"Sure - sounds good","commit_id":"c1652bf9b70e2ee5371d4f10604b579233b0ee0e"}],"octavia/rpc.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"8dd4a3ed1a7fdad047d4a8f866e969fe8758597b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9fdfeff1_7d6910f7","updated":"2019-02-12 21:46:33.000000000","message":"Can we move this under common?","commit_id":"508e6bc7ba3d9f75133546b7e0c3f045555debc6"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"93a1716113f8dc7492c9431599db450a6887cdd5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9fdfeff1_5b10cf00","in_reply_to":"9fdfeff1_7d6910f7","updated":"2019-02-13 05:11:21.000000000","message":"Done","commit_id":"508e6bc7ba3d9f75133546b7e0c3f045555debc6"}],"octavia/tests/unit/api/handlers/queue/test_producer.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"737db6ff688cee23819aceffab8fe54f05e9d6d2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"from octavia.tests.unit import base"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class TestProducer(base.TestRpc, base.TestCase):"},{"line_number":45,"context_line":"    def setUp(self):"},{"line_number":46,"context_line":"        super(TestProducer, self).setUp()"},{"line_number":47,"context_line":"        self.mck_model \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_fcb40738","line":44,"updated":"2019-02-13 22:03:42.000000000","message":"So this is the only one that needs BOTH TestRpc and TestCase?\nI was a little surprised TestRpc wasn\u0027t just a subclass.","commit_id":"049660f4bd71f9e50a1fc71d44b4a3a37f0a0240"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"102e14861fdcf2a9042521f16d4a4566ceeb8f33","unresolved":false,"context_lines":[{"line_number":41,"context_line":"from octavia.tests.unit import base"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class TestProducer(base.TestRpc, base.TestCase):"},{"line_number":45,"context_line":"    def setUp(self):"},{"line_number":46,"context_line":"        super(TestProducer, self).setUp()"},{"line_number":47,"context_line":"        self.mck_model \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_a7018c6c","line":44,"in_reply_to":"9fdfeff1_fcb40738","updated":"2019-02-13 23:29:04.000000000","message":"Apparently TestCase isn\u0027t needed. :p","commit_id":"049660f4bd71f9e50a1fc71d44b4a3a37f0a0240"}],"releasenotes/notes/fix-oslo-messaging-connection-leakage-aeb79474105ac116.yaml":[{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"09b42711914efd95fd9d6f576f20763b12128511","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug that caused an excessive number of RabbitMQ connections to be "},{"line_number":5,"context_line":"    opened."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9fdfeff1_41d0d01f","line":4,"range":{"start_line":4,"start_character":77,"end_line":4,"end_character":78},"updated":"2019-02-13 21:20:29.000000000","message":"Nit: this space.","commit_id":"049660f4bd71f9e50a1fc71d44b4a3a37f0a0240"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"b133abc35af186886f6da8a792bb4ef0d5763bc6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug that caused an excessive number of RabbitMQ connections to be "},{"line_number":5,"context_line":"    opened."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9fdfeff1_473f8024","line":4,"range":{"start_line":4,"start_character":77,"end_line":4,"end_character":78},"in_reply_to":"9fdfeff1_3cafefe3","updated":"2019-02-13 23:30:34.000000000","message":"Fixed o/","commit_id":"049660f4bd71f9e50a1fc71d44b4a3a37f0a0240"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"737db6ff688cee23819aceffab8fe54f05e9d6d2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a bug that caused an excessive number of RabbitMQ connections to be "},{"line_number":5,"context_line":"    opened."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9fdfeff1_3cafefe3","line":4,"range":{"start_line":4,"start_character":77,"end_line":4,"end_character":78},"in_reply_to":"9fdfeff1_41d0d01f","updated":"2019-02-13 22:03:42.000000000","message":"Hey, it\u0027s Jude! Hi! :P","commit_id":"049660f4bd71f9e50a1fc71d44b4a3a37f0a0240"}]}
