)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"8c4eecb1176b46ee16ff3aa44e11c9f8627db098","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Hongbin Lu \u003chongbin034@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-10 23:37:45 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Database changes for horizontal-scale support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add database APIs for a conductor to lock or release a bay."},{"line_number":10,"context_line":"In addition, add an API for a conductor to steal the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_b98908cd","line":7,"updated":"2015-04-11 01:47:03.000000000","message":"I think we should clarify this is only for conductor here","commit_id":"801b206ae138d3fb2c2b20d89f0ba264f2b9410f"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"122e5ac04b6d6486c4da48148f67f2d991470f15","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Hongbin Lu \u003chongbin034@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-10 23:37:45 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Database changes for horizontal-scale support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add database APIs for a conductor to lock or release a bay."},{"line_number":10,"context_line":"In addition, add an API for a conductor to steal the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_8f4b9759","line":7,"in_reply_to":"7aaa499b_b98908cd","updated":"2015-04-11 16:35:05.000000000","message":"Done","commit_id":"801b206ae138d3fb2c2b20d89f0ba264f2b9410f"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"8c4eecb1176b46ee16ff3aa44e11c9f8627db098","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add database APIs for a conductor to lock or release a bay."},{"line_number":10,"context_line":"In addition, add an API for a conductor to steal the"},{"line_number":11,"context_line":"lock of a bay that was locked by another conductor."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I95f28361eea361d878d2c047937c3beef4fb445a"},{"line_number":14,"context_line":"Partial-Implements: blueprint horizontal-scale"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_799380fb","line":11,"updated":"2015-04-11 01:47:03.000000000","message":"The reviewer might want to know more detail for the design of the locks, can u pls show a e2e case in the commit message for the usage of the lock?","commit_id":"801b206ae138d3fb2c2b20d89f0ba264f2b9410f"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"122e5ac04b6d6486c4da48148f67f2d991470f15","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add database APIs for a conductor to lock or release a bay."},{"line_number":10,"context_line":"In addition, add an API for a conductor to steal the"},{"line_number":11,"context_line":"lock of a bay that was locked by another conductor."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I95f28361eea361d878d2c047937c3beef4fb445a"},{"line_number":14,"context_line":"Partial-Implements: blueprint horizontal-scale"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aaa499b_6f484b5c","line":11,"in_reply_to":"7aaa499b_799380fb","updated":"2015-04-11 16:35:05.000000000","message":"Done","commit_id":"801b206ae138d3fb2c2b20d89f0ba264f2b9410f"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a73a3284c1a6e2c205a544244ae62e0fa86474eb","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add database APIs for a conductor to lock/steal/release a bay."},{"line_number":10,"context_line":"There will be more than one conductors, so it is necessary to"},{"line_number":11,"context_line":"implement a distributed locking APIs to prevent race condictions."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"* Lock acquisition: A conductor should acquire a lock when it is"},{"line_number":14,"context_line":"  about to perform an operation on a bay (e.g. create/update/delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7aaa499b_6c03b910","line":11,"updated":"2015-04-11 16:20:16.000000000","message":"conditions","commit_id":"82e838da1ac46176facc74d6b8526938d52f929e"}],"magnum/db/sqlalchemy/api.py":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"e889c0d7c70d496d6d8228b553819a6cece2ac5b","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            session.add(models.BayLock(bay_uuid\u003dbay_uuid,"},{"line_number":254,"context_line":"                                       conductor_id\u003dconductor_id))"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def steal_bay_lock(self, bay_uuid, old_conductor_id, new_conductor_id):"},{"line_number":257,"context_line":"        session \u003d get_session()"},{"line_number":258,"context_line":"        with session.begin():"},{"line_number":259,"context_line":"            query \u003d model_query(models.BayLock, session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_db50a434","line":256,"updated":"2015-06-18 09:54:53.000000000","message":"Is possible that 2 conductors concurrently try to steal a lock, and they both return successfully from the method? Even though in DB there is only 1 conductor_id.","commit_id":"5269daad88f2bc39f89a8289cebdcecba9401d85"}],"magnum/db/sqlalchemy/models.py":[{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"7eb38aa207777fb51947b107b82c93bd5eb0eb7a","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    __tablename__ \u003d \u0027baylock\u0027"},{"line_number":138,"context_line":"    __table_args__ \u003d ("},{"line_number":139,"context_line":"        schema.UniqueConstraint(\u0027bay_uuid\u0027, name\u003d\u0027uniq_baylock0bay_uuid\u0027),"},{"line_number":140,"context_line":"        table_args()"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_afc41692","line":139,"updated":"2015-04-11 06:38:49.000000000","message":"Did you mean \u0027uniq_baylock_bay_uuid\u0027 rather than \u0027uniq_baylock0bay_uuid\u0027?","commit_id":"801b206ae138d3fb2c2b20d89f0ba264f2b9410f"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"122e5ac04b6d6486c4da48148f67f2d991470f15","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    __tablename__ \u003d \u0027baylock\u0027"},{"line_number":138,"context_line":"    __table_args__ \u003d ("},{"line_number":139,"context_line":"        schema.UniqueConstraint(\u0027bay_uuid\u0027, name\u003d\u0027uniq_baylock0bay_uuid\u0027),"},{"line_number":140,"context_line":"        table_args()"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_af6533e2","line":139,"in_reply_to":"7aaa499b_afc41692","updated":"2015-04-11 16:35:05.000000000","message":"It looks the convention is to use \u00270\u0027 to separate table name to field name (I am not sure why).","commit_id":"801b206ae138d3fb2c2b20d89f0ba264f2b9410f"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"7eb38aa207777fb51947b107b82c93bd5eb0eb7a","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    __tablename__ \u003d \u0027baymodel\u0027"},{"line_number":151,"context_line":"    __table_args__ \u003d ("},{"line_number":152,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_baymodel0uuid\u0027),"},{"line_number":153,"context_line":"        table_args()"},{"line_number":154,"context_line":"        )"},{"line_number":155,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_4fbb520f","line":152,"updated":"2015-04-11 06:38:49.000000000","message":"Did you mean \u0027uniq_baylock_bay_uuid\u0027 rather than \u0027uniq_baylock0bay_uuid\u0027?","commit_id":"801b206ae138d3fb2c2b20d89f0ba264f2b9410f"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"122e5ac04b6d6486c4da48148f67f2d991470f15","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    __tablename__ \u003d \u0027baymodel\u0027"},{"line_number":151,"context_line":"    __table_args__ \u003d ("},{"line_number":152,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_baymodel0uuid\u0027),"},{"line_number":153,"context_line":"        table_args()"},{"line_number":154,"context_line":"        )"},{"line_number":155,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_8f6277d7","line":152,"in_reply_to":"7aaa499b_4fbb520f","updated":"2015-04-11 16:35:05.000000000","message":"Ditto","commit_id":"801b206ae138d3fb2c2b20d89f0ba264f2b9410f"}]}
