)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The host allocations query can take a very long time on just a few"},{"line_number":10,"context_line":"hundred nodes. This occurs because the ORM call in the"},{"line_number":11,"context_line":"get_reservation_allocation_by_host_ids function is not optimized. The"},{"line_number":12,"context_line":"slow down appears to come from a combination of a three-table join,"},{"line_number":13,"context_line":"retrieving all columns, and only a few filters. This patch significantly"},{"line_number":14,"context_line":"speeds up the call by breaking the query into two, selecting only"},{"line_number":15,"context_line":"necessary columns and filtering for only active and pending allocations."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_08b10345","line":13,"range":{"start_line":12,"start_character":48,"end_line":13,"end_character":46},"updated":"2019-08-27 08:11:37.000000000","message":"I would have had three distinct patch for each addressing how much performance optimization is done with each patch in each commit message.","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":12,"context_line":"slow down appears to come from a combination of a three-table join,"},{"line_number":13,"context_line":"retrieving all columns, and only a few filters. This patch significantly"},{"line_number":14,"context_line":"speeds up the call by breaking the query into two, selecting only"},{"line_number":15,"context_line":"necessary columns and filtering for only active and pending allocations."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I0fb4c8ea436c759fca1365cb1955c5225a54fd4d"},{"line_number":18,"context_line":"Closes-Bug: #1838025"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_ec536d15","line":15,"updated":"2019-08-27 08:11:37.000000000","message":"At least I\u0027d like to have some indicator how much time do we save thanks to this patch.","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"}],"blazar/db/sqlalchemy/utils.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from collections import defaultdict"},{"line_number":18,"context_line":"import datetime"},{"line_number":19,"context_line":"import sys"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_a898efcb","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":35},"updated":"2019-08-27 08:11:37.000000000","message":"import collections\n\n(See https://docs.openstack.org/charm-guide/latest/coding-guidelines.html#import-style)","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    return query.all()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def get_reservation_allocations_by_host_ids(host_ids, start_date, end_date,"},{"line_number":100,"context_line":"                                            lease_id\u003dNone,"},{"line_number":101,"context_line":"                                            reservation_id\u003dNone):"},{"line_number":102,"context_line":"    session \u003d get_session()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_0c7289ae","line":99,"range":{"start_line":99,"start_character":44,"end_line":99,"end_character":52},"updated":"2019-08-27 08:11:37.000000000","message":"We don\u0027t use this so we need to delete this and rename the func name.","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def get_reservation_allocations_by_host_ids(host_ids, start_date, end_date,"},{"line_number":100,"context_line":"                                            lease_id\u003dNone,"},{"line_number":101,"context_line":"                                            reservation_id\u003dNone):"},{"line_number":102,"context_line":"    session \u003d get_session()"},{"line_number":103,"context_line":"    border0 \u003d models.Lease.end_date \u003c start_date"},{"line_number":104,"context_line":"    border1 \u003d models.Lease.start_date \u003e end_date"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_acab35d5","line":101,"updated":"2019-08-27 08:11:37.000000000","message":"and this is getting complex and not self-describing code anymore so we need document here, IMO. And if possible I prefer to clear what is the main cause of the performance having small changes step by step rather than changing them at once.","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    reservations_query \u003d (session.query("},{"line_number":108,"context_line":"        models.Reservation.id,"},{"line_number":109,"context_line":"        models.Reservation.lease_id)"},{"line_number":110,"context_line":"        .join(models.Lease)"},{"line_number":111,"context_line":"        .filter(sa.or_("},{"line_number":112,"context_line":"            models.Lease.status.like(status.lease.ACTIVE),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_2895df88","line":109,"updated":"2019-08-27 08:11:37.000000000","message":"++. Good to have only necessary columns. I guess this is the main optimization. Another optimization is to avoid a big list in \"IN\" query from my experience, but I *guess* three tables join is okay and even better than having two queries...","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        models.Reservation.lease_id)"},{"line_number":110,"context_line":"        .join(models.Lease)"},{"line_number":111,"context_line":"        .filter(sa.or_("},{"line_number":112,"context_line":"            models.Lease.status.like(status.lease.ACTIVE),"},{"line_number":113,"context_line":"            models.Lease.status.like(status.lease.PENDING)))"},{"line_number":114,"context_line":"        .filter(sa.or_("},{"line_number":115,"context_line":"            models.Reservation.status.like(status.reservation.ACTIVE),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_0c804946","line":112,"range":{"start_line":112,"start_character":32,"end_line":112,"end_character":36},"updated":"2019-08-27 08:11:37.000000000","message":"Just question, why is this not the exact equality operation?","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"287ede542b2fb17cc6ed397844a9a14928119462","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        models.Reservation.lease_id)"},{"line_number":110,"context_line":"        .join(models.Lease)"},{"line_number":111,"context_line":"        .filter(sa.or_("},{"line_number":112,"context_line":"            models.Lease.status.like(status.lease.ACTIVE),"},{"line_number":113,"context_line":"            models.Lease.status.like(status.lease.PENDING)))"},{"line_number":114,"context_line":"        .filter(sa.or_("},{"line_number":115,"context_line":"            models.Reservation.status.like(status.reservation.ACTIVE),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_83eab471","line":112,"range":{"start_line":112,"start_character":32,"end_line":112,"end_character":36},"in_reply_to":"7faddb67_0c804946","updated":"2019-08-27 09:41:56.000000000","message":"Ah looks like just because this is a string. Ignore me.","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"889c89f0ee4621f33d743972719dfb699452daa5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        models.Reservation.lease_id)"},{"line_number":110,"context_line":"        .join(models.Lease)"},{"line_number":111,"context_line":"        .filter(sa.or_("},{"line_number":112,"context_line":"            models.Lease.status.like(status.lease.ACTIVE),"},{"line_number":113,"context_line":"            models.Lease.status.like(status.lease.PENDING)))"},{"line_number":114,"context_line":"        .filter(sa.or_("},{"line_number":115,"context_line":"            models.Reservation.status.like(status.reservation.ACTIVE),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_c3950ce5","line":112,"range":{"start_line":112,"start_character":32,"end_line":112,"end_character":36},"in_reply_to":"7faddb67_83eab471","updated":"2019-08-27 09:44:08.000000000","message":"...but looks like we can use \"\u003d\" to strings?","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        .filter(sa.or_("},{"line_number":115,"context_line":"            models.Reservation.status.like(status.reservation.ACTIVE),"},{"line_number":116,"context_line":"            models.Reservation.status.like(status.reservation.PENDING)))"},{"line_number":117,"context_line":"        .filter(~sa.or_(border0, border1)))"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    if lease_id:"},{"line_number":120,"context_line":"        reservations_query \u003d reservations_query.filter("}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_687bd77a","line":117,"range":{"start_line":117,"start_character":16,"end_line":117,"end_character":41},"updated":"2019-08-27 08:11:37.000000000","message":"Not sure why we have to change it to the negative condition?","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        models.ComputeHostAllocation.reservation_id,"},{"line_number":130,"context_line":"        models.ComputeHostAllocation.compute_host_id)"},{"line_number":131,"context_line":"        .filter(models.ComputeHostAllocation.reservation_id.in_("},{"line_number":132,"context_line":"            list(set([x[\u0027id\u0027] for x in reservations])))))"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    allocations \u003d defaultdict(list)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_c8e9ab19","line":132,"range":{"start_line":132,"start_character":21,"end_line":132,"end_character":22},"updated":"2019-08-27 08:11:37.000000000","message":"The cast to list is redundant\n\n  set(x[\u0027id\u0027] for x in reservations)","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"}],"blazar/plugins/oshosts/host_plugin.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":543,"context_line":"        host_allocations \u003d {h: [] for h in hosts}"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"        for reservation in reservations:"},{"line_number":546,"context_line":"            host_ids \u003d reservation[\u0027host_ids\u0027]"},{"line_number":547,"context_line":"            del reservation[\u0027host_ids\u0027]"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"            for host_id in host_ids:"},{"line_number":550,"context_line":"                if host_id in host_allocations.keys():"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_287b9f29","line":547,"range":{"start_line":546,"start_character":12,"end_line":547,"end_character":39},"updated":"2019-08-27 08:11:37.000000000","message":"host_ids \u003d reservation.pop(\u0027host_ids\u0027)","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fbec633762d119154054537a6aa65dadb1d19e39","unresolved":false,"context_lines":[{"line_number":547,"context_line":"            del reservation[\u0027host_ids\u0027]"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"            for host_id in host_ids:"},{"line_number":550,"context_line":"                if host_id in host_allocations.keys():"},{"line_number":551,"context_line":"                    host_allocations[host_id].append(reservation)"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        return host_allocations"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_0181f2fb","line":550,"range":{"start_line":550,"start_character":46,"end_line":550,"end_character":53},"updated":"2019-08-27 08:11:37.000000000","message":"no need","commit_id":"ae1e11f8e7d3a139ecc063957f79fd9d514101c1"}]}
