)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"9e471e23a8170089462fed6372033c9f2f1ea77f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"The janitor handles both cases by deleting the floating IP"},{"line_number":24,"context_line":"port if it has no associated floating IP and by updating"},{"line_number":25,"context_line":"the floating IP port device ID if it does have an associated"},{"line_number":26,"context_line":"floating IP."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: I684a822553a5a0c54513ca7d20ccaf3c74180593"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a71b18c_0b666a50","line":26,"updated":"2016-12-07 02:08:14.000000000","message":"How come this is not associated to any issue of any kind?","commit_id":"3bb547f4a4643ea398bfdc5c9d94a1162da455cd"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0f423b9c1166933d2a8d1a4b4a81b5368e59fdde","unresolved":false,"context_lines":[{"line_number":23,"context_line":"The janitor handles both cases by deleting the floating IP"},{"line_number":24,"context_line":"port if it has no associated floating IP and by updating"},{"line_number":25,"context_line":"the floating IP port device ID if it does have an associated"},{"line_number":26,"context_line":"floating IP."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: I684a822553a5a0c54513ca7d20ccaf3c74180593"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a71b18c_a9dba520","line":26,"in_reply_to":"3a71b18c_0b666a50","updated":"2016-12-07 14:28:53.000000000","message":"Because it\u0027s a follow-on to a patch that separated the transactions. I would have made it all one patch and the issue would not have been introduced but it would have been a nightmare to review. I can certainly file a bug though but it feels like wasting time to file bugs for follow-up patches as part of the same cycle.","commit_id":"3bb547f4a4643ea398bfdc5c9d94a1162da455cd"}],"neutron/db/l3_db.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6f577c381929cb7a29eeca3ce5893db92766b846","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def __new__(cls):"},{"line_number":96,"context_line":"        L3_NAT_dbonly_mixin._subscribe_callbacks()"},{"line_number":97,"context_line":"        inst \u003d super(L3_NAT_dbonly_mixin, cls).__new__(cls)"},{"line_number":98,"context_line":"        inst._start_janitor()"},{"line_number":99,"context_line":"        return inst"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_0154ed1e","line":98,"updated":"2016-12-05 08:24:14.000000000","message":"can we have this conditional. say for example this causes problems and there are races. how can a deployer go back to the original behavior?","commit_id":"42a46d1686b766706f5f685e2b5c7278bd0bfe33"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0870b7458a81f19c28e1b85f59e069c17bd116ca","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def __new__(cls):"},{"line_number":96,"context_line":"        L3_NAT_dbonly_mixin._subscribe_callbacks()"},{"line_number":97,"context_line":"        inst \u003d super(L3_NAT_dbonly_mixin, cls).__new__(cls)"},{"line_number":98,"context_line":"        inst._start_janitor()"},{"line_number":99,"context_line":"        return inst"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_16e6b114","line":98,"in_reply_to":"3a71b18c_0154ed1e","updated":"2016-12-06 11:22:41.000000000","message":"If there is an issue the deployer should just manually remove the port. We don\u0027t want to leave orphaned ports around if they happen.","commit_id":"42a46d1686b766706f5f685e2b5c7278bd0bfe33"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"8081f8536d2c635a0ec467fc9f6620ce03f583e5","unresolved":false,"context_lines":[{"line_number":1257,"context_line":"                    context, floatingip_dict, fip)"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":"        # TODO(kevinbenton): garbage collector that deletes ports that didn\u0027t"},{"line_number":1260,"context_line":"        # make it this far to handle servers dying in this process"},{"line_number":1261,"context_line":"        self._core_plugin.update_port(context.elevated(), external_port[\u0027id\u0027],"},{"line_number":1262,"context_line":"                                      {\u0027port\u0027: {\u0027device_id\u0027: fip_id}})"},{"line_number":1263,"context_line":"        registry.notify(resources.FLOATING_IP,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_41a12145","side":"PARENT","line":1260,"updated":"2016-12-07 03:17:41.000000000","message":"Armando - this is the reason, but yes, there should be a bug.","commit_id":"b8347e16d1db62bf79b125d89e1c7863246fcd0d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0e3bc7cea25f1c19a80f51336cce8e557ae9078b","unresolved":false,"context_lines":[{"line_number":1257,"context_line":"                    context, floatingip_dict, fip)"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":"        # TODO(kevinbenton): garbage collector that deletes ports that didn\u0027t"},{"line_number":1260,"context_line":"        # make it this far to handle servers dying in this process"},{"line_number":1261,"context_line":"        self._core_plugin.update_port(context.elevated(), external_port[\u0027id\u0027],"},{"line_number":1262,"context_line":"                                      {\u0027port\u0027: {\u0027device_id\u0027: fip_id}})"},{"line_number":1263,"context_line":"        registry.notify(resources.FLOATING_IP,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_9c9e3e61","side":"PARENT","line":1260,"in_reply_to":"3a71b18c_41a12145","updated":"2016-12-07 03:40:33.000000000","message":"No bug, but tagging this to the blueprints assigned would be customary, otherwise it feels like we\u0027re making big design impact changes fly under the radar.","commit_id":"b8347e16d1db62bf79b125d89e1c7863246fcd0d"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0f423b9c1166933d2a8d1a4b4a81b5368e59fdde","unresolved":false,"context_lines":[{"line_number":1257,"context_line":"                    context, floatingip_dict, fip)"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":"        # TODO(kevinbenton): garbage collector that deletes ports that didn\u0027t"},{"line_number":1260,"context_line":"        # make it this far to handle servers dying in this process"},{"line_number":1261,"context_line":"        self._core_plugin.update_port(context.elevated(), external_port[\u0027id\u0027],"},{"line_number":1262,"context_line":"                                      {\u0027port\u0027: {\u0027device_id\u0027: fip_id}})"},{"line_number":1263,"context_line":"        registry.notify(resources.FLOATING_IP,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_297b152b","side":"PARENT","line":1260,"in_reply_to":"3a71b18c_9c9e3e61","updated":"2016-12-07 14:28:53.000000000","message":"Under the radar? I thought we were all on board with getting rid of these transactioned calls to ML2.... \nhttps://github.com/openstack/neutron/blob/master/doc/source/devref/calling_ml2_plugin.rst","commit_id":"b8347e16d1db62bf79b125d89e1c7863246fcd0d"}],"releasenotes/notes/fip-janitor-53f0d42a7471c5ed.yaml":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"37227676d44c5a3ff3d29ba398c1d2c80f95c5e5","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    If a floating IP creation gets interrupted by"},{"line_number":4,"context_line":"    a server crash or backend failure, a port can"},{"line_number":5,"context_line":"    be left behind on the external network. Neutron"},{"line_number":6,"context_line":"    will now automatically clean these up after"},{"line_number":7,"context_line":"    approximately 10 minutes."},{"line_number":8,"context_line":"other:"},{"line_number":9,"context_line":"  - If a floating IP creation gets interrupted by"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3a71b18c_dc7b56f3","line":6,"updated":"2016-12-07 03:50:02.000000000","message":"This is misleading IMO. Before [1], this issue would not arise because the operation was done in a transaction. [1] and this change are merged in the same release, so the \u0027now\u0027 seems rather redudant. I\u0027d suggest we rephrase this to something like:\n\nDue to changes to internal L3 logic, a server crash/backend failure during FIP creation may leave dangling ports attached on external networks. These ports can be identified by a PENDING device_id. A neutron server attempts the cleanup periodically to address the issue.\n\n[1] Ia4c34c6654a5bfb64fbf06b11b0a29b018c6854f","commit_id":"3bb547f4a4643ea398bfdc5c9d94a1162da455cd"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0f423b9c1166933d2a8d1a4b4a81b5368e59fdde","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    If a floating IP creation gets interrupted by"},{"line_number":4,"context_line":"    a server crash or backend failure, a port can"},{"line_number":5,"context_line":"    be left behind on the external network. Neutron"},{"line_number":6,"context_line":"    will now automatically clean these up after"},{"line_number":7,"context_line":"    approximately 10 minutes."},{"line_number":8,"context_line":"other:"},{"line_number":9,"context_line":"  - If a floating IP creation gets interrupted by"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3a71b18c_293eb529","line":6,"in_reply_to":"3a71b18c_dc7b56f3","updated":"2016-12-07 14:28:53.000000000","message":"Done","commit_id":"3bb547f4a4643ea398bfdc5c9d94a1162da455cd"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"37227676d44c5a3ff3d29ba398c1d2c80f95c5e5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    a server crash or backend failure, a port can"},{"line_number":11,"context_line":"    be left behind on the external network. Neutron"},{"line_number":12,"context_line":"    will now automatically clean these up after"},{"line_number":13,"context_line":"    approximately 10 minutes."},{"line_number":14,"context_line":"  - Ports in this state will be visible on the external"},{"line_number":15,"context_line":"    network to admins, and will have a device_id value"},{"line_number":16,"context_line":"    of \u0027PENDING\u0027. They can also be removed manually by"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3a71b18c_fc7e52e2","line":13,"updated":"2016-12-07 03:50:02.000000000","message":"We should specify that no knobs are provided to adjust this watchdog.","commit_id":"3bb547f4a4643ea398bfdc5c9d94a1162da455cd"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0f423b9c1166933d2a8d1a4b4a81b5368e59fdde","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    a server crash or backend failure, a port can"},{"line_number":11,"context_line":"    be left behind on the external network. Neutron"},{"line_number":12,"context_line":"    will now automatically clean these up after"},{"line_number":13,"context_line":"    approximately 10 minutes."},{"line_number":14,"context_line":"  - Ports in this state will be visible on the external"},{"line_number":15,"context_line":"    network to admins, and will have a device_id value"},{"line_number":16,"context_line":"    of \u0027PENDING\u0027. They can also be removed manually by"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3a71b18c_6948adcd","line":13,"in_reply_to":"3a71b18c_fc7e52e2","updated":"2016-12-07 14:28:53.000000000","message":"Done","commit_id":"3bb547f4a4643ea398bfdc5c9d94a1162da455cd"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ee303dd042adf0154bb160a51eace1c6185405b5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    a server crash or backend failure, a port can"},{"line_number":5,"context_line":"    be left behind on the external network. Neutron"},{"line_number":6,"context_line":"    will now automatically clean these up after"},{"line_number":7,"context_line":"    approximately 10 minutes."},{"line_number":8,"context_line":"    Due to changes to internal L3 logic, a server"},{"line_number":9,"context_line":"    crash/backend failure during FIP creation may"},{"line_number":10,"context_line":"    leave dangling ports attached on external"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3a71b18c_000e23e5","line":7,"updated":"2016-12-07 16:39:17.000000000","message":"Don\u0027t think you need the above now, just restating things twice with below.","commit_id":"b84b2307e12c4f59dfd6be05b4ca2aeefe9717f3"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"4ef5c0ec17bf7cab31399305b481335a7f75f1ed","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    a server crash or backend failure, a port can"},{"line_number":5,"context_line":"    be left behind on the external network. Neutron"},{"line_number":6,"context_line":"    will now automatically clean these up after"},{"line_number":7,"context_line":"    approximately 10 minutes."},{"line_number":8,"context_line":"    Due to changes to internal L3 logic, a server"},{"line_number":9,"context_line":"    crash/backend failure during FIP creation may"},{"line_number":10,"context_line":"    leave dangling ports attached on external"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3a71b18c_203f9fd7","line":7,"in_reply_to":"3a71b18c_000e23e5","updated":"2016-12-07 16:42:31.000000000","message":"whoops. meant to remove this after pasting in Armando\u0027s replacement.","commit_id":"b84b2307e12c4f59dfd6be05b4ca2aeefe9717f3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ee303dd042adf0154bb160a51eace1c6185405b5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    be left behind on the external network. Neutron"},{"line_number":6,"context_line":"    will now automatically clean these up after"},{"line_number":7,"context_line":"    approximately 10 minutes."},{"line_number":8,"context_line":"    Due to changes to internal L3 logic, a server"},{"line_number":9,"context_line":"    crash/backend failure during FIP creation may"},{"line_number":10,"context_line":"    leave dangling ports attached on external"},{"line_number":11,"context_line":"    networks. These ports can be identified by a"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3a71b18c_205cffec","line":8,"range":{"start_line":8,"start_character":19,"end_line":8,"end_character":21},"updated":"2016-12-07 16:39:17.000000000","message":"in","commit_id":"b84b2307e12c4f59dfd6be05b4ca2aeefe9717f3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ee303dd042adf0154bb160a51eace1c6185405b5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    crash/backend failure during FIP creation may"},{"line_number":10,"context_line":"    leave dangling ports attached on external"},{"line_number":11,"context_line":"    networks. These ports can be identified by a"},{"line_number":12,"context_line":"    \u0027PENDING\u0027 device_id. A neutron server attempts"},{"line_number":13,"context_line":"    the cleanup periodically to address the issue."},{"line_number":14,"context_line":"other:"},{"line_number":15,"context_line":"  - If a floating IP creation gets interrupted by"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3a71b18c_a0ff2fa9","line":12,"range":{"start_line":12,"start_character":25,"end_line":12,"end_character":26},"updated":"2016-12-07 16:39:17.000000000","message":"The","commit_id":"b84b2307e12c4f59dfd6be05b4ca2aeefe9717f3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ee303dd042adf0154bb160a51eace1c6185405b5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    leave dangling ports attached on external"},{"line_number":11,"context_line":"    networks. These ports can be identified by a"},{"line_number":12,"context_line":"    \u0027PENDING\u0027 device_id. A neutron server attempts"},{"line_number":13,"context_line":"    the cleanup periodically to address the issue."},{"line_number":14,"context_line":"other:"},{"line_number":15,"context_line":"  - If a floating IP creation gets interrupted by"},{"line_number":16,"context_line":"    a server crash or backend failure, a port can"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3a71b18c_e0e047cf","line":13,"range":{"start_line":13,"start_character":4,"end_line":13,"end_character":7},"updated":"2016-12-07 16:39:17.000000000","message":"a","commit_id":"b84b2307e12c4f59dfd6be05b4ca2aeefe9717f3"}],"releasenotes/notes/flip-janitor-53f0d42a7471c5ed.yaml":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0e9c405de90f77e3b51d66e74ccb4b9d03ed7cd9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    If a floating IP creation gets interuppted by"},{"line_number":4,"context_line":"    a server crash or backend failure, a port can"},{"line_number":5,"context_line":"    be left behind on the external network. Neutron"},{"line_number":6,"context_line":"    will automatically clean these up after 10 minutes."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3a71b18c_de4d2bc5","line":3,"range":{"start_line":3,"start_character":35,"end_line":3,"end_character":46},"updated":"2016-12-06 14:13:26.000000000","message":"interrupted","commit_id":"c0e464247d4f296af38a3f955e8bc35cd19fe076"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0e9c405de90f77e3b51d66e74ccb4b9d03ed7cd9","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    be left behind on the external network. Neutron"},{"line_number":6,"context_line":"    will automatically clean these up after 10 minutes."},{"line_number":7,"context_line":"other:"},{"line_number":8,"context_line":"  - If a floating IP creation gets interuppted by"},{"line_number":9,"context_line":"    a server crash or backend failure, a port can"},{"line_number":10,"context_line":"    be left behind on the external network. Neutron"},{"line_number":11,"context_line":"    will automatically clean these up after 10 minutes."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3a71b18c_1eca431b","line":8,"range":{"start_line":8,"start_character":35,"end_line":8,"end_character":46},"updated":"2016-12-06 14:13:26.000000000","message":"interrupted","commit_id":"c0e464247d4f296af38a3f955e8bc35cd19fe076"}]}
