)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"842d0c9e9701663cdfb16009971d5b279743012a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"by driving the migration process by the destination host, i.e.,"},{"line_number":14,"context_line":"after the switch to postcopy mode, the destination VM is the active"},{"line_number":15,"context_line":"one and therefore any dirty pages are directly generated at the"},{"line_number":16,"context_line":"destination hosts. This patch ensures that the migration is switched"},{"line_number":17,"context_line":"to postcopy mode if the migration process is not progressing more"},{"line_number":18,"context_line":"than 10% each iteration due to memory dirtying ratio being faster"},{"line_number":19,"context_line":"than page transferring to the destination."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Partially-implements: blueprint auto-live-migration-completion"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3aaa91ec_cc40960a","line":19,"range":{"start_line":16,"start_character":19,"end_line":19,"end_character":42},"updated":"2016-06-28 09:36:43.000000000","message":"Nit: You could argue this doesn\u0027t quite describe the 10% very accurately, but the important bit is \"some threshold\" that is able to spot the lack of convergence.","commit_id":"bbad5ca5f3993f556c53cbd6658dde857ff845a2"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"cbee41a42e62ca934276d96374c4e3d749a171df","unresolved":false,"context_lines":[{"line_number":6052,"context_line":"                    progress_watermark \u003d info.data_remaining"},{"line_number":6053,"context_line":"                    progress_time \u003d now"},{"line_number":6054,"context_line":""},{"line_number":6055,"context_line":"                if migration.status !\u003d \u0027running (post-copy)\u0027:"},{"line_number":6056,"context_line":"                    if libvirt_migrate.should_abort(instance, now,"},{"line_number":6057,"context_line":"                                                    progress_time,"},{"line_number":6058,"context_line":"                                                    progress_timeout,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_1c875a13","line":6055,"updated":"2016-06-16 12:51:37.000000000","message":"I might hide the check for migration.status inside the \"should_abort\" and \"should_switch_to_postcopy\" methods, since it feels like it is a condition associated with any use of those methods.","commit_id":"15cd7806f083740aa3f06ba67bb0c527b4d61f5f"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"09bc829a0dbc5465890f0d649834b326d0361132","unresolved":false,"context_lines":[{"line_number":6069,"context_line":"                    if libvirt_migrate.should_switch_to_postcopy("},{"line_number":6070,"context_line":"                        self._is_post_copy_enabled(migration_flags),"},{"line_number":6071,"context_line":"                        info.memory_iteration, progress_watermark, "},{"line_number":6072,"context_line":"                        previous_progress_watermak):"},{"line_number":6073,"context_line":"                        LOG.info(_LI(\"Switching to post-copy mode \""},{"line_number":6074,"context_line":"                                     \"migration of instance %s\"),"},{"line_number":6075,"context_line":"                                 instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_e8a8e879","line":6072,"range":{"start_line":6072,"start_character":24,"end_line":6072,"end_character":50},"updated":"2016-06-15 21:47:20.000000000","message":"s/previous_progress_watermark","commit_id":"15cd7806f083740aa3f06ba67bb0c527b4d61f5f"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"cbee41a42e62ca934276d96374c4e3d749a171df","unresolved":false,"context_lines":[{"line_number":6072,"context_line":"                        previous_progress_watermak):"},{"line_number":6073,"context_line":"                        LOG.info(_LI(\"Switching to post-copy mode \""},{"line_number":6074,"context_line":"                                     \"migration of instance %s\"),"},{"line_number":6075,"context_line":"                                 instance\u003dinstance)"},{"line_number":6076,"context_line":"                        libvirt_migrate.trigger_postcopy_switch(guest,"},{"line_number":6077,"context_line":"                                                                instance,"},{"line_number":6078,"context_line":"                                                                migration)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_7ccbfe4a","line":6075,"updated":"2016-06-16 12:51:37.000000000","message":"Probably just move that into the trigger_postcopy_switch method","commit_id":"15cd7806f083740aa3f06ba67bb0c527b4d61f5f"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"142db90add57f8532073159eef3edb2555a0405a","unresolved":false,"context_lines":[{"line_number":6067,"context_line":"                        raise"},{"line_number":6068,"context_line":""},{"line_number":6069,"context_line":"                if libvirt_migrate.should_switch_to_postcopy("},{"line_number":6070,"context_line":"                    is_post_copy_enabled, info.memory_iteration,"},{"line_number":6071,"context_line":"                    progress_watermark, previous_progress_watermark,"},{"line_number":6072,"context_line":"                    migration.status):"},{"line_number":6073,"context_line":"                    libvirt_migrate.trigger_postcopy_switch(guest,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a9d85d2_30609d35","line":6070,"range":{"start_line":6070,"start_character":20,"end_line":6070,"end_character":40},"updated":"2016-06-20 21:44:31.000000000","message":"You can use this argument in if condition instead of passing it to should_switch_to_postcopy","commit_id":"b45b37b6f22a783daf89fc7e43f836a95901f6d8"}],"nova/virt/libvirt/migration.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"1f321df4b26b42dac730af38076ead78ff7c623f","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        return False"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    if memory_iteration \u003e 1:"},{"line_number":230,"context_line":"        progress_percentage \u003d round((previous_data_remaining -"},{"line_number":231,"context_line":"                                     current_data_remaining) *"},{"line_number":232,"context_line":"                                    100 / previous_data_remaining)"},{"line_number":233,"context_line":"        # If migration progress is less than 10% per iteration after the"},{"line_number":234,"context_line":"        # first memory page copying pass, the migration is switched to"},{"line_number":235,"context_line":"        # postcopy mode"}],"source_content_type":"text/x-python","patch_set":18,"id":"3aaa91ec_e5f71c57","line":232,"range":{"start_line":230,"start_character":8,"end_line":232,"end_character":66},"updated":"2016-06-23 15:15:09.000000000","message":"I\u0027m still a bit concerned about this, but this good start and let just tune it in the future if needed","commit_id":"b5a3730d87097b3f7cf5665c605068ea40ff1ae5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a5b952ceff34a8ca85f5b60edeca0959b1a574a4","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        # it is in post-copy active mode, i.e., the VM at"},{"line_number":336,"context_line":"        # destination is the active one"},{"line_number":337,"context_line":"        LOG.info(_LI(\"Switching to post-copy migration mode\"),"},{"line_number":338,"context_line":"                 instance\u003dinstance)"},{"line_number":339,"context_line":"        migration.status \u003d \u0027running (post-copy)\u0027"},{"line_number":340,"context_line":"        migration.save()"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3aaa91ec_e7e96b80","line":338,"updated":"2016-06-27 10:37:08.000000000","message":"Nit: would be nice if these fix ups were in the previous patch.","commit_id":"2a704d02b384b90930e99d1daa5c4d0075960494"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"842d0c9e9701663cdfb16009971d5b279743012a","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    :returns: True if migration should be aborted, False otherwise"},{"line_number":191,"context_line":"    \"\"\""},{"line_number":192,"context_line":"    if migration_status \u003d\u003d \u0027running (post-copy)\u0027:"},{"line_number":193,"context_line":"        return False"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    if (progress_timeout !\u003d 0 and"}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_0c961e94","line":192,"range":{"start_line":192,"start_character":27,"end_line":192,"end_character":48},"updated":"2016-06-28 09:36:43.000000000","message":"Nit: we do use this value in lots of places, its tempting to pull out a constant.","commit_id":"bbad5ca5f3993f556c53cbd6658dde857ff845a2"}]}
