)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"79c1b363b74ea1ec3f8fb56b45c39225a921259b","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-05-09 10:44:27 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add version field implement for plugin and all objects"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I6e653ab29dc2ce2f70a4aac0ec718aa1127d3efe"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"dab17558_d75647d1","line":8,"updated":"2016-05-09 03:12:01.000000000","message":"Suggest to add a link for bp to trace its status. This can be applied to all your patches.\n\nImplements: blueprint keep-db-consistency","commit_id":"f233a0a310b4f911e572c694497161467f46f9ca"}],"dragonflow/db/api_nb.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"04a90d10ec25bc1bc3152a021dd401522d959d43","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        subnet \u003d {}"},{"line_number":352,"context_line":"        subnet[\u0027id\u0027] \u003d id"},{"line_number":353,"context_line":"        subnet[\u0027lswitch\u0027] \u003d lswitch_name"},{"line_number":354,"context_line":"        for col, val in columns.items():"},{"line_number":355,"context_line":"            if col \u003d\u003d \u0027nw_version\u0027:"},{"line_number":356,"context_line":"                network_version \u003d val"},{"line_number":357,"context_line":"                continue"},{"line_number":358,"context_line":"            subnet[col] \u003d val"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        subnets \u003d lswitch.get(\u0027subnets\u0027, [])"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_26695ebf","line":357,"range":{"start_line":354,"start_character":7,"end_line":357,"end_character":24},"updated":"2016-05-09 08:18:58.000000000","message":"Could you explain why you wanna iterate the key and continue when you find nw_version?","commit_id":"f030a0593517daabbcf534c62d545bf95a804c1f"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"a668b24a8dbac631929c615835668d61bc9c8c1f","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        subnet \u003d {}"},{"line_number":352,"context_line":"        subnet[\u0027id\u0027] \u003d id"},{"line_number":353,"context_line":"        subnet[\u0027lswitch\u0027] \u003d lswitch_name"},{"line_number":354,"context_line":"        for col, val in columns.items():"},{"line_number":355,"context_line":"            if col \u003d\u003d \u0027nw_version\u0027:"},{"line_number":356,"context_line":"                network_version \u003d val"},{"line_number":357,"context_line":"                continue"},{"line_number":358,"context_line":"            subnet[col] \u003d val"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        subnets \u003d lswitch.get(\u0027subnets\u0027, [])"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_46e3c233","line":357,"range":{"start_line":354,"start_character":7,"end_line":357,"end_character":24},"in_reply_to":"dab17558_26695ebf","updated":"2016-05-09 08:22:57.000000000","message":"the nw_version here is not the version of the subnet, it is the network version, so I must continue here, otherwise the key,value pair will be written into subnet object, that\u0027s not correct and unnecessary:)","commit_id":"f030a0593517daabbcf534c62d545bf95a804c1f"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"009057b40c0bdc0f45b49f0d793f9b50a8c5e902","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        subnet \u003d {}"},{"line_number":352,"context_line":"        subnet[\u0027id\u0027] \u003d id"},{"line_number":353,"context_line":"        subnet[\u0027lswitch\u0027] \u003d lswitch_name"},{"line_number":354,"context_line":"        for col, val in columns.items():"},{"line_number":355,"context_line":"            if col \u003d\u003d \u0027nw_version\u0027:"},{"line_number":356,"context_line":"                network_version \u003d val"},{"line_number":357,"context_line":"                continue"},{"line_number":358,"context_line":"            subnet[col] \u003d val"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        subnets \u003d lswitch.get(\u0027subnets\u0027, [])"}],"source_content_type":"text/x-python","patch_set":11,"id":"dab17558_a6d38e37","line":357,"range":{"start_line":354,"start_character":7,"end_line":357,"end_character":24},"in_reply_to":"dab17558_46e3c233","updated":"2016-05-09 08:31:24.000000000","message":"Ok, I didn\u0027t notice this logic. Thanks.","commit_id":"f030a0593517daabbcf534c62d545bf95a804c1f"}],"dragonflow/db/neutron/migration/alembic_migrations/versions/mitaka/expand/d82aa951c391-dragonflow-version-version.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1e738e5453d1cbadaf85da4a1029755bd026e0cb","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations\r"},{"line_number":13,"context_line":"#    under the License.\r"},{"line_number":14,"context_line":"#\r"},{"line_number":15,"context_line":"\r"},{"line_number":16,"context_line":"\"\"\"Dragonflow versioned objects\r"},{"line_number":17,"context_line":"Revision ID: f03c862d2645\r"},{"line_number":18,"context_line":"Revises: 1dee3dc24674\r"}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_96ddc044","line":15,"updated":"2016-05-14 06:57:01.000000000","message":"suggest to change the file name to \u0027d82...-dragonflow-versionedobjects.py\u0027\nand please help change the distributed lock file name to \u0027f03...-dragonflow-lockedobjects.py\u0027\nI think it is more reasonable.","commit_id":"2894a6022748ef827706d339023be6fcd2899394"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1e738e5453d1cbadaf85da4a1029755bd026e0cb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#\r"},{"line_number":15,"context_line":"\r"},{"line_number":16,"context_line":"\"\"\"Dragonflow versioned objects\r"},{"line_number":17,"context_line":"Revision ID: f03c862d2645\r"},{"line_number":18,"context_line":"Revises: 1dee3dc24674\r"},{"line_number":19,"context_line":"Create Date: 2016-02-18 10:09:29.112343\r"},{"line_number":20,"context_line":"\"\"\"\r"}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_b61ba41b","line":17,"range":{"start_line":17,"start_character":13,"end_line":17,"end_character":25},"updated":"2016-05-14 06:57:01.000000000","message":"change to \u0027d82...\u0027","commit_id":"2894a6022748ef827706d339023be6fcd2899394"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1e738e5453d1cbadaf85da4a1029755bd026e0cb","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\r"},{"line_number":16,"context_line":"\"\"\"Dragonflow versioned objects\r"},{"line_number":17,"context_line":"Revision ID: f03c862d2645\r"},{"line_number":18,"context_line":"Revises: 1dee3dc24674\r"},{"line_number":19,"context_line":"Create Date: 2016-02-18 10:09:29.112343\r"},{"line_number":20,"context_line":"\"\"\"\r"},{"line_number":21,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_161b901c","line":18,"range":{"start_line":18,"start_character":9,"end_line":18,"end_character":21},"updated":"2016-05-14 06:57:01.000000000","message":"change to \u0027f03...\u0027","commit_id":"2894a6022748ef827706d339023be6fcd2899394"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1e738e5453d1cbadaf85da4a1029755bd026e0cb","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\"Dragonflow versioned objects\r"},{"line_number":17,"context_line":"Revision ID: f03c862d2645\r"},{"line_number":18,"context_line":"Revises: 1dee3dc24674\r"},{"line_number":19,"context_line":"Create Date: 2016-02-18 10:09:29.112343\r"},{"line_number":20,"context_line":"\"\"\"\r"},{"line_number":21,"context_line":"\r"},{"line_number":22,"context_line":"# revision identifiers, used by Alembic.\r"}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_f6152ce5","line":19,"range":{"start_line":19,"start_character":13,"end_line":19,"end_character":39},"updated":"2016-05-14 06:57:01.000000000","message":"change the date.","commit_id":"2894a6022748ef827706d339023be6fcd2899394"}],"dragonflow/db/neutron/migration/alembic_migrations/versions/mitaka/expand/f03c862d2645-dragonflow-version-lock.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"9a14c36dbc74a638916ad212215f8a15fbbcaa87","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        sa.Column(\u0027session_id\u0027, sa.BigInteger, default\u003d0),"},{"line_number":36,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime)"},{"line_number":37,"context_line":"    )"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    op.create_table("},{"line_number":40,"context_line":"        \u0027dfversionobjects\u0027,"},{"line_number":41,"context_line":"        sa.Column(\u0027object_uuid\u0027, sa.String(36), primary_key\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":16,"id":"dab17558_b3b457f2","line":38,"updated":"2016-05-14 03:28:45.000000000","message":"Please add a new alembic script for this table. If someone installed a previous version of dragonflow, you breaks the back-compatibility.","commit_id":"65e32ef3addef1c7bfac02ce9cae6a828aa98d87"}],"dragonflow/db/neutron/versionobjects_db.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"aeb48bbc9f097dbcf1dbc1976cfc54f22932b000","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        session.add(row)\r"},{"line_number":28,"context_line":"        session.flush()\r"},{"line_number":29,"context_line":"        return 0\r"},{"line_number":30,"context_line":"    except db_exc.DBDuplicateEntry:\r"},{"line_number":31,"context_line":"        return 0\r"},{"line_number":32,"context_line":"\r"},{"line_number":33,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_0bc8ac21","line":30,"updated":"2016-05-08 19:48:59.000000000","message":"Seeing as this should never really happen, consider adding an error or warning log.","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"b39f542eb301f3d11ea2bf113fd9ddfc9e8da0d5","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    try:\r"},{"line_number":36,"context_line":"        row \u003d session.query(models.DFVersionObjects).filter_by(\r"},{"line_number":37,"context_line":"                object_uuid\u003dobj_id).one()\r"},{"line_number":38,"context_line":"        new_version \u003d row.version + 1\r"},{"line_number":39,"context_line":"        row \u003d models.DFVersionObjects(object_uuid\u003dobj_id,\r"},{"line_number":40,"context_line":"                                      version\u003dnew_version)\r"},{"line_number":41,"context_line":"        session.merge(row)\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_12ef4588","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":37},"updated":"2016-05-08 12:33:05.000000000","message":"Please add a check for wrap around","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"8eb30eebbc6325c1958810b98f151d4b072e81b6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    try:\r"},{"line_number":36,"context_line":"        row \u003d session.query(models.DFVersionObjects).filter_by(\r"},{"line_number":37,"context_line":"                object_uuid\u003dobj_id).one()\r"},{"line_number":38,"context_line":"        new_version \u003d row.version + 1\r"},{"line_number":39,"context_line":"        row \u003d models.DFVersionObjects(object_uuid\u003dobj_id,\r"},{"line_number":40,"context_line":"                                      version\u003dnew_version)\r"},{"line_number":41,"context_line":"        session.merge(row)\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_9cc50490","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":37},"in_reply_to":"dab17558_12ef4588","updated":"2016-05-09 02:16:27.000000000","message":"I have tried the NoResultFound exception, should I check other situations? :)","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"fdf67e1d07cbe2541b077c16510fb6df43e58190","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    try:\r"},{"line_number":36,"context_line":"        row \u003d session.query(models.DFVersionObjects).filter_by(\r"},{"line_number":37,"context_line":"                object_uuid\u003dobj_id).one()\r"},{"line_number":38,"context_line":"        new_version \u003d row.version + 1\r"},{"line_number":39,"context_line":"        row \u003d models.DFVersionObjects(object_uuid\u003dobj_id,\r"},{"line_number":40,"context_line":"                                      version\u003dnew_version)\r"},{"line_number":41,"context_line":"        session.merge(row)\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_f2f36f9c","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":37},"in_reply_to":"dab17558_8832cb0e","updated":"2016-05-10 01:24:46.000000000","message":"oh sorry, I misunderstand the meaning of \u0027wrap around\u0027, ok, I\u0027ll modify it","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"d36daed2d0768ea35c1833287ab8935871952e49","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    try:\r"},{"line_number":36,"context_line":"        row \u003d session.query(models.DFVersionObjects).filter_by(\r"},{"line_number":37,"context_line":"                object_uuid\u003dobj_id).one()\r"},{"line_number":38,"context_line":"        new_version \u003d row.version + 1\r"},{"line_number":39,"context_line":"        row \u003d models.DFVersionObjects(object_uuid\u003dobj_id,\r"},{"line_number":40,"context_line":"                                      version\u003dnew_version)\r"},{"line_number":41,"context_line":"        session.merge(row)\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_8832cb0e","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":37},"in_reply_to":"dab17558_9cc50490","updated":"2016-05-09 14:21:41.000000000","message":"Do you meen that we could consider 2^64 big enough that we do not need to wrap it around","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"aeb48bbc9f097dbcf1dbc1976cfc54f22932b000","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    except orm_exc.NoResultFound:\r"},{"line_number":45,"context_line":"        try:\r"},{"line_number":46,"context_line":"            _create_db_version_row(session, obj_id)\r"},{"line_number":47,"context_line":"        except db_exc.DBDuplicateEntry:\r"},{"line_number":48,"context_line":"            return 0\r"},{"line_number":49,"context_line":"\r"},{"line_number":50,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_6b697825","line":47,"updated":"2016-05-08 19:48:59.000000000","message":"This error is already caught in _create_db_version_row.","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"8eb30eebbc6325c1958810b98f151d4b072e81b6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    except orm_exc.NoResultFound:\r"},{"line_number":45,"context_line":"        try:\r"},{"line_number":46,"context_line":"            _create_db_version_row(session, obj_id)\r"},{"line_number":47,"context_line":"        except db_exc.DBDuplicateEntry:\r"},{"line_number":48,"context_line":"            return 0\r"},{"line_number":49,"context_line":"\r"},{"line_number":50,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_1ceab40f","line":47,"in_reply_to":"dab17558_6b697825","updated":"2016-05-09 02:16:27.000000000","message":"ok:)","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":20188,"name":"zhuweiqiong","email":"zhuweiqiong@huawei.com","username":"zhuweiqiong"},"change_message_id":"d5a239df6faeca167c9bc2773d0f7b150c15b136","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        session.flush()\r"},{"line_number":49,"context_line":"        return new_version\r"},{"line_number":50,"context_line":"    except orm_exc.NoResultFound:\r"},{"line_number":51,"context_line":"        return _create_db_version_row(session, obj_id)\r"},{"line_number":52,"context_line":"\r"},{"line_number":53,"context_line":"\r"},{"line_number":54,"context_line":"def _delete_db_version_row(session, obj_id):\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"dab17558_b7ee23b2","line":51,"range":{"start_line":51,"start_character":15,"end_line":51,"end_character":54},"updated":"2016-05-09 03:38:11.000000000","message":"Suggest to print a log if create failed in this section to make difference with _create_db_version_row","commit_id":"fd484ddcb79f9b08070a335122331d37c76ff0f6"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"c17200ee976a5a40777451396dc6e18a30b6907c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    except db_exc.DBDuplicateEntry:\r"},{"line_number":35,"context_line":"        LOG.warning(_LW(\u0027DuplicateEntry in Neutron DB when\u0027\r"},{"line_number":36,"context_line":"                        \u0027create version for object_id:%s\u0027, obj_id))\r"},{"line_number":37,"context_line":"        return 0\r"},{"line_number":38,"context_line":"\r"},{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"def _update_db_version_row(session, obj_id):\r"}],"source_content_type":"text/x-python","patch_set":9,"id":"dab17558_5a027b0c","line":37,"updated":"2016-05-09 06:06:45.000000000","message":"Is this supposed to return the (new) version? If so, in case of DBDuplicateEntry, shouldn\u0027t the existing version be returned (Or maybe None, or error, so that the caller will know there\u0027s a collision?)?","commit_id":"25ec74f0cc2c3282190929eae587c3709c82b06e"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"b69062c73b49387ed745b737aba860dc91cc980d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    except db_exc.DBDuplicateEntry:\r"},{"line_number":35,"context_line":"        LOG.warning(_LW(\u0027DuplicateEntry in Neutron DB when\u0027\r"},{"line_number":36,"context_line":"                        \u0027create version for object_id:%s\u0027, obj_id))\r"},{"line_number":37,"context_line":"        return 0\r"},{"line_number":38,"context_line":"\r"},{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"def _update_db_version_row(session, obj_id):\r"}],"source_content_type":"text/x-python","patch_set":9,"id":"dab17558_dd294539","line":37,"in_reply_to":"dab17558_5a027b0c","updated":"2016-05-09 06:23:31.000000000","message":"If you try to create a new version for a new object, the version should be initialed to 0, only update method will version++, here if you met the DBDuplicateEntry, we should just return 0 and keep the Neutron db unchanged","commit_id":"25ec74f0cc2c3282190929eae587c3709c82b06e"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"c700c4941a8edd2fc6a61476ac5bec55b56def6a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    try:\r"},{"line_number":42,"context_line":"        row \u003d session.query(models.DFVersionObjects).filter_by(\r"},{"line_number":43,"context_line":"                object_uuid\u003dobj_id).one()\r"},{"line_number":44,"context_line":"        new_version \u003d row.version + 1\r"},{"line_number":45,"context_line":"        row \u003d models.DFVersionObjects(object_uuid\u003dobj_id,\r"},{"line_number":46,"context_line":"                                      version\u003dnew_version)\r"},{"line_number":47,"context_line":"        session.merge(row)\r"},{"line_number":48,"context_line":"        session.flush()\r"},{"line_number":49,"context_line":"        return new_version\r"}],"source_content_type":"text/x-python","patch_set":9,"id":"dab17558_00cb62a6","line":46,"range":{"start_line":44,"start_character":8,"end_line":46,"end_character":58},"updated":"2016-05-09 07:01:40.000000000","message":"row.version \u003d row.version + 1\n\nShould it be more concise? You don\u0027t need to create a new db object.","commit_id":"25ec74f0cc2c3282190929eae587c3709c82b06e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b305417420514523d8f4edee10082f24995fcd24","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                object_uuid\u003dobj_id).one()\r"},{"line_number":46,"context_line":"        new_version \u003d row.version + 1\r"},{"line_number":47,"context_line":"        if new_version \u003d\u003d sys.maxint:\r"},{"line_number":48,"context_line":"            new_version \u003d 0\r"},{"line_number":49,"context_line":"        row.version \u003d new_version\r"},{"line_number":50,"context_line":"        session.merge(row)\r"},{"line_number":51,"context_line":"        session.flush()\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"dab17558_21c11e55","line":48,"updated":"2016-05-10 05:36:12.000000000","message":"I checked the docs. Long integers have unlimited precision, so the wrap-around is up to us.","commit_id":"52a27549ff535d246c0cc413aa2d3e8b6b93c065"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"0fc9283e4f41acffb14b145d256527330dfd4003","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                object_uuid\u003dobj_id).one()\r"},{"line_number":46,"context_line":"        new_version \u003d row.version + 1\r"},{"line_number":47,"context_line":"        if new_version \u003d\u003d sys.maxint:\r"},{"line_number":48,"context_line":"            new_version \u003d 0\r"},{"line_number":49,"context_line":"        row.version \u003d new_version\r"},{"line_number":50,"context_line":"        session.merge(row)\r"},{"line_number":51,"context_line":"        session.flush()\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"dab17558_e101d607","line":48,"in_reply_to":"dab17558_21c11e55","updated":"2016-05-10 06:01:54.000000000","message":"Could you share the docs with us? :-)\n\nAs far as I know, the BigInteger in SqlAlchemy translates into BIGINT in DDL. It depends on the db backend we use. For example, Oracle and MySQL both give 8 bytes to store its value.\n\nBut actually sys.maxint is disabled in python3. We need to find another solution for wrap-around.","commit_id":"52a27549ff535d246c0cc413aa2d3e8b6b93c065"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"d3201c8b03c83f5b0c63b44ca984099e7f0aa7d9","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                object_uuid\u003dobj_id).one()\r"},{"line_number":46,"context_line":"        new_version \u003d row.version + 1\r"},{"line_number":47,"context_line":"        if new_version \u003d\u003d sys.maxint:\r"},{"line_number":48,"context_line":"            new_version \u003d 0\r"},{"line_number":49,"context_line":"        row.version \u003d new_version\r"},{"line_number":50,"context_line":"        session.merge(row)\r"},{"line_number":51,"context_line":"        session.flush()\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"dab17558_c415c040","line":48,"in_reply_to":"dab17558_e101d607","updated":"2016-05-10 06:04:04.000000000","message":"I checked the python3 doc. It should be sys.maxsize.","commit_id":"52a27549ff535d246c0cc413aa2d3e8b6b93c065"}],"dragonflow/neutron/plugin.py":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"b39f542eb301f3d11ea2bf113fd9ddfc9e8da0d5","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                                   topic\u003dnetwork[\u0027tenant_id\u0027],"},{"line_number":373,"context_line":"                                   external_ids\u003dexternal_ids,"},{"line_number":374,"context_line":"                                   router_external\u003dnetwork[\u0027router:external\u0027],"},{"line_number":375,"context_line":"                                   version\u003d0,"},{"line_number":376,"context_line":"                                   subnets\u003d[])"},{"line_number":377,"context_line":"        return network"},{"line_number":378,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_f298c11d","line":375,"range":{"start_line":375,"start_character":35,"end_line":375,"end_character":45},"updated":"2016-05-08 12:33:05.000000000","message":"It will be best to set the return value from _create_db_version_row","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"8eb30eebbc6325c1958810b98f151d4b072e81b6","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                                   topic\u003dnetwork[\u0027tenant_id\u0027],"},{"line_number":373,"context_line":"                                   external_ids\u003dexternal_ids,"},{"line_number":374,"context_line":"                                   router_external\u003dnetwork[\u0027router:external\u0027],"},{"line_number":375,"context_line":"                                   version\u003d0,"},{"line_number":376,"context_line":"                                   subnets\u003d[])"},{"line_number":377,"context_line":"        return network"},{"line_number":378,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_5c59dcfd","line":375,"range":{"start_line":375,"start_character":35,"end_line":375,"end_character":45},"in_reply_to":"dab17558_f298c11d","updated":"2016-05-09 02:16:27.000000000","message":"ok, I\u0027ll change it, but in fact the value returned by create method should be 0 :)","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"b39f542eb301f3d11ea2bf113fd9ddfc9e8da0d5","unresolved":false,"context_lines":[{"line_number":589,"context_line":"            enabled\u003dport.get(\u0027admin_state_up\u0027, None),"},{"line_number":590,"context_line":"            chassis\u003dchassis, tunnel_key\u003dtunnel_key,"},{"line_number":591,"context_line":"            port_security\u003dallowed_macs,"},{"line_number":592,"context_line":"            version\u003d0,"},{"line_number":593,"context_line":"            device_owner\u003dport.get(\u0027device_owner\u0027, None),"},{"line_number":594,"context_line":"            security_groups\u003dport.get(\u0027security_groups\u0027, None))"},{"line_number":595,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_7285f1ab","line":592,"range":{"start_line":592,"start_character":12,"end_line":592,"end_character":22},"updated":"2016-05-08 12:33:05.000000000","message":"Please consider using the return value from create_db_version_row and not assume it is 0","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"b39f542eb301f3d11ea2bf113fd9ddfc9e8da0d5","unresolved":false,"context_lines":[{"line_number":661,"context_line":"        self.nb_api.create_lrouter(router_name, topic\u003dtenant_id,"},{"line_number":662,"context_line":"                                   external_ids\u003dexternal_ids,"},{"line_number":663,"context_line":"                                   distributed\u003dis_distributed,"},{"line_number":664,"context_line":"                                   version\u003d0,"},{"line_number":665,"context_line":"                                   ports\u003d[])"},{"line_number":666,"context_line":"        return router"},{"line_number":667,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_d2949de3","line":664,"range":{"start_line":664,"start_character":35,"end_line":664,"end_character":45},"updated":"2016-05-08 12:33:05.000000000","message":"ditto","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"b39f542eb301f3d11ea2bf113fd9ddfc9e8da0d5","unresolved":false,"context_lines":[{"line_number":902,"context_line":"                floating_port_id\u003dfloatingip_port[\u0027id\u0027],"},{"line_number":903,"context_line":"                floating_mac_address\u003dfloatingip_port[\u0027mac_address\u0027],"},{"line_number":904,"context_line":"                external_gateway_ip\u003dfloatingip_subnet[\u0027gateway_ip\u0027],"},{"line_number":905,"context_line":"                version\u003d0,"},{"line_number":906,"context_line":"                external_cidr\u003dfloatingip_subnet[\u0027cidr\u0027])"},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"        return floatingip_dict"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_b28f59cb","line":905,"range":{"start_line":905,"start_character":16,"end_line":905,"end_character":23},"updated":"2016-05-08 12:33:05.000000000","message":"ditto","commit_id":"591c478474d3d5a5fa93eb7051efdd12c98e4f72"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"c700c4941a8edd2fc6a61476ac5bec55b56def6a","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            network_version \u003d version_db._update_db_version_row("},{"line_number":415,"context_line":"                    context.session, network_id)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        external_ids \u003d {df_const.DF_NETWORK_NAME_EXT_ID_KEY: result[\u0027name\u0027]}"},{"line_number":418,"context_line":"        self.nb_api.update_lswitch(name\u003dnetwork_id,"},{"line_number":419,"context_line":"                                   topic\u003dresult[\u0027tenant_id\u0027],"},{"line_number":420,"context_line":"                                   external_ids\u003dexternal_ids,"},{"line_number":421,"context_line":"                                   router_external\u003dresult[\u0027router:external\u0027],"},{"line_number":422,"context_line":"                                   version\u003dnetwork_version)"},{"line_number":423,"context_line":"        return result"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @lock_db.wrap_db_lock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"dab17558_806d929a","line":422,"range":{"start_line":417,"start_character":8,"end_line":422,"end_character":59},"updated":"2016-05-09 07:01:40.000000000","message":"Does it relate with this patch?","commit_id":"25ec74f0cc2c3282190929eae587c3709c82b06e"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"ef433214230ecdb4665cda01a71e7e0b18d9a083","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            network_version \u003d version_db._update_db_version_row("},{"line_number":415,"context_line":"                    context.session, network_id)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        external_ids \u003d {df_const.DF_NETWORK_NAME_EXT_ID_KEY: result[\u0027name\u0027]}"},{"line_number":418,"context_line":"        self.nb_api.update_lswitch(name\u003dnetwork_id,"},{"line_number":419,"context_line":"                                   topic\u003dresult[\u0027tenant_id\u0027],"},{"line_number":420,"context_line":"                                   external_ids\u003dexternal_ids,"},{"line_number":421,"context_line":"                                   router_external\u003dresult[\u0027router:external\u0027],"},{"line_number":422,"context_line":"                                   version\u003dnetwork_version)"},{"line_number":423,"context_line":"        return result"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @lock_db.wrap_db_lock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"dab17558_a0e096cd","line":422,"range":{"start_line":417,"start_character":8,"end_line":422,"end_character":59},"in_reply_to":"dab17558_806d929a","updated":"2016-05-09 07:15:16.000000000","message":"yes, when you update network, you should also update the version info into DF DB, otherwise, the version data is inconsistency, btw, I think the previously update_network method is not completely.","commit_id":"25ec74f0cc2c3282190929eae587c3709c82b06e"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"b07a3e179e9e84878db817293c819488a8b3aaff","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            network_version \u003d version_db._update_db_version_row("},{"line_number":415,"context_line":"                    context.session, network_id)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        external_ids \u003d {df_const.DF_NETWORK_NAME_EXT_ID_KEY: result[\u0027name\u0027]}"},{"line_number":418,"context_line":"        self.nb_api.update_lswitch(name\u003dnetwork_id,"},{"line_number":419,"context_line":"                                   topic\u003dresult[\u0027tenant_id\u0027],"},{"line_number":420,"context_line":"                                   external_ids\u003dexternal_ids,"},{"line_number":421,"context_line":"                                   router_external\u003dresult[\u0027router:external\u0027],"},{"line_number":422,"context_line":"                                   version\u003dnetwork_version)"},{"line_number":423,"context_line":"        return result"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @lock_db.wrap_db_lock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"dab17558_4bb58b2f","line":422,"range":{"start_line":417,"start_character":8,"end_line":422,"end_character":59},"in_reply_to":"dab17558_a0e096cd","updated":"2016-05-09 07:37:07.000000000","message":"Ok, got it. Thanks for explanation.","commit_id":"25ec74f0cc2c3282190929eae587c3709c82b06e"}]}
