)]}'
{"swift/obj/replicator.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"0516ea6f9033e7d17e708f267602850cab2fc308","unresolved":false,"context_lines":[{"line_number":1128,"context_line":"            if not per_disk_stats:"},{"line_number":1129,"context_line":"                continue"},{"line_number":1130,"context_line":"            complete \u0026\u003d all(ld in per_disk_stats"},{"line_number":1131,"context_line":"                            for ld in self.all_local_devices)"},{"line_number":1132,"context_line":"            per_mode_stats[replicator_mode] \u003d per_disk_stats"},{"line_number":1133,"context_line":"            # Clear out entries for old local devices that we no longer have"},{"line_number":1134,"context_line":"            devices_to_remove \u003d (set(per_disk_stats) -"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_4b08eed7","line":1131,"updated":"2018-07-05 06:51:04.000000000","message":"If this replicator happens to be a MODE_HANDOFFS_ONLY only devices that will generate these jobs will be ones that have a handoff. Which I assume most the time isn\u0027t all_local_devices. So would this tend to make complete False most of the time?\n\nOr am I missing something obvious?","commit_id":"b51625e9172f4d0fc27ccd10a7316605ca5334bc"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"f201ead93d7ddd7382b411ed1a0c647718d08dc1","unresolved":false,"context_lines":[{"line_number":1128,"context_line":"            if not per_disk_stats:"},{"line_number":1129,"context_line":"                continue"},{"line_number":1130,"context_line":"            complete \u0026\u003d all(ld in per_disk_stats"},{"line_number":1131,"context_line":"                            for ld in self.all_local_devices)"},{"line_number":1132,"context_line":"            per_mode_stats[replicator_mode] \u003d per_disk_stats"},{"line_number":1133,"context_line":"            # Clear out entries for old local devices that we no longer have"},{"line_number":1134,"context_line":"            devices_to_remove \u003d (set(per_disk_stats) -"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6976110f","line":1131,"in_reply_to":"5f7c97a3_4b08eed7","updated":"2018-07-05 12:02:38.000000000","message":"update_recon writes stats for every device regardless of whether any jobs were collected for that device, so each worker should write a section for all the devices it handled and eventually all devices should appear on the recon data for each mode.","commit_id":"b51625e9172f4d0fc27ccd10a7316605ca5334bc"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d90675f5148debb73735d3fda44f008909d493a1","unresolved":false,"context_lines":[{"line_number":1136,"context_line":"            if devices_to_remove:"},{"line_number":1137,"context_line":"                recon_update[section] \u003d {dtr: {} for dtr in devices_to_remove}"},{"line_number":1138,"context_line":""},{"line_number":1139,"context_line":"        if MODE_PRIMARIES_ONLY in per_mode_stats:"},{"line_number":1140,"context_line":"            complete \u0026\u003d MODE_HANDOFFS_ONLY in per_mode_stats"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"        min_repl_last \u003d float(\u0027inf\u0027)"},{"line_number":1143,"context_line":"        min_repl_time \u003d float(\u0027inf\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_0274229b","line":1140,"range":{"start_line":1139,"start_character":8,"end_line":1140,"end_character":60},"updated":"2018-07-04 17:18:42.000000000","message":"needs a test","commit_id":"b51625e9172f4d0fc27ccd10a7316605ca5334bc"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"f201ead93d7ddd7382b411ed1a0c647718d08dc1","unresolved":false,"context_lines":[{"line_number":1136,"context_line":"            if devices_to_remove:"},{"line_number":1137,"context_line":"                recon_update[section] \u003d {dtr: {} for dtr in devices_to_remove}"},{"line_number":1138,"context_line":""},{"line_number":1139,"context_line":"        if MODE_PRIMARIES_ONLY in per_mode_stats:"},{"line_number":1140,"context_line":"            complete \u0026\u003d MODE_HANDOFFS_ONLY in per_mode_stats"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"        min_repl_last \u003d float(\u0027inf\u0027)"},{"line_number":1143,"context_line":"        min_repl_time \u003d float(\u0027inf\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_8fba8dbd","line":1140,"range":{"start_line":1139,"start_character":8,"end_line":1140,"end_character":60},"in_reply_to":"5f7c97a3_0274229b","updated":"2018-07-05 12:02:38.000000000","message":"Done","commit_id":"b51625e9172f4d0fc27ccd10a7316605ca5334bc"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5f3069dad3b216a9fd620a2d8adf1eb67c16c01b","unresolved":false,"context_lines":[{"line_number":1152,"context_line":"                        data[\u0027object_replication_time\u0027])"},{"line_number":1153,"context_line":"                    min_repl_last \u003d min("},{"line_number":1154,"context_line":"                        min_repl_last, data[\u0027object_replication_last\u0027])"},{"line_number":1155,"context_line":"            # the replication time for handoffs_only mode could be much smaller"},{"line_number":1156,"context_line":"            # than primaries_only mode, or vice-versa, so to avoid distorted"},{"line_number":1157,"context_line":"            # results sum the replication times for each mode on a device"},{"line_number":1158,"context_line":"            # before reporting the min time across all devices"},{"line_number":1159,"context_line":"            min_repl_time \u003d min("},{"line_number":1160,"context_line":"                [sum(repl_times) for repl_times in dev_repl_times.values()] +"},{"line_number":1161,"context_line":"                [float(\u0027inf\u0027)]"},{"line_number":1162,"context_line":"            )"},{"line_number":1163,"context_line":"            recon_update[\u0027replication_stats\u0027] \u003d aggregated.to_recon()"},{"line_number":1164,"context_line":"            recon_update[\u0027replication_last\u0027] \u003d min_repl_last"},{"line_number":1165,"context_line":"            recon_update[\u0027replication_time\u0027] \u003d min_repl_time"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_9264f64a","line":1162,"range":{"start_line":1155,"start_character":12,"end_line":1162,"end_character":13},"updated":"2018-07-05 12:59:56.000000000","message":"I\u0027m not sure what the best metric is to report here. The existing reports the *min* per disk time which will tend to be small is handoffs_only mode workers are considered separately. That doesn\u0027t seem useful, hence I went for the sum of the handoffs and primary node times, but an alternative might be the max.\n\nOn a related note, the reconstructor reports something very different i.e. the time elapsed between the first worker starting and the last worker finishing. So the two daemons\u0027 stats are quite inconsistent.","commit_id":"b77d696de6b4e3a60e2af15ed991002216c72be6"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"301d6add5490c4ddf638b575503b3033605e346d","unresolved":false,"context_lines":[{"line_number":1152,"context_line":"                        data[\u0027object_replication_time\u0027])"},{"line_number":1153,"context_line":"                    min_repl_last \u003d min("},{"line_number":1154,"context_line":"                        min_repl_last, data[\u0027object_replication_last\u0027])"},{"line_number":1155,"context_line":"            # the replication time for handoffs_only mode could be much smaller"},{"line_number":1156,"context_line":"            # than primaries_only mode, or vice-versa, so to avoid distorted"},{"line_number":1157,"context_line":"            # results sum the replication times for each mode on a device"},{"line_number":1158,"context_line":"            # before reporting the min time across all devices"},{"line_number":1159,"context_line":"            min_repl_time \u003d min("},{"line_number":1160,"context_line":"                [sum(repl_times) for repl_times in dev_repl_times.values()] +"},{"line_number":1161,"context_line":"                [float(\u0027inf\u0027)]"},{"line_number":1162,"context_line":"            )"},{"line_number":1163,"context_line":"            recon_update[\u0027replication_stats\u0027] \u003d aggregated.to_recon()"},{"line_number":1164,"context_line":"            recon_update[\u0027replication_last\u0027] \u003d min_repl_last"},{"line_number":1165,"context_line":"            recon_update[\u0027replication_time\u0027] \u003d min_repl_time"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_b749d68e","line":1162,"range":{"start_line":1155,"start_character":12,"end_line":1162,"end_character":13},"in_reply_to":"5f7c97a3_9264f64a","updated":"2018-07-06 00:34:18.000000000","message":"Yeah I like the reconstuctors version. If complete calculate the earilest start and latest end. That is your cycle. The quickest time just seems wrong and might be skrewing everyones stats.","commit_id":"b77d696de6b4e3a60e2af15ed991002216c72be6"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"bba23f72f1e7228d2b9e41079e6f35d0c826090e","unresolved":false,"context_lines":[{"line_number":1152,"context_line":"                        data[\u0027object_replication_time\u0027])"},{"line_number":1153,"context_line":"                    min_repl_last \u003d min("},{"line_number":1154,"context_line":"                        min_repl_last, data[\u0027object_replication_last\u0027])"},{"line_number":1155,"context_line":"            # the replication time for handoffs_only mode could be much smaller"},{"line_number":1156,"context_line":"            # than primaries_only mode, or vice-versa, so to avoid distorted"},{"line_number":1157,"context_line":"            # results sum the replication times for each mode on a device"},{"line_number":1158,"context_line":"            # before reporting the min time across all devices"},{"line_number":1159,"context_line":"            min_repl_time \u003d min("},{"line_number":1160,"context_line":"                [sum(repl_times) for repl_times in dev_repl_times.values()] +"},{"line_number":1161,"context_line":"                [float(\u0027inf\u0027)]"},{"line_number":1162,"context_line":"            )"},{"line_number":1163,"context_line":"            recon_update[\u0027replication_stats\u0027] \u003d aggregated.to_recon()"},{"line_number":1164,"context_line":"            recon_update[\u0027replication_last\u0027] \u003d min_repl_last"},{"line_number":1165,"context_line":"            recon_update[\u0027replication_time\u0027] \u003d min_repl_time"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_ebec43bd","line":1162,"range":{"start_line":1155,"start_character":12,"end_line":1162,"end_character":13},"in_reply_to":"5f7c97a3_b749d68e","updated":"2018-07-06 06:26:50.000000000","message":"So a quick hack to change to the reconstructor way of calculating should be something like: http://paste.openstack.org/show/725183/","commit_id":"b77d696de6b4e3a60e2af15ed991002216c72be6"}]}
