)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"fdd065ab35bafa8e5b25d21948b390961b6d1aef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"5bdd42af_88f1f88e","updated":"2024-09-04 21:04:18.000000000","message":"Discussed with Takashi in Oslo channel ..problem found in Kolla deployments","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"34c8e8ba926ffcc768b925609003a61c0604eb1d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d334626d_d2bf11c3","updated":"2024-09-05 09:09:27.000000000","message":"that sounds a great improvment!","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"19454cec1e06a7870e09817a30484ef982729bee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c82d6fdb_e9464968","updated":"2024-09-16 08:49:20.000000000","message":"@kajinamit@oss.nttdata.com your comments addressed.","commit_id":"0ad5c678f17ed9c688dc9d7485a5b81b5455096f"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"7d245c38ded026ff9e3da3275cec16ab4046ab36","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"85919b63_48030115","updated":"2024-09-16 12:21:52.000000000","message":"FWIW, my +1, I\u0027m not very deep into oslos amqp codebase, but the code itself looks clean and good to me and should do what is described in the commit message. Thanks!","commit_id":"0ad5c678f17ed9c688dc9d7485a5b81b5455096f"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"3020ff4a6e024837bb2c0eda16ea09a4f115899c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"196a77e0_b9b5181a","updated":"2024-09-13 21:20:31.000000000","message":"recheck as it looks unrelated","commit_id":"0ad5c678f17ed9c688dc9d7485a5b81b5455096f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4a59087673ac526cce19649984dae92fe7e8e2a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3021608f_33b469ec","updated":"2024-09-17 13:31:39.000000000","message":"Made manor fix/update in comments. Implementation looks good to me.","commit_id":"6790f702fa5a56c9d25a4becba670bf1810a4162"}],"oslo_messaging/_drivers/amqpdriver.py":[{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"d73d1abc3523adef5ea9c1c52a4bbbd0e77b777e","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        # parse number of jiffies since start"},{"line_number":71,"context_line":"        #"},{"line_number":72,"context_line":"        # https://www.man7.org/linux/man-pages//man5/proc_pid_stat.5.html"},{"line_number":73,"context_line":"        with open(f\u0027/proc/{self.pg}/stat\u0027, \u0027r\u0027) as f:"},{"line_number":74,"context_line":"            self.t \u003d int(f.read().split()[21])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def get(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"44548634_8360d2c0","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":2},"updated":"2024-09-05 21:29:14.000000000","message":"afaik you need to catch an possible ioerror here, especially since `/proc` doesn\u0027t need to be mounted at all, if we are unlucky.","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d0faf537f3951e3086cdd36436c181db1363eac3","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        # parse number of jiffies since start"},{"line_number":71,"context_line":"        #"},{"line_number":72,"context_line":"        # https://www.man7.org/linux/man-pages//man5/proc_pid_stat.5.html"},{"line_number":73,"context_line":"        with open(f\u0027/proc/{self.pg}/stat\u0027, \u0027r\u0027) as f:"},{"line_number":74,"context_line":"            self.t \u003d int(f.read().split()[21])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def get(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"67f8424b_e8b1caab","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":2},"in_reply_to":"2c963187_b31eecd3","updated":"2024-09-11 02:49:48.000000000","message":"I guess that the point is whether we should fail i case /proc/{pid}/stat can\u0027t be read. Alternative apprach is catch the exception and ignore handling of start time.","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"770e42aa685c1f066d479c4ad22b475617058f33","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        # parse number of jiffies since start"},{"line_number":71,"context_line":"        #"},{"line_number":72,"context_line":"        # https://www.man7.org/linux/man-pages//man5/proc_pid_stat.5.html"},{"line_number":73,"context_line":"        with open(f\u0027/proc/{self.pg}/stat\u0027, \u0027r\u0027) as f:"},{"line_number":74,"context_line":"            self.t \u003d int(f.read().split()[21])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def get(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"d0d5daeb_9fa99681","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":2},"in_reply_to":"44548634_8360d2c0","updated":"2024-09-09 15:30:57.000000000","message":"Do you mean to catch an FileNotFoundError and raise another error ? What\u0027s the point? I think FileNotFoundError is quite descriptive.","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"e851b44249e11dd7af5984111855b30caebc7b5b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        # parse number of jiffies since start"},{"line_number":71,"context_line":"        #"},{"line_number":72,"context_line":"        # https://www.man7.org/linux/man-pages//man5/proc_pid_stat.5.html"},{"line_number":73,"context_line":"        with open(f\u0027/proc/{self.pg}/stat\u0027, \u0027r\u0027) as f:"},{"line_number":74,"context_line":"            self.t \u003d int(f.read().split()[21])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def get(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"2c963187_b31eecd3","line":73,"range":{"start_line":73,"start_character":0,"end_line":73,"end_character":2},"in_reply_to":"d0d5daeb_9fa99681","updated":"2024-09-10 13:45:59.000000000","message":"Acknowledged","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d0faf537f3951e3086cdd36436c181db1363eac3","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        #"},{"line_number":72,"context_line":"        # https://www.man7.org/linux/man-pages//man5/proc_pid_stat.5.html"},{"line_number":73,"context_line":"        with open(f\u0027/proc/{self.pg}/stat\u0027, \u0027r\u0027) as f:"},{"line_number":74,"context_line":"            self.t \u003d int(f.read().split()[21])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def get(self):"},{"line_number":77,"context_line":"        lock_name \u003d \u0027oslo_read_shm_%s_%s\u0027 % (self.hostname, self.processname)"}],"source_content_type":"text/x-python","patch_set":5,"id":"b489a978_df00de82","line":74,"range":{"start_line":74,"start_character":17,"end_line":74,"end_character":18},"updated":"2024-09-11 02:49:48.000000000","message":"Can you please rename this to more sensible name ?","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"501ee8a98bde5bc928dab3de0573e1d908967af9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        #"},{"line_number":72,"context_line":"        # https://www.man7.org/linux/man-pages//man5/proc_pid_stat.5.html"},{"line_number":73,"context_line":"        with open(f\u0027/proc/{self.pg}/stat\u0027, \u0027r\u0027) as f:"},{"line_number":74,"context_line":"            self.t \u003d int(f.read().split()[21])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def get(self):"},{"line_number":77,"context_line":"        lock_name \u003d \u0027oslo_read_shm_%s_%s\u0027 % (self.hostname, self.processname)"}],"source_content_type":"text/x-python","patch_set":5,"id":"72adb5e7_99cb99e4","line":74,"range":{"start_line":74,"start_character":17,"end_line":74,"end_character":18},"in_reply_to":"b489a978_df00de82","updated":"2024-09-11 18:57:48.000000000","message":"Done","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d0faf537f3951e3086cdd36436c181db1363eac3","unresolved":true,"context_lines":[{"line_number":82,"context_line":"            # This function is thread and process safe thanks to lockutils"},{"line_number":83,"context_line":"            try:"},{"line_number":84,"context_line":"                with open(self.file_name, \u0027r\u0027) as f:"},{"line_number":85,"context_line":"                    pg, c, t \u003d f.readline().split(\u0027:\u0027)"},{"line_number":86,"context_line":"                    pg \u003d int(pg)"},{"line_number":87,"context_line":"                    c \u003d int(c)"},{"line_number":88,"context_line":"                    t \u003d int(t)"}],"source_content_type":"text/x-python","patch_set":5,"id":"4fe34a75_47d316c8","line":85,"range":{"start_line":85,"start_character":27,"end_line":85,"end_character":30},"updated":"2024-09-11 02:49:48.000000000","message":"ditto. ALso it may make sense to rename c to counter to make the name more sensible.","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"501ee8a98bde5bc928dab3de0573e1d908967af9","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            # This function is thread and process safe thanks to lockutils"},{"line_number":83,"context_line":"            try:"},{"line_number":84,"context_line":"                with open(self.file_name, \u0027r\u0027) as f:"},{"line_number":85,"context_line":"                    pg, c, t \u003d f.readline().split(\u0027:\u0027)"},{"line_number":86,"context_line":"                    pg \u003d int(pg)"},{"line_number":87,"context_line":"                    c \u003d int(c)"},{"line_number":88,"context_line":"                    t \u003d int(t)"}],"source_content_type":"text/x-python","patch_set":5,"id":"2695615b_4b221362","line":85,"range":{"start_line":85,"start_character":27,"end_line":85,"end_character":30},"in_reply_to":"4fe34a75_47d316c8","updated":"2024-09-11 18:57:48.000000000","message":"Done","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d0faf537f3951e3086cdd36436c181db1363eac3","unresolved":true,"context_lines":[{"line_number":94,"context_line":"            # Increment the counter"},{"line_number":95,"context_line":"            if pg \u003d\u003d self.pg and t \u003d\u003d self.t:"},{"line_number":96,"context_line":"                c +\u003d 1"},{"line_number":97,"context_line":"            elif pg \u003d\u003d self.pg and t !\u003d self.t:"},{"line_number":98,"context_line":"                # The process group is same, but time since start in jiffies"},{"line_number":99,"context_line":"                # differs, maybe service restarted ?"},{"line_number":100,"context_line":"                # Start over the counter"},{"line_number":101,"context_line":"                c \u003d 1"},{"line_number":102,"context_line":"            else:"},{"line_number":103,"context_line":"                # The process group changed, maybe service restarted?"},{"line_number":104,"context_line":"                # Start over the counter"}],"source_content_type":"text/x-python","patch_set":5,"id":"b0e9e171_a114fb5f","line":101,"range":{"start_line":97,"start_character":0,"end_line":101,"end_character":21},"updated":"2024-09-11 02:49:48.000000000","message":"I wonder if we need this dedicated block or can we merge this into the else block below ? The actual logic are same in these two blocks and having a separate block for just commenting looks redundant to me.","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"501ee8a98bde5bc928dab3de0573e1d908967af9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            # Increment the counter"},{"line_number":95,"context_line":"            if pg \u003d\u003d self.pg and t \u003d\u003d self.t:"},{"line_number":96,"context_line":"                c +\u003d 1"},{"line_number":97,"context_line":"            elif pg \u003d\u003d self.pg and t !\u003d self.t:"},{"line_number":98,"context_line":"                # The process group is same, but time since start in jiffies"},{"line_number":99,"context_line":"                # differs, maybe service restarted ?"},{"line_number":100,"context_line":"                # Start over the counter"},{"line_number":101,"context_line":"                c \u003d 1"},{"line_number":102,"context_line":"            else:"},{"line_number":103,"context_line":"                # The process group changed, maybe service restarted?"},{"line_number":104,"context_line":"                # Start over the counter"}],"source_content_type":"text/x-python","patch_set":5,"id":"a8f624c4_fad4b093","line":101,"range":{"start_line":97,"start_character":0,"end_line":101,"end_character":21},"in_reply_to":"b0e9e171_a114fb5f","updated":"2024-09-11 18:57:48.000000000","message":"Done","commit_id":"aab853a62cc185ccf82a50e92859b22a0728cf5f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7bcfb1cf9a506283df2d6533587020fa6fdd1ebc","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            if pg \u003d\u003d self.pg and start_time \u003d\u003d self.start_time:"},{"line_number":96,"context_line":"                counter +\u003d 1"},{"line_number":97,"context_line":"            else:"},{"line_number":98,"context_line":"                # The process group is same, but time since start in jiffies"},{"line_number":99,"context_line":"                # differs, maybe service restarted ?"},{"line_number":100,"context_line":"                # Start over the counter"},{"line_number":101,"context_line":"                counter \u003d 1"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"89b69962_53b4d66a","line":99,"range":{"start_line":98,"start_character":0,"end_line":99,"end_character":52},"updated":"2024-09-17 13:31:04.000000000","message":"This is not correct because this block catches the case where the process group is changed.","commit_id":"0ad5c678f17ed9c688dc9d7485a5b81b5455096f"}]}
