)]}'
{"octavia/controller/housekeeping/house_keeping.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0ae19be102044adc7ffb528d08d5ff4383da1fbf","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        exp_timestamp \u003d datetime.datetime.utcnow() - exp_age"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        for amp in amphora:"},{"line_number":79,"context_line":"            if amp.updated_at \u003c exp_timestamp:"},{"line_number":80,"context_line":"                LOG.info(\u0027Attempting to delete Amphora id : %s\u0027, amp.id)"},{"line_number":81,"context_line":"                self.amp_repo.delete(session, id\u003damp.id)"},{"line_number":82,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_e5e28801","line":79,"updated":"2018-03-27 23:46:47.000000000","message":"This does significantly change the behavior of the cleanup code. Before we would not delete the amphora record until after we had stopped seeing heartbeats from the amphora for the expiry_age.\nThis had the benefit of not deleting the associated amphora record if the amp was still sending heartbeats after we thought it was DELETED.\nThis seems like a benefit to the operator.","commit_id":"fcb602bb2227b7c019c0e6ed26400f81277c95e7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7dbec6f03ff5efabc254a38134a221f1f5676c9d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        exp_timestamp \u003d datetime.datetime.utcnow() - exp_age"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        for amp in amphora:"},{"line_number":79,"context_line":"            if amp.updated_at \u003c exp_timestamp:"},{"line_number":80,"context_line":"                LOG.info(\u0027Attempting to delete Amphora id : %s\u0027, amp.id)"},{"line_number":81,"context_line":"                self.amp_repo.delete(session, id\u003damp.id)"},{"line_number":82,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_a613335c","line":79,"in_reply_to":"bf659307_e5e28801","updated":"2018-03-28 05:08:39.000000000","message":"Hmm, I agree that if it is still getting heartbeats, we should keep it. But, the previous system didn\u0027t respect the expiry time at all, because if you look a little deeper, we were *deleting* the health record on failover, meaning amps would be almost immediately purged by housekeeping.\nMaybe we need a hybrid approach?","commit_id":"fcb602bb2227b7c019c0e6ed26400f81277c95e7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"2a3a720eb53ae415d59017c8d2ccdf24ad1bb238","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                    self.amp_health_repo.delete(session, amphora_id\u003damp.id)"},{"line_number":84,"context_line":"                except sqlalchemy_exceptions.NoResultFound:"},{"line_number":85,"context_line":"                    pass  # Best effort delete, this record might not exist"},{"line_number":86,"context_line":"                LOG.info(\u0027Deleted Amphora id : %s\u0027, amp.id)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def cleanup_load_balancers(self):"},{"line_number":89,"context_line":"        \"\"\"Checks the DB for old load balancers and triggers their removal.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_a5d6d0f0","line":86,"range":{"start_line":86,"start_character":25,"end_line":86,"end_character":45},"updated":"2018-03-27 23:49:45.000000000","message":"This is a lame log message.\nMaybe \"Purged DELETED status record for Amphora ID:\"?","commit_id":"fcb602bb2227b7c019c0e6ed26400f81277c95e7"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7dbec6f03ff5efabc254a38134a221f1f5676c9d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                    self.amp_health_repo.delete(session, amphora_id\u003damp.id)"},{"line_number":84,"context_line":"                except sqlalchemy_exceptions.NoResultFound:"},{"line_number":85,"context_line":"                    pass  # Best effort delete, this record might not exist"},{"line_number":86,"context_line":"                LOG.info(\u0027Deleted Amphora id : %s\u0027, amp.id)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def cleanup_load_balancers(self):"},{"line_number":89,"context_line":"        \"\"\"Checks the DB for old load balancers and triggers their removal.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_8303810f","line":86,"range":{"start_line":86,"start_character":25,"end_line":86,"end_character":45},"in_reply_to":"bf659307_a5d6d0f0","updated":"2018-03-28 05:08:39.000000000","message":"Yeah, I can see \"Purge\" being a better verb. I\u0027ll update it a bit on the next spin.","commit_id":"fcb602bb2227b7c019c0e6ed26400f81277c95e7"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"529b892a941cdca7e82f4d3e790f0aeabdb557ae","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            # both expired AND no longer receiving zombie heartbeats."},{"line_number":83,"context_line":"            if self.amp_health_repo.check_amphora_health_expired("},{"line_number":84,"context_line":"                    session, amp.id, exp_age):"},{"line_number":85,"context_line":"                LOG.info(\u0027Attempting to purge db record for Amphora ID: %s\u0027,"},{"line_number":86,"context_line":"                         amp.id)"},{"line_number":87,"context_line":"                self.amp_repo.delete(session, id\u003damp.id)"},{"line_number":88,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_db92f99f","line":85,"updated":"2018-06-05 20:56:18.000000000","message":"Really wish this was a debug as it\u0027s a bit duplicate/noisy with the log entry below.","commit_id":"06ddbd16f208fcab3216023ef4146c633c2d38a1"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"88e93bdb42eae1586dc85a616d2e4969f9051913","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            # both expired AND no longer receiving zombie heartbeats."},{"line_number":83,"context_line":"            if self.amp_health_repo.check_amphora_health_expired("},{"line_number":84,"context_line":"                    session, amp.id, exp_age):"},{"line_number":85,"context_line":"                LOG.info(\u0027Attempting to purge db record for Amphora ID: %s\u0027,"},{"line_number":86,"context_line":"                         amp.id)"},{"line_number":87,"context_line":"                self.amp_repo.delete(session, id\u003damp.id)"},{"line_number":88,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_1bb951e8","line":85,"in_reply_to":"5f7c97a3_db92f99f","updated":"2018-06-05 21:03:28.000000000","message":"Done","commit_id":"06ddbd16f208fcab3216023ef4146c633c2d38a1"}],"octavia/controller/worker/tasks/lifecycle_tasks.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0ae19be102044adc7ffb528d08d5ff4383da1fbf","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def revert(self, amphora_id, *args, **kwargs):"},{"line_number":35,"context_line":"        self.task_utils.mark_amphora_status_error(amphora_id)"},{"line_number":36,"context_line":"        self.task_utils.unmark_amphora_health_busy(amphora_id)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class AmphoraToErrorOnRevertTask(AmphoraIDToErrorOnRevertTask):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_45a254b0","side":"PARENT","line":36,"updated":"2018-03-27 23:46:47.000000000","message":"So this change means HM will never try to fail this over again. At least not until an operator takes action. Is this what we want? One and done?","commit_id":"df9770a77377e1618e532b2553ea30cea3bf2eca"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7dbec6f03ff5efabc254a38134a221f1f5676c9d","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def revert(self, amphora_id, *args, **kwargs):"},{"line_number":35,"context_line":"        self.task_utils.mark_amphora_status_error(amphora_id)"},{"line_number":36,"context_line":"        self.task_utils.unmark_amphora_health_busy(amphora_id)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class AmphoraToErrorOnRevertTask(AmphoraIDToErrorOnRevertTask):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_0318d17e","side":"PARENT","line":36,"in_reply_to":"bf659307_45a254b0","updated":"2018-03-28 05:08:39.000000000","message":"Without operator intervention (manually flipping the bit), yes. I believe that is what we decided was the best choice at the PTG... Anyone else care to comment?","commit_id":"df9770a77377e1618e532b2553ea30cea3bf2eca"}],"octavia/db/repositories.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"529b892a941cdca7e82f4d3e790f0aeabdb557ae","unresolved":false,"context_lines":[{"line_number":956,"context_line":""},{"line_number":957,"context_line":"    def get_all_deleted_expiring(self, session, exp_age\u003dNone):"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        \"\"\"Retrieves a list of entities from the database."},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"        :param session: A Sql Alchemy database session."},{"line_number":962,"context_line":"        :param exp_age: A standard datetime delta which is used to see for how"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_fbc9f5ab","line":959,"range":{"start_line":959,"start_character":11,"end_line":959,"end_character":58},"updated":"2018-06-05 20:56:18.000000000","message":"This could be slightly more descriptive... lol","commit_id":"06ddbd16f208fcab3216023ef4146c633c2d38a1"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"88e93bdb42eae1586dc85a616d2e4969f9051913","unresolved":false,"context_lines":[{"line_number":956,"context_line":""},{"line_number":957,"context_line":"    def get_all_deleted_expiring(self, session, exp_age\u003dNone):"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        \"\"\"Retrieves a list of entities from the database."},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"        :param session: A Sql Alchemy database session."},{"line_number":962,"context_line":"        :param exp_age: A standard datetime delta which is used to see for how"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_7bc72566","line":959,"range":{"start_line":959,"start_character":11,"end_line":959,"end_character":58},"in_reply_to":"5f7c97a3_fbc9f5ab","updated":"2018-06-05 21:03:28.000000000","message":"Erg, sorry. Renaming the function actually to make it more descriptive as well. This hurts even ME, don\u0027t know what I was thinking.","commit_id":"06ddbd16f208fcab3216023ef4146c633c2d38a1"}]}
