)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"8b37ca8bc7ed727a62680c9f4e2fa6c979ac6456","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Eliminate Race Conditions Spec"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Propose a mechanism for elimiating race conditions."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I2e9e6af39731d78d7a6010f4ef32ea5cb49e603e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a6eadb0_6873eb4d","line":9,"range":{"start_line":9,"start_character":24,"end_line":9,"end_character":35},"updated":"2016-12-14 11:00:18.000000000","message":"eliminating","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a5b37ffc48d0693c2b4a034bf7762ed8c69034dd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Eliminate Race Conditions Spec"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Propose a mechanism for elimiating race conditions."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I2e9e6af39731d78d7a6010f4ef32ea5cb49e603e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1a6eadb0_d72d5ca9","line":9,"range":{"start_line":9,"start_character":24,"end_line":9,"end_character":34},"updated":"2016-12-14 20:47:05.000000000","message":"eliminating","commit_id":"5b0692e5fadc64ac8c2f169fed0b38314c754313"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"8340d02c6ed557a83e35b8b55ab8ae52342dd614","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-12-15 12:01:06 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Mechanism to Prevent Race Conditions Spec"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Propose a mechanism for preventing race conditions."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I2e9e6af39731d78d7a6010f4ef32ea5cb49e603e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"1a6eadb0_a87f71a9","line":8,"updated":"2016-12-15 17:05:57.000000000","message":"spec needs to partially implement the blueprint. See https://review.openstack.org/#/c/399049/","commit_id":"2837eb732d81f18ac6f026ec2d5097def939aeb5"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"a4aa5741efa313f1473eb4353a10bf86d82af4ad","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Propose a mechanism for preventing race conditions."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I2e9e6af39731d78d7a6010f4ef32ea5cb49e603e"},{"line_number":12,"context_line":"Partially-implements: eliminate-race-conditions"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a6eadb0_93c3c688","line":12,"range":{"start_line":12,"start_character":21,"end_line":12,"end_character":23},"updated":"2016-12-15 17:13:51.000000000","message":"syntax is wrong, needs to have \"bp\" or \"blueprint\" here or else the link does not work. See https://review.openstack.org/#/c/399049/","commit_id":"b31c24979f3b1fafa37790acb7040ce668ce07f9"}],"specs/ocata/eliminate-race-conditions.rst":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This proposal is to develop a general solution for preventing race"},{"line_number":14,"context_line":"conditions which will work across services and in deployments where"},{"line_number":15,"context_line":"there are multiple copies of the sames services (commonly known as"},{"line_number":16,"context_line":"Active/Active HA deployments)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The focus is on keeping all state in the database, and protecting changes to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_44531439","line":15,"range":{"start_line":15,"start_character":33,"end_line":15,"end_character":38},"updated":"2016-11-10 22:29:19.000000000","message":"same","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This proposal is to develop a general solution for preventing race"},{"line_number":14,"context_line":"conditions which will work across services and in deployments where"},{"line_number":15,"context_line":"there are multiple copies of the sames services (commonly known as"},{"line_number":16,"context_line":"Active/Active HA deployments)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The focus is on keeping all state in the database, and protecting changes to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_e07659d7","line":15,"range":{"start_line":15,"start_character":33,"end_line":15,"end_character":38},"in_reply_to":"9a629dbe_44531439","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"aa4d65ba31a94595ee886db8f5b90a3d8d88a1b9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"The focus is on keeping all state in the database, and protecting changes to"},{"line_number":19,"context_line":"database state using briefly-held locks. Also concurrent operations which"},{"line_number":20,"context_line":"are mutually exclusive should fail as early as possible with a helpful error"},{"line_number":21,"context_line":"code to simply the retry logic of upper layers."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Problem description"},{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_0178dbf7","line":21,"range":{"start_line":21,"start_character":8,"end_line":21,"end_character":14},"updated":"2016-11-21 17:05:07.000000000","message":"s/simply/simplify/","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":18,"context_line":"The focus is on keeping all state in the database, and protecting changes to"},{"line_number":19,"context_line":"database state using briefly-held locks. Also concurrent operations which"},{"line_number":20,"context_line":"are mutually exclusive should fail as early as possible with a helpful error"},{"line_number":21,"context_line":"code to simply the retry logic of upper layers."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Problem description"},{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_007435cd","line":21,"range":{"start_line":21,"start_character":8,"end_line":21,"end_character":14},"in_reply_to":"7a77a97e_0178dbf7","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Problem description"},{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Certain operations in Manila should not be allowed to proceed in parallel,"},{"line_number":27,"context_line":"because the result of one operation would prevent the other operation from"},{"line_number":28,"context_line":"completing successfully."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_c43d64de","line":26,"range":{"start_line":26,"start_character":22,"end_line":26,"end_character":28},"updated":"2016-11-10 22:29:19.000000000","message":"you will be told to downcase this","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Problem description"},{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Certain operations in Manila should not be allowed to proceed in parallel,"},{"line_number":27,"context_line":"because the result of one operation would prevent the other operation from"},{"line_number":28,"context_line":"completing successfully."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_20813190","line":26,"range":{"start_line":26,"start_character":22,"end_line":26,"end_character":28},"in_reply_to":"9a629dbe_c43d64de","updated":"2016-12-08 14:16:41.000000000","message":"Never!","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":31,"context_line":"deleting that share. Either the snapshot must occur first, which prevents the"},{"line_number":32,"context_line":"delete -- or the delete must occur first, which prevents the snapshot."},{"line_number":33,"context_line":"Unfortunately, not enough state is stored in the database to prevent these"},{"line_number":34,"context_line":"operations from racing with eachother, so in practice two API calls can both"},{"line_number":35,"context_line":"proceed through the API service to the share manager, where eventually an"},{"line_number":36,"context_line":"error will occur and one or both operations will fail mysteriously."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_841e0c6e","line":34,"range":{"start_line":34,"start_character":28,"end_line":34,"end_character":37},"updated":"2016-11-10 22:29:19.000000000","message":"each other","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":31,"context_line":"deleting that share. Either the snapshot must occur first, which prevents the"},{"line_number":32,"context_line":"delete -- or the delete must occur first, which prevents the snapshot."},{"line_number":33,"context_line":"Unfortunately, not enough state is stored in the database to prevent these"},{"line_number":34,"context_line":"operations from racing with eachother, so in practice two API calls can both"},{"line_number":35,"context_line":"proceed through the API service to the share manager, where eventually an"},{"line_number":36,"context_line":"error will occur and one or both operations will fail mysteriously."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_6049698e","line":34,"range":{"start_line":34,"start_character":28,"end_line":34,"end_character":37},"in_reply_to":"9a629dbe_841e0c6e","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":36,"context_line":"error will occur and one or both operations will fail mysteriously."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"There are multiple scenarios like the above where undefined behavior results."},{"line_number":39,"context_line":"This specification does not attempt to enumerate all of them here because the"},{"line_number":40,"context_line":"goal is to implement a mechanism for fixing these kinds of issues rather than"},{"line_number":41,"context_line":"explicitly fixing all such issues. Generally speaking, race conditions should"},{"line_number":42,"context_line":"be treated as bugs, but up until now Manila has lacked the tools to fix these"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_040bdc2a","line":39,"range":{"start_line":39,"start_character":74,"end_line":39,"end_character":77},"updated":"2016-11-10 22:29:19.000000000","message":"its","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":36,"context_line":"error will occur and one or both operations will fail mysteriously."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"There are multiple scenarios like the above where undefined behavior results."},{"line_number":39,"context_line":"This specification does not attempt to enumerate all of them here because the"},{"line_number":40,"context_line":"goal is to implement a mechanism for fixing these kinds of issues rather than"},{"line_number":41,"context_line":"explicitly fixing all such issues. Generally speaking, race conditions should"},{"line_number":42,"context_line":"be treated as bugs, but up until now Manila has lacked the tools to fix these"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_c414844e","line":39,"range":{"start_line":39,"start_character":61,"end_line":39,"end_character":66},"updated":"2016-11-10 22:29:19.000000000","message":"redundant","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":36,"context_line":"error will occur and one or both operations will fail mysteriously."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"There are multiple scenarios like the above where undefined behavior results."},{"line_number":39,"context_line":"This specification does not attempt to enumerate all of them here because the"},{"line_number":40,"context_line":"goal is to implement a mechanism for fixing these kinds of issues rather than"},{"line_number":41,"context_line":"explicitly fixing all such issues. Generally speaking, race conditions should"},{"line_number":42,"context_line":"be treated as bugs, but up until now Manila has lacked the tools to fix these"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_c0487d8a","line":39,"range":{"start_line":39,"start_character":61,"end_line":39,"end_character":66},"in_reply_to":"9a629dbe_c414844e","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"There are multiple scenarios like the above where undefined behavior results."},{"line_number":39,"context_line":"This specification does not attempt to enumerate all of them here because the"},{"line_number":40,"context_line":"goal is to implement a mechanism for fixing these kinds of issues rather than"},{"line_number":41,"context_line":"explicitly fixing all such issues. Generally speaking, race conditions should"},{"line_number":42,"context_line":"be treated as bugs, but up until now Manila has lacked the tools to fix these"},{"line_number":43,"context_line":"bugs reliably."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_98058c12","line":40,"range":{"start_line":40,"start_character":11,"end_line":40,"end_character":21},"updated":"2016-11-10 22:29:19.000000000","message":"describe or specify, it doesn\u0027t implement it","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"There are multiple scenarios like the above where undefined behavior results."},{"line_number":39,"context_line":"This specification does not attempt to enumerate all of them here because the"},{"line_number":40,"context_line":"goal is to implement a mechanism for fixing these kinds of issues rather than"},{"line_number":41,"context_line":"explicitly fixing all such issues. Generally speaking, race conditions should"},{"line_number":42,"context_line":"be treated as bugs, but up until now Manila has lacked the tools to fix these"},{"line_number":43,"context_line":"bugs reliably."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_e05d7949","line":40,"range":{"start_line":40,"start_character":11,"end_line":40,"end_character":21},"in_reply_to":"9a629dbe_98058c12","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Taking a snapshot of a share should prevent a delete of that share."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* More?"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"General cases:"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_18125c57","line":57,"range":{"start_line":57,"start_character":2,"end_line":57,"end_character":7},"updated":"2016-11-10 22:29:19.000000000","message":"Yeah, we should all think of cases and add them here.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Taking a snapshot of a share should prevent a delete of that share."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* More?"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"General cases:"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_8035a5f8","line":57,"range":{"start_line":57,"start_character":2,"end_line":57,"end_character":7},"in_reply_to":"7a77a97e_a4f575cc","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"aa4d65ba31a94595ee886db8f5b90a3d8d88a1b9","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Taking a snapshot of a share should prevent a delete of that share."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* More?"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"General cases:"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_a4f575cc","line":57,"range":{"start_line":57,"start_character":2,"end_line":57,"end_character":7},"in_reply_to":"9a629dbe_18125c57","updated":"2016-11-21 17:05:07.000000000","message":"+1, this doesn\u0027t need to be exhaustive, but I\u0027d like to see a few things here just in case finding and enumerative them informs any adjustments to this spec.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"aa4d65ba31a94595ee886db8f5b90a3d8d88a1b9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"General cases:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* These guarantees must be enforceable using a database running in a clustered"},{"line_number":62,"context_line":"  configuration such as Galera. This prevent obvious solutions such as relying"},{"line_number":63,"context_line":"  on DB row-level locking."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* These guarantees must be enforceable while running multiple copies of Manila"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_e4168df0","line":62,"range":{"start_line":62,"start_character":37,"end_line":62,"end_character":44},"updated":"2016-11-21 17:05:07.000000000","message":"prevents","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":59,"context_line":"General cases:"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* These guarantees must be enforceable using a database running in a clustered"},{"line_number":62,"context_line":"  configuration such as Galera. This prevent obvious solutions such as relying"},{"line_number":63,"context_line":"  on DB row-level locking."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* These guarantees must be enforceable while running multiple copies of Manila"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_a03aa1e5","line":62,"range":{"start_line":62,"start_character":37,"end_line":62,"end_character":44},"in_reply_to":"7a77a97e_e4168df0","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"aa4d65ba31a94595ee886db8f5b90a3d8d88a1b9","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* These guarantees must be enforceable using a database running in a clustered"},{"line_number":62,"context_line":"  configuration such as Galera. This prevent obvious solutions such as relying"},{"line_number":63,"context_line":"  on DB row-level locking."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* These guarantees must be enforceable while running multiple copies of Manila"},{"line_number":66,"context_line":"  services, including multiple API, scheduler, and share manager services."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_c49ef162","line":63,"range":{"start_line":63,"start_character":5,"end_line":63,"end_character":25},"updated":"2016-11-21 17:05:07.000000000","message":"FWIW, Galera 4 (no release data known) is supposed to include distributed DB row locking, which if true could provide a simpler solution than a DLM (although Tooz offers other valuable features such as leader election).","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* These guarantees must be enforceable using a database running in a clustered"},{"line_number":62,"context_line":"  configuration such as Galera. This prevent obvious solutions such as relying"},{"line_number":63,"context_line":"  on DB row-level locking."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* These guarantees must be enforceable while running multiple copies of Manila"},{"line_number":66,"context_line":"  services, including multiple API, scheduler, and share manager services."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_002275b9","line":63,"range":{"start_line":63,"start_character":5,"end_line":63,"end_character":25},"in_reply_to":"7a77a97e_c49ef162","updated":"2016-12-08 14:16:41.000000000","message":"Not going to mention this","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* These guarantees must be enforceable while running in a distributed"},{"line_number":70,"context_line":"  configuration where cooperating services are on different nodes (physical,"},{"line_number":71,"context_line":"  VMs, or containers). This prevents our existing approach of using file"},{"line_number":72,"context_line":"  locks."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* The Manila services should be able to automatically and gracefully recover"},{"line_number":75,"context_line":"  from crashes and other unplanned downtime. This means that implicit state"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_d870e4a6","line":72,"range":{"start_line":71,"start_character":24,"end_line":72,"end_character":8},"updated":"2016-11-10 22:29:19.000000000","message":"Might add that the solution must work for deployments where\nfile locks on storage that is shared across service nodes is not a viable or desirable solution.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* These guarantees must be enforceable while running in a distributed"},{"line_number":70,"context_line":"  configuration where cooperating services are on different nodes (physical,"},{"line_number":71,"context_line":"  VMs, or containers). This prevents our existing approach of using file"},{"line_number":72,"context_line":"  locks."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* The Manila services should be able to automatically and gracefully recover"},{"line_number":75,"context_line":"  from crashes and other unplanned downtime. This means that implicit state"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_402c6dab","line":72,"range":{"start_line":71,"start_character":24,"end_line":72,"end_character":8},"in_reply_to":"7a77a97e_04dc6917","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"aa4d65ba31a94595ee886db8f5b90a3d8d88a1b9","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* These guarantees must be enforceable while running in a distributed"},{"line_number":70,"context_line":"  configuration where cooperating services are on different nodes (physical,"},{"line_number":71,"context_line":"  VMs, or containers). This prevents our existing approach of using file"},{"line_number":72,"context_line":"  locks."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* The Manila services should be able to automatically and gracefully recover"},{"line_number":75,"context_line":"  from crashes and other unplanned downtime. This means that implicit state"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_04dc6917","line":72,"range":{"start_line":71,"start_character":24,"end_line":72,"end_character":8},"in_reply_to":"9a629dbe_d870e4a6","updated":"2016-11-21 17:05:07.000000000","message":"+1","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":84,"context_line":"state. A complete list of new share states follows in the data model impact"},{"line_number":85,"context_line":"section."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Transitions between states will always be done while holdling a distributed"},{"line_number":88,"context_line":"lock. The lock will be held only for the duration of the database test-and-set"},{"line_number":89,"context_line":"operation."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_98a10cfb","line":87,"range":{"start_line":87,"start_character":53,"end_line":87,"end_character":62},"updated":"2016-11-10 22:29:19.000000000","message":"holding","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":84,"context_line":"state. A complete list of new share states follows in the data model impact"},{"line_number":85,"context_line":"section."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Transitions between states will always be done while holdling a distributed"},{"line_number":88,"context_line":"lock. The lock will be held only for the duration of the database test-and-set"},{"line_number":89,"context_line":"operation."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_801cc578","line":87,"range":{"start_line":87,"start_character":53,"end_line":87,"end_character":62},"in_reply_to":"9a629dbe_98a10cfb","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"No locks will be held during calls from the share manager to the share driver."},{"line_number":92,"context_line":"Mutual exclusion between driver calls will be achieved with state checks."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Alternatives"},{"line_number":95,"context_line":"------------"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_d8438411","line":93,"updated":"2016-11-10 22:29:19.000000000","message":"No locks will be help across rpc calls or casts.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"No locks will be held during calls from the share manager to the share driver."},{"line_number":92,"context_line":"Mutual exclusion between driver calls will be achieved with state checks."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Alternatives"},{"line_number":95,"context_line":"------------"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_c016bd54","line":93,"in_reply_to":"9a629dbe_d8438411","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"The approach used by Cinder which relies on elaborate SQL calls to"},{"line_number":98,"context_line":"test-and-set fields was considered but rejected for the following reasons:"},{"line_number":99,"context_line":"* The code in Cinder can\u0027t be shared with Manila because it relies on OVO"},{"line_number":100,"context_line":"* Not enough people understand how it works so it\u0027s likely to be hard to"},{"line_number":101,"context_line":"  maintain"},{"line_number":102,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_f823e853","line":99,"updated":"2016-11-10 22:29:19.000000000","message":"We would have to pull it out of OVO.  I agree that there\u0027s\nnot time to do that in ocata.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"02a41d8837f068229b826a207bbe1972c6bb1494","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"The approach used by Cinder which relies on elaborate SQL calls to"},{"line_number":98,"context_line":"test-and-set fields was considered but rejected for the following reasons:"},{"line_number":99,"context_line":"* The code in Cinder can\u0027t be shared with Manila because it relies on OVO"},{"line_number":100,"context_line":"* Not enough people understand how it works so it\u0027s likely to be hard to"},{"line_number":101,"context_line":"  maintain"},{"line_number":102,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a74a57a_774cc842","line":99,"range":{"start_line":99,"start_character":70,"end_line":99,"end_character":73},"updated":"2016-11-24 06:52:37.000000000","message":"as far as I know, cinder use OVO to do the rolling upgrade (live upgrade) work, and  they use compare-and-swap mechanism in sql to eliminate race condition. I agree with Tom Barron we got a short time in ocata","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"e1157d91917824af9249dcc7d54382db5b92d966","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"The approach used by Cinder which relies on elaborate SQL calls to"},{"line_number":98,"context_line":"test-and-set fields was considered but rejected for the following reasons:"},{"line_number":99,"context_line":"* The code in Cinder can\u0027t be shared with Manila because it relies on OVO"},{"line_number":100,"context_line":"* Not enough people understand how it works so it\u0027s likely to be hard to"},{"line_number":101,"context_line":"  maintain"},{"line_number":102,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_79ab7f75","line":99,"in_reply_to":"7a77a97e_30975c49","updated":"2016-11-17 16:19:43.000000000","message":"oslo versioned objects, which enable rolling upgrades.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"change_message_id":"941c1a7c89e306ecb0a1b416cce18e5aa1582c9c","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"The approach used by Cinder which relies on elaborate SQL calls to"},{"line_number":98,"context_line":"test-and-set fields was considered but rejected for the following reasons:"},{"line_number":99,"context_line":"* The code in Cinder can\u0027t be shared with Manila because it relies on OVO"},{"line_number":100,"context_line":"* Not enough people understand how it works so it\u0027s likely to be hard to"},{"line_number":101,"context_line":"  maintain"},{"line_number":102,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_30975c49","line":99,"in_reply_to":"9a629dbe_f823e853","updated":"2016-11-17 15:35:40.000000000","message":"What is OVO in this context?","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":98,"context_line":"test-and-set fields was considered but rejected for the following reasons:"},{"line_number":99,"context_line":"* The code in Cinder can\u0027t be shared with Manila because it relies on OVO"},{"line_number":100,"context_line":"* Not enough people understand how it works so it\u0027s likely to be hard to"},{"line_number":101,"context_line":"  maintain"},{"line_number":102,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"},{"line_number":103,"context_line":"  make because updating multiple tables atomically is impossible. Locks"},{"line_number":104,"context_line":"  don\u0027t suffer from this restriction."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_648bb81f","line":101,"updated":"2016-11-10 22:29:19.000000000","message":"Well, I\u0027m not sure that maintaining it, as opposed to designing it and using it in a way that is acceptable to\na very opinionated Cinder community, is that hard.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":101,"context_line":"  maintain"},{"line_number":102,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"},{"line_number":103,"context_line":"  make because updating multiple tables atomically is impossible. Locks"},{"line_number":104,"context_line":"  don\u0027t suffer from this restriction."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Data model impact"},{"line_number":107,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_647c98ec","line":104,"updated":"2016-11-10 22:29:19.000000000","message":"I haven\u0027t had time, but I\u0027d like to understand better than\nI do how essential is the requirement for atomic update of multi-table updates.  For example, it\u0027s not obvious to me that one couldn\u0027t have a controlling atomic single table update such that if it goes into an ING state then exclusion is enforced around the multiple table updates without having to hold a lock (or do a complicated test-and-set) around the multiple updates.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":102,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"},{"line_number":103,"context_line":"  make because updating multiple tables atomically is impossible. Locks"},{"line_number":104,"context_line":"  don\u0027t suffer from this restriction."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Data model impact"},{"line_number":107,"context_line":"-----------------"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_c46f24fa","line":105,"updated":"2016-11-10 22:29:19.000000000","message":"For me, the more compelling argument against test-and-set\nis that currently it is not thought by the cinder community\nto be sufficient for active-active HA.  If (1) tooz DLM is also required, or if some other auxiliary heartbeat mechanism is also required to handle services that went into an ING state and died, or (other cases I don\u0027t know about), so that test-and-set is not itself sufficient, and (2) tooz with\nappropriate DLM backend would by itself be sufficient to\neliminate races for services deployed both single node and\nactive-active on multiple nodes, then #2 may be a simpler\nsolution.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"aa4d65ba31a94595ee886db8f5b90a3d8d88a1b9","unresolved":false,"context_lines":[{"line_number":102,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"},{"line_number":103,"context_line":"  make because updating multiple tables atomically is impossible. Locks"},{"line_number":104,"context_line":"  don\u0027t suffer from this restriction."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Data model impact"},{"line_number":107,"context_line":"-----------------"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_2435e5f6","line":105,"in_reply_to":"9a629dbe_c46f24fa","updated":"2016-11-21 17:05:07.000000000","message":"+1 for a single mechanism that addresses the race conditions, HA or not.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"New states will be added:"},{"line_number":110,"context_line":"* Snapshotting"},{"line_number":111,"context_line":"* More?"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Other states?"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_98d90c5a","line":111,"range":{"start_line":111,"start_character":0,"end_line":111,"end_character":7},"updated":"2016-11-10 22:29:19.000000000","message":"Yes, we should figure these out and put them in this spec.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"New states will be added:"},{"line_number":110,"context_line":"* Snapshotting"},{"line_number":111,"context_line":"* More?"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Other states?"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_e00bb929","line":111,"range":{"start_line":111,"start_character":0,"end_line":111,"end_character":7},"in_reply_to":"5a74a57a_8c5a374f","updated":"2016-12-08 14:16:41.000000000","message":"State diagram TBD","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"02a41d8837f068229b826a207bbe1972c6bb1494","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"New states will be added:"},{"line_number":110,"context_line":"* Snapshotting"},{"line_number":111,"context_line":"* More?"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Other states?"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a74a57a_8c5a374f","line":111,"range":{"start_line":111,"start_character":0,"end_line":111,"end_character":7},"in_reply_to":"7a77a97e_109c205c","updated":"2016-11-24 06:52:37.000000000","message":"+1","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"e1157d91917824af9249dcc7d54382db5b92d966","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"New states will be added:"},{"line_number":110,"context_line":"* Snapshotting"},{"line_number":111,"context_line":"* More?"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Other states?"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_19b36bea","line":111,"range":{"start_line":111,"start_character":0,"end_line":111,"end_character":7},"in_reply_to":"7a77a97e_109c205c","updated":"2016-11-17 16:19:43.000000000","message":"+1","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"aa4d65ba31a94595ee886db8f5b90a3d8d88a1b9","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"New states will be added:"},{"line_number":110,"context_line":"* Snapshotting"},{"line_number":111,"context_line":"* More?"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Other states?"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_241c0577","line":111,"range":{"start_line":111,"start_character":0,"end_line":111,"end_character":7},"in_reply_to":"7a77a97e_109c205c","updated":"2016-11-21 17:05:07.000000000","message":"+1","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"02a41d8837f068229b826a207bbe1972c6bb1494","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"New states will be added:"},{"line_number":110,"context_line":"* Snapshotting"},{"line_number":111,"context_line":"* More?"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Other states?"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a74a57a_375970ff","line":111,"range":{"start_line":111,"start_character":0,"end_line":111,"end_character":7},"in_reply_to":"9a629dbe_98d90c5a","updated":"2016-11-24 06:52:37.000000000","message":"+1","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"change_message_id":"941c1a7c89e306ecb0a1b416cce18e5aa1582c9c","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"New states will be added:"},{"line_number":110,"context_line":"* Snapshotting"},{"line_number":111,"context_line":"* More?"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Other states?"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_109c205c","line":111,"range":{"start_line":111,"start_character":0,"end_line":111,"end_character":7},"in_reply_to":"9a629dbe_98d90c5a","updated":"2016-11-17 15:35:40.000000000","message":"We should create a state diagram with all available states and the allowed transitions between the states.\nI think we also need this for locks. On which level do we lock (share-instance, instance, backend,...), in which cases do we need the lock, ...","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"aa4d65ba31a94595ee886db8f5b90a3d8d88a1b9","unresolved":false,"context_lines":[{"line_number":115,"context_line":"REST API impact"},{"line_number":116,"context_line":"---------------"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"New states will be visible through any API that shows states. Also new"},{"line_number":119,"context_line":"error conditions will become possible as we detect races earlier and"},{"line_number":120,"context_line":"report them directly."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_7f404a36","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":60},"updated":"2016-11-21 17:05:07.000000000","message":"Will this work be done all at once and covered by a single microversion?","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":115,"context_line":"REST API impact"},{"line_number":116,"context_line":"---------------"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"New states will be visible through any API that shows states. Also new"},{"line_number":119,"context_line":"error conditions will become possible as we detect races earlier and"},{"line_number":120,"context_line":"report them directly."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_40038d0f","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":60},"in_reply_to":"5a74a57a_d7191c7b","updated":"2016-12-08 14:16:41.000000000","message":"No microversion, spec updated","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"02a41d8837f068229b826a207bbe1972c6bb1494","unresolved":false,"context_lines":[{"line_number":115,"context_line":"REST API impact"},{"line_number":116,"context_line":"---------------"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"New states will be visible through any API that shows states. Also new"},{"line_number":119,"context_line":"error conditions will become possible as we detect races earlier and"},{"line_number":120,"context_line":"report them directly."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a74a57a_d7191c7b","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":60},"in_reply_to":"7a77a97e_7f404a36","updated":"2016-11-24 06:52:37.000000000","message":"yep, we need a mircorversion here","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":148,"context_line":"Other deployer impact"},{"line_number":149,"context_line":"---------------------"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Requirement to deploy and configure tooz backend."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Developer impact"},{"line_number":154,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_f87f6812","line":151,"range":{"start_line":151,"start_character":26,"end_line":151,"end_character":49},"updated":"2016-11-10 22:29:19.000000000","message":"configure a **suitable** tooz backend.  Most of them are not suitable.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":148,"context_line":"Other deployer impact"},{"line_number":149,"context_line":"---------------------"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Requirement to deploy and configure tooz backend."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Developer impact"},{"line_number":154,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_7b03da0d","line":151,"range":{"start_line":151,"start_character":26,"end_line":151,"end_character":49},"in_reply_to":"9a629dbe_f87f6812","updated":"2016-12-08 14:16:41.000000000","message":"Done","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1da2c34ad6daaec223de5a59b01194b1350b5512","unresolved":false,"context_lines":[{"line_number":186,"context_line":"Documentation Impact"},{"line_number":187,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Admin guide - need to document tooz requirements."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"References"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_18941c41","line":189,"range":{"start_line":189,"start_character":0,"end_line":189,"end_character":49},"updated":"2016-11-10 22:29:19.000000000","message":"This is potentially quite a significant task, as it should cover how to deploy suitable DLM properly.","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"02a41d8837f068229b826a207bbe1972c6bb1494","unresolved":false,"context_lines":[{"line_number":186,"context_line":"Documentation Impact"},{"line_number":187,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Admin guide - need to document tooz requirements."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"References"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a74a57a_37589032","line":189,"range":{"start_line":189,"start_character":1,"end_line":189,"end_character":49},"updated":"2016-11-24 06:52:37.000000000","message":"we need a documentation to address the developer impact section","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"bb565fbd71044820efe897afefafda4fe0aa10ae","unresolved":false,"context_lines":[{"line_number":186,"context_line":"Documentation Impact"},{"line_number":187,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Admin guide - need to document tooz requirements."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"References"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a71b18c_fb0fea2b","line":189,"range":{"start_line":189,"start_character":1,"end_line":189,"end_character":49},"in_reply_to":"5a74a57a_37589032","updated":"2016-12-08 14:16:41.000000000","message":"Developers should be covered by a reference tooz implementation in devstack","commit_id":"d2b17ea9d141897a5eddc06235762eb3a13aaf4f"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"de7c7a61782432ab3457693c80d853b58ecbcb64","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Taking a snapshot of a share should prevent a delete of that share."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* Valid changed to access rules should always be accepted regardless of the"},{"line_number":58,"context_line":"  state of the existing access rules. Although rules are applied to the backend"},{"line_number":59,"context_line":"  asynchronously, it\u0027s valid to add multiple rules faster than the system can"},{"line_number":60,"context_line":"  apply them and expect Manila to catch up."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_caa6d352","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":15},"updated":"2016-12-13 19:22:42.000000000","message":"changes","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"3aa1e65816a9a2ad90cd908cb08002d13d6f5ad1","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Taking a snapshot of a share should prevent a delete of that share."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* Valid changed to access rules should always be accepted regardless of the"},{"line_number":58,"context_line":"  state of the existing access rules. Although rules are applied to the backend"},{"line_number":59,"context_line":"  asynchronously, it\u0027s valid to add multiple rules faster than the system can"},{"line_number":60,"context_line":"  apply them and expect Manila to catch up."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_e1448875","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":15},"in_reply_to":"1a6eadb0_caa6d352","updated":"2016-12-14 03:20:38.000000000","message":"Done","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"de7c7a61782432ab3457693c80d853b58ecbcb64","unresolved":false,"context_lines":[{"line_number":73,"context_line":"  configuration where cooperating services are on different nodes (physical,"},{"line_number":74,"context_line":"  VMs, or containers). This prevents our existing approach of using file"},{"line_number":75,"context_line":"  locks. Even though network-based file locking solutions exist, they represent"},{"line_number":76,"context_line":"  a single point of failure are an unacceptable in properly distributed"},{"line_number":77,"context_line":"  environments."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* The Manila services should be able to automatically and gracefully recover"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_0a352bf6","line":76,"range":{"start_line":76,"start_character":20,"end_line":76,"end_character":47},"updated":"2016-12-13 19:22:42.000000000","message":"\"... failure and are unacceptable...\"","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"3aa1e65816a9a2ad90cd908cb08002d13d6f5ad1","unresolved":false,"context_lines":[{"line_number":73,"context_line":"  configuration where cooperating services are on different nodes (physical,"},{"line_number":74,"context_line":"  VMs, or containers). This prevents our existing approach of using file"},{"line_number":75,"context_line":"  locks. Even though network-based file locking solutions exist, they represent"},{"line_number":76,"context_line":"  a single point of failure are an unacceptable in properly distributed"},{"line_number":77,"context_line":"  environments."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* The Manila services should be able to automatically and gracefully recover"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_c14dcc9a","line":76,"range":{"start_line":76,"start_character":20,"end_line":76,"end_character":47},"in_reply_to":"1a6eadb0_0a352bf6","updated":"2016-12-14 03:20:38.000000000","message":"Done","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"de7c7a61782432ab3457693c80d853b58ecbcb64","unresolved":false,"context_lines":[{"line_number":126,"context_line":"error conditions will become possible as we detect races earlier and"},{"line_number":127,"context_line":"report them directly."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"The changes will not be microversioned, as it won\u0027t be possible or"},{"line_number":130,"context_line":"desirable to emulate the old behavior once the changes are implemented."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Driver impact"},{"line_number":133,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_f54d3073","line":130,"range":{"start_line":129,"start_character":0,"end_line":130,"end_character":71},"updated":"2016-12-13 19:22:42.000000000","message":"please state that you are bumping the microversion.","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"3aa1e65816a9a2ad90cd908cb08002d13d6f5ad1","unresolved":false,"context_lines":[{"line_number":126,"context_line":"error conditions will become possible as we detect races earlier and"},{"line_number":127,"context_line":"report them directly."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"The changes will not be microversioned, as it won\u0027t be possible or"},{"line_number":130,"context_line":"desirable to emulate the old behavior once the changes are implemented."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Driver impact"},{"line_number":133,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_8154b421","line":130,"range":{"start_line":129,"start_character":0,"end_line":130,"end_character":71},"in_reply_to":"1a6eadb0_f54d3073","updated":"2016-12-14 03:20:38.000000000","message":"I wanted to debate this, but I think a compromise can be found. See updated language.","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"de7c7a61782432ab3457693c80d853b58ecbcb64","unresolved":false,"context_lines":[{"line_number":168,"context_line":"This will be significant. Developers will need to follow the new model for"},{"line_number":169,"context_line":"all features that involve state changes. Also care will be needed with locks"},{"line_number":170,"context_line":"to avoid deadlock situations. Holding locks for very limited time will help"},{"line_number":171,"context_line":"avoid deadlocks but in case 2 locks are ever held at the same time they need"},{"line_number":172,"context_line":"to be deadlock-proofed by establishing a lock order."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_557264ae","line":171,"range":{"start_line":171,"start_character":62,"end_line":171,"end_character":71},"updated":"2016-12-13 19:22:42.000000000","message":"add a comma between \"time\" and \"they\"","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"3aa1e65816a9a2ad90cd908cb08002d13d6f5ad1","unresolved":false,"context_lines":[{"line_number":168,"context_line":"This will be significant. Developers will need to follow the new model for"},{"line_number":169,"context_line":"all features that involve state changes. Also care will be needed with locks"},{"line_number":170,"context_line":"to avoid deadlock situations. Holding locks for very limited time will help"},{"line_number":171,"context_line":"avoid deadlocks but in case 2 locks are ever held at the same time they need"},{"line_number":172,"context_line":"to be deadlock-proofed by establishing a lock order."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_817d94b3","line":171,"range":{"start_line":171,"start_character":62,"end_line":171,"end_character":71},"in_reply_to":"1a6eadb0_557264ae","updated":"2016-12-14 03:20:38.000000000","message":"Done","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"de7c7a61782432ab3457693c80d853b58ecbcb64","unresolved":false,"context_lines":[{"line_number":193,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":196,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"Documentation Impact"},{"line_number":199,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_55a984de","line":196,"range":{"start_line":196,"start_character":15,"end_line":196,"end_character":66},"updated":"2016-12-13 19:22:42.000000000","message":"are you proposing to add rally tests or similarly high-concurrency tests within the scope of this spec?","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"3aa1e65816a9a2ad90cd908cb08002d13d6f5ad1","unresolved":false,"context_lines":[{"line_number":193,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":196,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"Documentation Impact"},{"line_number":199,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a6eadb0_217840c4","line":196,"range":{"start_line":196,"start_character":15,"end_line":196,"end_character":66},"in_reply_to":"1a6eadb0_55a984de","updated":"2016-12-14 03:20:38.000000000","message":"No, just suggesting it as an approach to improve test coverage in this area.","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"bf37698e50ebf8cd59978d04cbbc470a50eaae2f","unresolved":false,"context_lines":[{"line_number":198,"context_line":"Documentation Impact"},{"line_number":199,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"Admin guide - need to document tooz requirements."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"References"},{"line_number":204,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3a71b18c_838925cd","line":201,"range":{"start_line":201,"start_character":0,"end_line":201,"end_character":49},"updated":"2016-12-08 17:36:30.000000000","message":"\u003e Developers should be covered by a reference tooz implementation.\n\nThe reference tooz implementation should be on a truly\ndistributed system, not a hyperconverged, all-in-one  devstack implementation.","commit_id":"8a98a06a76e0264a1375968e172c6c25c86ee58e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1d1bdcc7fc0d9aa3ebe959e3956fd308bf7732a6","unresolved":false,"context_lines":[{"line_number":15,"context_line":"there are multiple copies of the same services (commonly known as"},{"line_number":16,"context_line":"Active/Active HA deployments)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The focus is on keeping all state in the database, and protecting changes to"},{"line_number":19,"context_line":"database state using briefly-held locks. Also concurrent operations which"},{"line_number":20,"context_line":"are mutually exclusive should fail as early as possible with a helpful error"},{"line_number":21,"context_line":"code to simplify the retry logic of upper layers."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_dc820f00","line":18,"updated":"2016-12-14 03:31:05.000000000","message":"s/state/states","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"8b37ca8bc7ed727a62680c9f4e2fa6c979ac6456","unresolved":false,"context_lines":[{"line_number":15,"context_line":"there are multiple copies of the same services (commonly known as"},{"line_number":16,"context_line":"Active/Active HA deployments)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The focus is on keeping all state in the database, and protecting changes to"},{"line_number":19,"context_line":"database state using briefly-held locks. Also concurrent operations which"},{"line_number":20,"context_line":"are mutually exclusive should fail as early as possible with a helpful error"},{"line_number":21,"context_line":"code to simplify the retry logic of upper layers."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_0828b7e1","line":18,"in_reply_to":"1a6eadb0_dc820f00","updated":"2016-12-14 11:00:18.000000000","message":"\"state\" is fine here.  It is true that there are may states,\nbut this is a conceptual statement, and it is normal e.g.\nfor computer scientists and system architects to talk about where \"state\" is kept.","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1d1bdcc7fc0d9aa3ebe959e3956fd308bf7732a6","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* Two snapshot operations should not be able to occur at the same time. One"},{"line_number":51,"context_line":"  must complete before the second can begin. This ensures that snapshots occur"},{"line_number":52,"context_line":"  in a known order, and prevents the useless situation of having 2 identical"},{"line_number":53,"context_line":"  snapshots."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Taking a snapshot of a share should prevent a delete of that share."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_5c77df39","line":53,"updated":"2016-12-14 03:31:05.000000000","message":"Although API is async, one volume backend can only handle one request at a time.","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"8b37ca8bc7ed727a62680c9f4e2fa6c979ac6456","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* Two snapshot operations should not be able to occur at the same time. One"},{"line_number":51,"context_line":"  must complete before the second can begin. This ensures that snapshots occur"},{"line_number":52,"context_line":"  in a known order, and prevents the useless situation of having 2 identical"},{"line_number":53,"context_line":"  snapshots."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Taking a snapshot of a share should prevent a delete of that share."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_f35b6c2c","line":53,"in_reply_to":"1a6eadb0_5c77df39","updated":"2016-12-14 11:00:18.000000000","message":"This is another reason not to allow them to be launched at the same time, right?  What backends will do (fail, queue?) if they are asked to handle concurrent snapshot requests is unpredictable and likely inconsistent.","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"d43bae6c1a5ae4e289afc348ca0d8ba0958e9907","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* Two snapshot operations should not be able to occur at the same time. One"},{"line_number":51,"context_line":"  must complete before the second can begin. This ensures that snapshots occur"},{"line_number":52,"context_line":"  in a known order, and prevents the useless situation of having 2 identical"},{"line_number":53,"context_line":"  snapshots."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Taking a snapshot of a share should prevent a delete of that share."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_317eb2ae","line":53,"in_reply_to":"1a6eadb0_5c77df39","updated":"2016-12-14 14:23:19.000000000","message":"What makes you think this? I understand the opposite, which is that the manager will create new threads for every RPC call that comes in, and the only thing that forces serialization of operations is locking inside the drivers.","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1d1bdcc7fc0d9aa3ebe959e3956fd308bf7732a6","unresolved":false,"context_lines":[{"line_number":109,"context_line":"* Not enough people understand how it works so it\u0027s likely to be hard to"},{"line_number":110,"context_line":"  maintain."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"},{"line_number":113,"context_line":"  make because updating multiple tables atomically is impossible. Locks"},{"line_number":114,"context_line":"  don\u0027t suffer from this restriction."},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_fc9c2b5f","line":112,"updated":"2016-12-14 03:31:05.000000000","message":"s/test-and-set/compare-and-swap\n\n\"compare-and-swap\" is the term Cinder used:).","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"75478696be0ed0c2a89824ecfee271c4587e9d11","unresolved":false,"context_lines":[{"line_number":109,"context_line":"* Not enough people understand how it works so it\u0027s likely to be hard to"},{"line_number":110,"context_line":"  maintain."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"},{"line_number":113,"context_line":"  make because updating multiple tables atomically is impossible. Locks"},{"line_number":114,"context_line":"  don\u0027t suffer from this restriction."},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_549cfcbf","line":112,"in_reply_to":"1a6eadb0_11ac5633","updated":"2016-12-14 14:26:51.000000000","message":"Done","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"d43bae6c1a5ae4e289afc348ca0d8ba0958e9907","unresolved":false,"context_lines":[{"line_number":109,"context_line":"* Not enough people understand how it works so it\u0027s likely to be hard to"},{"line_number":110,"context_line":"  maintain."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"* Cinder\u0027s test-and-set approach limits the kind of state changes you can"},{"line_number":113,"context_line":"  make because updating multiple tables atomically is impossible. Locks"},{"line_number":114,"context_line":"  don\u0027t suffer from this restriction."},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_11ac5633","line":112,"in_reply_to":"1a6eadb0_fc9c2b5f","updated":"2016-12-14 14:23:19.000000000","message":"ty","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1d1bdcc7fc0d9aa3ebe959e3956fd308bf7732a6","unresolved":false,"context_lines":[{"line_number":243,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":246,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Documentation Impact"},{"line_number":249,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_9cb6d7da","line":246,"updated":"2016-12-14 03:31:05.000000000","message":"Should we add a rally job to the gate?","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"ab783519c43c35962e10c0535144033c7896779f","unresolved":false,"context_lines":[{"line_number":243,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":246,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Documentation Impact"},{"line_number":249,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_14c60448","line":246,"in_reply_to":"1a6eadb0_71c02ae1","updated":"2016-12-14 14:37:11.000000000","message":"@xyang: Sorry I spoke wrong, this work has already been completed. See these 2 jobs:\n\ngate-rally-dsvm-manila-multibackend\ngate-rally-dsvm-manila-multibackend-no-ss","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"d43bae6c1a5ae4e289afc348ca0d8ba0958e9907","unresolved":false,"context_lines":[{"line_number":243,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":246,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Documentation Impact"},{"line_number":249,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_71c02ae1","line":246,"in_reply_to":"1a6eadb0_9cb6d7da","updated":"2016-12-14 14:23:19.000000000","message":"Yes but not in scope of this effort. Valeriy has been working on rally jobs for more than a year and they\u0027ve been blocked by various problems.","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"8b37ca8bc7ed727a62680c9f4e2fa6c979ac6456","unresolved":false,"context_lines":[{"line_number":245,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":246,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Documentation Impact"},{"line_number":249,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Admin guide - need to document tooz requirements."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_0e799fc8","line":248,"range":{"start_line":248,"start_character":0,"end_line":248,"end_character":20},"updated":"2016-12-14 11:00:18.000000000","message":"There needs to be a devref doc that keeps a current version\nof the state diagram above.  It *looks* right to me but (1)\nthere has been insufficient time for the community to review\nit, so some revisions may be discovered after this spec merges, (2) other state diagrams, as for access rules, should be added, (3) code changes for other reasons may force revisions.\n\nThat doc should point to this spec as well, and may end up containing additional helpful information for developers implementing the ideas in this spec.","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"d43bae6c1a5ae4e289afc348ca0d8ba0958e9907","unresolved":false,"context_lines":[{"line_number":245,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":246,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Documentation Impact"},{"line_number":249,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Admin guide - need to document tooz requirements."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_91b78685","line":248,"range":{"start_line":248,"start_character":0,"end_line":248,"end_character":20},"in_reply_to":"1a6eadb0_0e799fc8","updated":"2016-12-14 14:23:19.000000000","message":"+1","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"75478696be0ed0c2a89824ecfee271c4587e9d11","unresolved":false,"context_lines":[{"line_number":245,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":246,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Documentation Impact"},{"line_number":249,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Admin guide - need to document tooz requirements."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_749f38b4","line":248,"range":{"start_line":248,"start_character":0,"end_line":248,"end_character":20},"in_reply_to":"1a6eadb0_91b78685","updated":"2016-12-14 14:26:51.000000000","message":"Done","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1d1bdcc7fc0d9aa3ebe959e3956fd308bf7732a6","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"References"},{"line_number":254,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_9c889724","line":255,"updated":"2016-12-14 03:31:05.000000000","message":"Please add a reference to the work in progress Tooz patch.","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"8b37ca8bc7ed727a62680c9f4e2fa6c979ac6456","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"References"},{"line_number":254,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_b362d4ab","line":255,"in_reply_to":"1a6eadb0_9c889724","updated":"2016-12-14 11:00:18.000000000","message":"+1","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"75478696be0ed0c2a89824ecfee271c4587e9d11","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"References"},{"line_number":254,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a6eadb0_94a6940e","line":255,"in_reply_to":"1a6eadb0_b362d4ab","updated":"2016-12-14 14:26:51.000000000","message":"Done","commit_id":"093f09b9d75c7651f845ac7542666b76a6c9113e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7d80fb37999bd2b979a834670dad3c274ed7d94f","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"* Snapshotting"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"* States for access rules covered in access rules spec"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":".. graphviz::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a6eadb0_9713f665","line":123,"range":{"start_line":123,"start_character":50,"end_line":123,"end_character":54},"updated":"2016-12-14 15:01:14.000000000","message":"you could link to the reference section here","commit_id":"76f4bf7c4c570bee5d82e9d48b2c0d36b04c26db"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6632c0c0888d77b723474050fb14060de044ec56","unresolved":false,"context_lines":[{"line_number":89,"context_line":"state. A complete list of new share states follows in the data model impact"},{"line_number":90,"context_line":"section."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Transitions between states will always be done while holding a distributed"},{"line_number":93,"context_line":"lock. The lock will be held only for the duration of the database test-and-set"},{"line_number":94,"context_line":"operation."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"No locks will be held during calls from the share manager to the share driver."}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a6eadb0_1abb860f","line":93,"range":{"start_line":92,"start_character":63,"end_line":93,"end_character":4},"updated":"2016-12-14 16:28:01.000000000","message":"I guess \"distributed lock\" should be described somehow before mentioning it.","commit_id":"a52a5bd7bc7dd1e31b6f137aeb7ccba6db9cd93d"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"9e0ccc4024694bf07b6b244107a653af12aef31d","unresolved":false,"context_lines":[{"line_number":89,"context_line":"state. A complete list of new share states follows in the data model impact"},{"line_number":90,"context_line":"section."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Transitions between states will always be done while holding a distributed"},{"line_number":93,"context_line":"lock. The lock will be held only for the duration of the database test-and-set"},{"line_number":94,"context_line":"operation."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"No locks will be held during calls from the share manager to the share driver."}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a6eadb0_ddcd885e","line":93,"range":{"start_line":92,"start_character":63,"end_line":93,"end_character":4},"in_reply_to":"1a6eadb0_1abb860f","updated":"2016-12-14 16:46:43.000000000","message":"Done","commit_id":"a52a5bd7bc7dd1e31b6f137aeb7ccba6db9cd93d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6632c0c0888d77b723474050fb14060de044ec56","unresolved":false,"context_lines":[{"line_number":104,"context_line":"The approach used by Cinder which relies on elaborate SQL calls to"},{"line_number":105,"context_line":"test-and-set fields was considered but rejected for the following reasons:"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"* The code in Cinder can\u0027t be shared with Manila because it relies on OVO"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* Not enough people understand how it works so it\u0027s likely to be hard to"},{"line_number":110,"context_line":"  maintain."}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a6eadb0_3aea0210","line":107,"range":{"start_line":107,"start_character":70,"end_line":107,"end_character":73},"updated":"2016-12-14 16:28:01.000000000","message":"What is OVO?","commit_id":"a52a5bd7bc7dd1e31b6f137aeb7ccba6db9cd93d"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"9e0ccc4024694bf07b6b244107a653af12aef31d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"The approach used by Cinder which relies on elaborate SQL calls to"},{"line_number":105,"context_line":"test-and-set fields was considered but rejected for the following reasons:"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"* The code in Cinder can\u0027t be shared with Manila because it relies on OVO"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* Not enough people understand how it works so it\u0027s likely to be hard to"},{"line_number":110,"context_line":"  maintain."}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a6eadb0_bdd28cfe","line":107,"range":{"start_line":107,"start_character":70,"end_line":107,"end_character":73},"in_reply_to":"1a6eadb0_3aea0210","updated":"2016-12-14 16:46:43.000000000","message":"Done","commit_id":"a52a5bd7bc7dd1e31b6f137aeb7ccba6db9cd93d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6632c0c0888d77b723474050fb14060de044ec56","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Other deployer impact"},{"line_number":231,"context_line":"---------------------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Requirement to deploy and configure suitable tooz backend. Since Manila will"},{"line_number":234,"context_line":"depend on tooz for correctness, tooz backends that fail to meet the API"},{"line_number":235,"context_line":"contract won\u0027t be suitable."},{"line_number":236,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a6eadb0_dad90e85","line":233,"range":{"start_line":233,"start_character":45,"end_line":233,"end_character":49},"updated":"2016-12-14 16:28:01.000000000","message":"Need some link about tooz.","commit_id":"a52a5bd7bc7dd1e31b6f137aeb7ccba6db9cd93d"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"9e0ccc4024694bf07b6b244107a653af12aef31d","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Other deployer impact"},{"line_number":231,"context_line":"---------------------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Requirement to deploy and configure suitable tooz backend. Since Manila will"},{"line_number":234,"context_line":"depend on tooz for correctness, tooz backends that fail to meet the API"},{"line_number":235,"context_line":"contract won\u0027t be suitable."},{"line_number":236,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a6eadb0_3dde7c11","line":233,"range":{"start_line":233,"start_character":45,"end_line":233,"end_character":49},"in_reply_to":"1a6eadb0_dad90e85","updated":"2016-12-14 16:46:43.000000000","message":"Done","commit_id":"a52a5bd7bc7dd1e31b6f137aeb7ccba6db9cd93d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6632c0c0888d77b723474050fb14060de044ec56","unresolved":false,"context_lines":[{"line_number":265,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":268,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Documentation Impact"},{"line_number":271,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a6eadb0_9aceb6b2","line":268,"range":{"start_line":268,"start_character":11,"end_line":268,"end_character":67},"updated":"2016-12-14 16:28:01.000000000","message":"Rally is completely correct thing to use for such kind of things. We just need to define list of our concurrency cases and then write appropriate scenarios in rally project based on this list.","commit_id":"a52a5bd7bc7dd1e31b6f137aeb7ccba6db9cd93d"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"6ce2b9ef975db1d1c3a6618c4411413663113656","unresolved":false,"context_lines":[{"line_number":265,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":268,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Documentation Impact"},{"line_number":271,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a6eadb0_da502e61","line":268,"range":{"start_line":268,"start_character":11,"end_line":268,"end_character":67},"in_reply_to":"1a6eadb0_9aceb6b2","updated":"2016-12-14 16:35:01.000000000","message":"someone mentioned at BCN that we would enumerate this list of concurrency cases","commit_id":"a52a5bd7bc7dd1e31b6f137aeb7ccba6db9cd93d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1a7c1a0ceac8a75e486ead5b5fb0be044734c682","unresolved":false,"context_lines":[{"line_number":15,"context_line":"there are multiple copies of the same services (commonly known as"},{"line_number":16,"context_line":"Active/Active HA deployments)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The focus is on keeping all state in the database, and protecting changes to"},{"line_number":19,"context_line":"database state using briefly-held locks. Also concurrent operations which"},{"line_number":20,"context_line":"are mutually exclusive should fail as early as possible with a helpful error"},{"line_number":21,"context_line":"code to simplify the retry logic of upper layers."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a6eadb0_69b3d1e9","line":18,"updated":"2016-12-14 19:56:49.000000000","message":"Missing \"s\": s/state/states","commit_id":"ef75ba69e90d6e7596a075334e929b52f2b4d0b9"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"ee86f98b163849783e8e682cf31aa65112c2027c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"there are multiple copies of the same services (commonly known as"},{"line_number":16,"context_line":"Active/Active HA deployments)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The focus is on keeping all state in the database, and protecting changes to"},{"line_number":19,"context_line":"database state using briefly-held locks. Also concurrent operations which"},{"line_number":20,"context_line":"are mutually exclusive should fail as early as possible with a helpful error"},{"line_number":21,"context_line":"code to simplify the retry logic of upper layers."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a6eadb0_57c86ca8","line":18,"in_reply_to":"1a6eadb0_69b3d1e9","updated":"2016-12-14 20:30:53.000000000","message":"\"state\" is correct. I\u0027m using the more general phrase which covers all state and not focusing narrowly on share states or access rule states.","commit_id":"ef75ba69e90d6e7596a075334e929b52f2b4d0b9"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"993662749dd3cc1a881aa2cfb8d9404761233543","unresolved":false,"context_lines":[{"line_number":234,"context_line":"Other deployer impact"},{"line_number":235,"context_line":"---------------------"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Requirement to deploy and configure suitable Tooz_ backend. Since Manila will"},{"line_number":238,"context_line":"depend on tooz for correctness, tooz backends that fail to meet the API"},{"line_number":239,"context_line":"contract won\u0027t be suitable."},{"line_number":240,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a6eadb0_eeae0c84","line":237,"range":{"start_line":237,"start_character":45,"end_line":237,"end_character":50},"updated":"2016-12-14 17:33:50.000000000","message":"need to have the same label as the target, so either change here to `Tooz integration`_, or change below to _`Tooz`","commit_id":"ef75ba69e90d6e7596a075334e929b52f2b4d0b9"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"993662749dd3cc1a881aa2cfb8d9404761233543","unresolved":false,"context_lines":[{"line_number":282,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"_`Access rules spec`: https://review.openstack.org/#/c/399049/"},{"line_number":285,"context_line":"_Tooz integration: https://review.openstack.org/#/c/318336/"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a6eadb0_2e900443","line":285,"range":{"start_line":285,"start_character":1,"end_line":285,"end_character":17},"updated":"2016-12-14 17:33:50.000000000","message":"missed the `...` as above","commit_id":"ef75ba69e90d6e7596a075334e929b52f2b4d0b9"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"423d6fe5216966256b913ffd76ea52a3e67ad7dd","unresolved":false,"context_lines":[{"line_number":268,"context_line":"Testing"},{"line_number":269,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"Existing tests will help ensure no regressions, but to detect race"},{"line_number":272,"context_line":"conditions we need rally tests or similarly high-concurrency tests."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"Documentation Impact"},{"line_number":275,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1a6eadb0_68d5701a","line":272,"range":{"start_line":271,"start_character":0,"end_line":272,"end_character":67},"updated":"2016-12-15 10:11:43.000000000","message":"Framework for tests is second thing that should be mentioned here. List of concurrency issues is required before framework. So, please, rewrite this sentence so it says that we will need to collect all concurrency cases, compile scenarios and only then implement them in Rally.","commit_id":"5b0692e5fadc64ac8c2f169fed0b38314c754313"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"d15a8427d911127971abea548bec86771523b923","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Eliminate Race Conditions"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/manila/+spec/eliminate-race-conditions"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1a6eadb0_75537739","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":25},"updated":"2016-12-15 15:21:17.000000000","message":"if eliminating the race conditions is not in scope of spec, we should rename this to \"Mechanism for eliminating race conditions\" or something along these lines","commit_id":"98f56520a5c11aa395ceffa05b11fb4724213a68"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"d15a8427d911127971abea548bec86771523b923","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Proposed change"},{"line_number":85,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"More transitional states will be added so that operations which can conflict"},{"line_number":88,"context_line":"with other operations can be explicitly detected by looking at the share"},{"line_number":89,"context_line":"state. A complete list of new share states follows in the data model impact"},{"line_number":90,"context_line":"section."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Transitions between states will always be done while holding a distributed"},{"line_number":93,"context_line":"lock -- a lock implemented by a distributed lock manager (DLM). Use of"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1a6eadb0_f99ce1c1","line":90,"range":{"start_line":87,"start_character":0,"end_line":90,"end_character":8},"updated":"2016-12-15 15:21:17.000000000","message":"which use cases mentioned above will be included within spec implementation? \n\nonly the mechanism or also the \"snapshotting\"?","commit_id":"98f56520a5c11aa395ceffa05b11fb4724213a68"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"d15a8427d911127971abea548bec86771523b923","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"The behavioral changes related to locking will not be microversioned, as it"},{"line_number":203,"context_line":"won\u0027t be possible or desirable to emulate the old behavior once the changes"},{"line_number":204,"context_line":"are implemented. However in cases where new states are added, those changes"},{"line_number":205,"context_line":"will be microversioned so that clients which depend on the new states can"},{"line_number":206,"context_line":"detect that the server supports them."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"Driver impact"},{"line_number":209,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1a6eadb0_79c6119b","line":206,"range":{"start_line":204,"start_character":17,"end_line":206,"end_character":37},"updated":"2016-12-15 15:21:17.000000000","message":"also in scope of spec? or the separate patches that handle each use case of race conditions individually?","commit_id":"98f56520a5c11aa395ceffa05b11fb4724213a68"}],"specs/ocata/mechanism-to-prevent-race-conditions.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2f3c16e53d36c1ad3104f54aee6cf770240a232f","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        available -\u003e shrinking[label\u003d\"shrink\"];"},{"line_number":165,"context_line":"        available -\u003e extending[label\u003d\"extend\"];"},{"line_number":166,"context_line":"        available -\u003e unmanage_starting[label\u003d\"unmanage\"];"},{"line_number":167,"context_line":"        available -\u003e replication_change[label\u003d\"add replica\"];"},{"line_number":168,"context_line":"        // Automatic transitions"},{"line_number":169,"context_line":"        creating -\u003e available[label\u003d\"success\", color\u003ddarkgreen, fontcolor\u003ddarkgreen];"},{"line_number":170,"context_line":"        deleting -\u003e deleted[label\u003d\"success\", color\u003ddarkgreen, fontcolor\u003ddarkgreen];"}],"source_content_type":"text/x-rst","patch_set":17,"id":"1a6eadb0_ccb758d6","line":167,"range":{"start_line":167,"start_character":47,"end_line":167,"end_character":58},"updated":"2016-12-15 20:58:44.000000000","message":"promoting a replica","commit_id":"1b377ede1cf40c07edd8972b3a6a25aff6e8879b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2f3c16e53d36c1ad3104f54aee6cf770240a232f","unresolved":false,"context_lines":[{"line_number":254,"context_line":"Assignee(s)"},{"line_number":255,"context_line":"-----------"},{"line_number":256,"context_line":"  bswartz"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"Work Items"},{"line_number":259,"context_line":"----------"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"1a6eadb0_2c38cc3c","line":257,"range":{"start_line":257,"start_character":0,"end_line":257,"end_character":0},"updated":"2016-12-15 20:58:44.000000000","message":"you may add a minion assignee: \"gouthamr\".","commit_id":"1b377ede1cf40c07edd8972b3a6a25aff6e8879b"}]}
