)]}'
{"ironic_python_agent/inspect.py":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"d577d6cf0c12970e9880648f3600e2825aaba0da","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    # If we could wait at most N seconds between heartbeats (or in case of an"},{"line_number":32,"context_line":"    # error) we will instead wait r x N seconds, where r is a random value"},{"line_number":33,"context_line":"    # between these multipliers."},{"line_number":34,"context_line":"    min_jitter_multiplier \u003d 0.7"},{"line_number":35,"context_line":"    max_jitter_multiplier \u003d 1.2"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # Exponential backoff values used in case of an error. In reality we will"},{"line_number":38,"context_line":"    # only wait a portion of either of these delays based on the jitter"},{"line_number":39,"context_line":"    # multipliers."},{"line_number":40,"context_line":"    max_delay \u003d 4 * cfg.CONF.introspection_daemon_post_interval"},{"line_number":41,"context_line":"    backoff_factor \u003d 2.7"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self):"},{"line_number":44,"context_line":"        super(IronicInspection, self).__init__()"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_b82b482e","line":41,"range":{"start_line":34,"start_character":0,"end_line":41,"end_character":24},"updated":"2020-03-25 19:26:44.000000000","message":"Would be great to be able to customize the values, so operators can adjust to specific needs.\nMaybe something we can think about for a future patch","commit_id":"d5db3ba6fdde5d7b0ce2d0d076fcf183a7fc5b60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"41b6e7c326efa6dd2bf9aa29b17dec8fceb9016e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    # If we could wait at most N seconds between heartbeats (or in case of an"},{"line_number":32,"context_line":"    # error) we will instead wait r x N seconds, where r is a random value"},{"line_number":33,"context_line":"    # between these multipliers."},{"line_number":34,"context_line":"    min_jitter_multiplier \u003d 0.7"},{"line_number":35,"context_line":"    max_jitter_multiplier \u003d 1.2"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # Exponential backoff values used in case of an error. In reality we will"},{"line_number":38,"context_line":"    # only wait a portion of either of these delays based on the jitter"},{"line_number":39,"context_line":"    # multipliers."},{"line_number":40,"context_line":"    max_delay \u003d 4 * cfg.CONF.introspection_daemon_post_interval"},{"line_number":41,"context_line":"    backoff_factor \u003d 2.7"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self):"},{"line_number":44,"context_line":"        super(IronicInspection, self).__init__()"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_d76fc4f9","line":41,"range":{"start_line":34,"start_character":0,"end_line":41,"end_character":24},"in_reply_to":"df33271e_b82b482e","updated":"2020-03-29 14:49:40.000000000","message":"Yeah, I like to abstract the heartbeater\u0027s logic as well..","commit_id":"d5db3ba6fdde5d7b0ce2d0d076fcf183a7fc5b60"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"b99fded7cb80c2203ac50449a0e5f54aeea82165","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # multipliers."},{"line_number":40,"context_line":"    max_delay \u003d 4 * cfg.CONF.introspection_daemon_post_interval"},{"line_number":41,"context_line":"    backoff_factor \u003d 2.7"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self):"},{"line_number":44,"context_line":"        super(IronicInspection, self).__init__()"},{"line_number":45,"context_line":"        if bool(cfg.CONF.keyfile) !\u003d bool(cfg.CONF.certfile):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_e0ae8596","line":42,"updated":"2020-03-28 07:39:12.000000000","message":"we have almost the same code for heartbeater, maybe it\u0027s time to consider wrap this jitter into an object so we can reuse?","commit_id":"d5db3ba6fdde5d7b0ce2d0d076fcf183a7fc5b60"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"23b55dcd0fc7aee0460ae8896671141cf26e0246","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # multipliers."},{"line_number":40,"context_line":"    max_delay \u003d 4 * cfg.CONF.introspection_daemon_post_interval"},{"line_number":41,"context_line":"    backoff_factor \u003d 2.7"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self):"},{"line_number":44,"context_line":"        super(IronicInspection, self).__init__()"},{"line_number":45,"context_line":"        if bool(cfg.CONF.keyfile) !\u003d bool(cfg.CONF.certfile):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_afcc0a35","line":42,"in_reply_to":"df33271e_b764c023","updated":"2020-04-02 06:04:40.000000000","message":"Have re-read and agree :)","commit_id":"d5db3ba6fdde5d7b0ce2d0d076fcf183a7fc5b60"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"41b6e7c326efa6dd2bf9aa29b17dec8fceb9016e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # multipliers."},{"line_number":40,"context_line":"    max_delay \u003d 4 * cfg.CONF.introspection_daemon_post_interval"},{"line_number":41,"context_line":"    backoff_factor \u003d 2.7"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self):"},{"line_number":44,"context_line":"        super(IronicInspection, self).__init__()"},{"line_number":45,"context_line":"        if bool(cfg.CONF.keyfile) !\u003d bool(cfg.CONF.certfile):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_b764c023","line":42,"in_reply_to":"df33271e_e0ae8596","updated":"2020-03-29 14:49:40.000000000","message":"Maybe, but this is also just different enough I\u0027m not sure it would really apply.","commit_id":"d5db3ba6fdde5d7b0ce2d0d076fcf183a7fc5b60"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dedcc30f8b5614306b79e1d7c7da88a17c1bd8fa","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                        self.max_jitter_multiplier)"},{"line_number":68,"context_line":"                    interval \u003d interval * interval_multiplier"},{"line_number":69,"context_line":"                    log_msg \u003d \u0027sleeping before next inspection, interval: {}\u0027"},{"line_number":70,"context_line":"                    LOG.info(log_msg.format(interval))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"                    if p.poll(interval * 1000):"},{"line_number":73,"context_line":"                        if os.read(self.reader, 1).decode() \u003d\u003d \u0027a\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_ff861213","line":70,"updated":"2020-03-30 12:07:38.000000000","message":"nit: avoid pre-formatting for logging","commit_id":"d5db3ba6fdde5d7b0ce2d0d076fcf183a7fc5b60"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dedcc30f8b5614306b79e1d7c7da88a17c1bd8fa","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                                  \u0027endpoint: %(err)s\u0027,"},{"line_number":91,"context_line":"                                  {\u0027err\u0027: e})"},{"line_number":92,"context_line":"                        interval \u003d min(interval * self.backoff_factor,"},{"line_number":93,"context_line":"                                       self.max_delay)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"            finally:"},{"line_number":96,"context_line":"                os.close(self.reader)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_5f7f3e14","line":93,"updated":"2020-03-30 12:07:38.000000000","message":"you need to reset interval back to pre-backoff values on the successful path","commit_id":"d5db3ba6fdde5d7b0ce2d0d076fcf183a7fc5b60"}]}
