)]}'
{"trove/common/exception.py":[{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"243a60f672f005c7d3c839e37c4f0a3e518fdb78","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class ReplicaSourceDatastoreVersionMismatch(TroveError):"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    message \u003d _(\"Replica source has different datastore and version. \""},{"line_number":149,"context_line":"                \"Expected datastore-version: \""},{"line_number":150,"context_line":"                \"%(replica_source_datastore)s-%(replica_source_version)s. \""},{"line_number":151,"context_line":"                \"Actual datastore-version: \""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_4e756bf8","line":148,"updated":"2014-11-25 23:42:28.000000000","message":"hate to be pedantic, but his message isn\u0027t necessarily true.\n\nthe replica source doesn\u0027t necessarily have a different datastore AND version, it might just be a different version.\n\nsuggestion (written as an example):\n\n\"The datastore and datastore-version for a replica must exactly match the datastore and datastore-version on the replication source. Expected datastore-version: 5.5. Actual datastore-version: 5.6.\"","commit_id":"d8ba51a9695aca541022e401679d52d1ed506c43"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"1ca5f01916dbc65ef15f4cef8434da339200b022","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                \"exactly match the datastore and datastore-version on the \""},{"line_number":150,"context_line":"                \"replication source. Expected datastore-version: \""},{"line_number":151,"context_line":"                \"%(replica_source_version)s. Actual datastore-version: \""},{"line_number":152,"context_line":"                \"%(replica_version)s.\")"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class DatastoreOperationNotSupported(TroveError):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_9d127307","line":152,"updated":"2015-02-25 01:06:34.000000000","message":"this could be improved by also including the datastore.\n\nex: if a deployer had \"percona\" with a version of \"5.5\" and they also had \"mysql\" with a version of \"5.5\", your error message would state:\n\n    The datastore and datastore-version for a replica must\n    exactly match the datastore and datastore-version on\n    the replication source.\n    Expected datastore-version: \"5.5\". Actual datastore-version: \"5.5\"\n\nwhich would be wildly confusing.","commit_id":"c7c7755620ca809ad31c30a7a1d1cccf282543d2"}],"trove/datastore/models.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"d123ebb57bfe1552befd73bded7d48f80d455938","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def __eq__(self, other):"},{"line_number":381,"context_line":"        return self.id \u003d\u003d other.id"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    @classmethod"},{"line_number":384,"context_line":"    def load(cls, datastore, id_or_name):"},{"line_number":385,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"da86d52c_a2e76611","line":382,"updated":"2015-02-03 01:14:48.000000000","message":"are we using this property anywhere","commit_id":"c7c7755620ca809ad31c30a7a1d1cccf282543d2"}],"trove/instance/models.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"73f29a324b66ba46c8cfc6678b6e7a80202b1e53","unresolved":false,"context_lines":[{"line_number":732,"context_line":"                raise exception.NotFound(uuid\u003dslave_of_id)"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"            # validating that replica source datastore/version are equal"},{"line_number":735,"context_line":"            replica_source \u003d Instance.load(context, slave_of_id)"},{"line_number":736,"context_line":"            if datastore_version not in [replica_source.datastore_version]:"},{"line_number":737,"context_line":"                raise exception.ReplicaSourceDatastoreVersionMismatch("},{"line_number":738,"context_line":"                    replica_source_version\u003d"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_1850580a","line":735,"updated":"2014-12-11 13:02:54.000000000","message":"So this code appears to needlessly call DBInstance.find_by twice.\n\nAbove (the block which wants to check replica of replica) first calls DBInstance.find_by to find out if the instance is a replica of a replica yada yada yada...\n\nNow here we call Instance.load() which goes and does that check one more time.\n\nSeems like an opportunity to refactor the code and do this just once.","commit_id":"704356468a00bdaeab90e880ad7a19d16b0c1ff0"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"27d58de3cafef8588879036ee45b88ba700aa639","unresolved":false,"context_lines":[{"line_number":732,"context_line":"                raise exception.NotFound(uuid\u003dslave_of_id)"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"            # validating that replica source datastore/version are equal"},{"line_number":735,"context_line":"            replica_source \u003d Instance.load(context, slave_of_id)"},{"line_number":736,"context_line":"            if datastore_version not in [replica_source.datastore_version]:"},{"line_number":737,"context_line":"                raise exception.ReplicaSourceDatastoreVersionMismatch("},{"line_number":738,"context_line":"                    replica_source_version\u003d"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_b8e66413","line":735,"in_reply_to":"3a961159_1850580a","updated":"2014-12-11 13:10:48.000000000","message":"Sure, it can be simplified, thanks for pointing it out.","commit_id":"704356468a00bdaeab90e880ad7a19d16b0c1ff0"}],"trove/tests/examples/snippets.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"074a6300f00c1a2753025c8f0e3c5d5a2144010d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from proboscis import TestProgram"},{"line_number":24,"context_line":"from proboscis.asserts import assert_equal"},{"line_number":25,"context_line":"from proboscis.asserts import assert_true"},{"line_number":26,"context_line":"from proboscis.asserts import fail"},{"line_number":27,"context_line":"from proboscis.asserts import Check"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from trove.common.utils import import_class"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_5403070f","line":26,"updated":"2014-12-08 14:44:10.000000000","message":"Note. Missing import.","commit_id":"e0baf6845fa17c4e78d3e11501ffa490a7fba8d5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"074a6300f00c1a2753025c8f0e3c5d5a2144010d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from proboscis.asserts import fail"},{"line_number":27,"context_line":"from proboscis.asserts import Check"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from trove.common.utils import import_class"},{"line_number":30,"context_line":"from troveclient.compat import TroveHTTPClient"},{"line_number":31,"context_line":"from troveclient.compat import client as trove_client"},{"line_number":32,"context_line":"from trove.tests.config import CONFIG"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_6fff5002","line":29,"updated":"2014-12-08 14:44:10.000000000","message":"Note. Missing import.","commit_id":"e0baf6845fa17c4e78d3e11501ffa490a7fba8d5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"074a6300f00c1a2753025c8f0e3c5d5a2144010d","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            return client.versions.index(conf[\u0027version_url\u0027] + \"/v1.0/\")"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        self.snippet(\"versions\", \"/v1.0\", \"GET\", 200, \"OK\","},{"line_number":250,"context_line":"                     version_call(self.client))"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"@test(depends_on\u003d[load_config_file])"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_0f108c4d","line":250,"updated":"2014-12-08 14:44:10.000000000","message":"Note. Missing method \u0027get_version\u0027 in vibility scope of get_version method.","commit_id":"e0baf6845fa17c4e78d3e11501ffa490a7fba8d5"}]}
