)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"983b4afaccdeddaaedfa0c1f6f480149d3b71a37","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Added support of resize-flavor to Redis datastore"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"trove resize-flavor was not supported for Redis;"},{"line_number":10,"context_line":"If this command is indeeded invoked, then the DB VM"},{"line_number":11,"context_line":"would be stuck at the RESIZE state forever, as the"},{"line_number":12,"context_line":"revert function (reset_configuration) is not implemented too;"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAXH%2F%2FhdA%3D","line":10,"updated":"2014-04-20 14:17:33.000000000","message":"minor point - should be \"indeed\"","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"cc3619881a6efb8984753c7eb1cbe873e0ffdee0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Added support of resize-flavor to Redis datastore"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"trove resize-flavor was not supported for Redis;"},{"line_number":10,"context_line":"If this command is indeeded invoked, then the DB VM"},{"line_number":11,"context_line":"would be stuck at the RESIZE state forever, as the"},{"line_number":12,"context_line":"revert function (reset_configuration) is not implemented too;"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAXH%2F%2FZwE%3D","line":10,"in_reply_to":"AAAAXH%2F%2FhdA%3D","updated":"2014-04-22 03:28:04.000000000","message":"Done","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"}],"trove/guestagent/datastore/redis/manager.py":[{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"983b4afaccdeddaaedfa0c1f6f480149d3b71a37","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def start_db_with_conf_changes(self, context, config_contents):"},{"line_number":101,"context_line":"        \"\"\""},{"line_number":102,"context_line":"        Start this redis instance with new conf changes."},{"line_number":103,"context_line":"        Right now this does nothing."},{"line_number":104,"context_line":"        \"\"\""},{"line_number":105,"context_line":"        app \u003d RedisApp(RedisAppStatus.get())"},{"line_number":106,"context_line":"        app.stop_db()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2Fhd0%3D","line":103,"updated":"2014-04-20 14:17:33.000000000","message":"I assume that  \"RIght now this does nothing\" is accurate after this fix?","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"cc3619881a6efb8984753c7eb1cbe873e0ffdee0","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def start_db_with_conf_changes(self, context, config_contents):"},{"line_number":101,"context_line":"        \"\"\""},{"line_number":102,"context_line":"        Start this redis instance with new conf changes."},{"line_number":103,"context_line":"        Right now this does nothing."},{"line_number":104,"context_line":"        \"\"\""},{"line_number":105,"context_line":"        app \u003d RedisApp(RedisAppStatus.get())"},{"line_number":106,"context_line":"        app.stop_db()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FZ50%3D","line":103,"in_reply_to":"AAAAXH%2F%2Fhd0%3D","updated":"2014-04-22 03:28:04.000000000","message":"Done","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"55bb9547d9e048a6b0aff8c3dcdb86a7a718b255","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        Right now this does nothing."},{"line_number":104,"context_line":"        \"\"\""},{"line_number":105,"context_line":"        app \u003d RedisApp(RedisAppStatus.get())"},{"line_number":106,"context_line":"        app.stop_db()"},{"line_number":107,"context_line":"        app.start_db_with_conf_changes(config_contents)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def stop_db(self, context, do_not_start_on_reboot\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2Fd%2FE%3D","line":106,"updated":"2014-04-21 14:54:56.000000000","message":"not thrilled that a message \"Start_db_...\" attempts a stop_db(). I\u0027d be cool if this were REstart_db_with ...\n\nShouldn\u0027t it be up to the caller to make sure that the db is stopped when calling a \"start...\" method?","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"cc3619881a6efb8984753c7eb1cbe873e0ffdee0","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        Right now this does nothing."},{"line_number":104,"context_line":"        \"\"\""},{"line_number":105,"context_line":"        app \u003d RedisApp(RedisAppStatus.get())"},{"line_number":106,"context_line":"        app.stop_db()"},{"line_number":107,"context_line":"        app.start_db_with_conf_changes(config_contents)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def stop_db(self, context, do_not_start_on_reboot\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FZ6A%3D","line":106,"in_reply_to":"AAAAXH%2F%2Fd%2FE%3D","updated":"2014-04-22 03:28:04.000000000","message":"I\u0027m taking over this patch set this week while Timothy is on vacation. Timothy originally added stop_db() since the DB was running at the time of the start_db_with_conf_changes() call which would result in a \"Redis not stopped\" exception. I\u0027ve since determined the cause is faulty service disable code. In other words, Redis is now prevented from starting on boot so that start_db_with_conf_changes() is happy.","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"}],"trove/guestagent/datastore/redis/service.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"55bb9547d9e048a6b0aff8c3dcdb86a7a718b255","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                rd_instance.ServiceStatuses.SHUTDOWN,"},{"line_number":230,"context_line":"                self.state_change_wait_time, update_db):"},{"line_number":231,"context_line":"            LOG.error(_(\u0027Could not stop Redis!\u0027))"},{"line_number":232,"context_line":"        self.status.end_install_or_restart()"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def restart(self):"},{"line_number":235,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FeAw%3D","line":232,"updated":"2014-04-21 14:54:56.000000000","message":"This is an interesting change and I\u0027m wondering why this is required. Or was it just an existing issue that is being cleaned up here?","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"cc3619881a6efb8984753c7eb1cbe873e0ffdee0","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                rd_instance.ServiceStatuses.SHUTDOWN,"},{"line_number":230,"context_line":"                self.state_change_wait_time, update_db):"},{"line_number":231,"context_line":"            LOG.error(_(\u0027Could not stop Redis!\u0027))"},{"line_number":232,"context_line":"        self.status.end_install_or_restart()"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def restart(self):"},{"line_number":235,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2Fa48%3D","line":232,"in_reply_to":"AAAAXH%2F%2FeAw%3D","updated":"2014-04-22 03:28:04.000000000","message":"I\u0027m taking over this patch set this week while Timothy is on vacation. I\u0027m not sure why Timothy modified this line. This line should not have been changed as it exposes a fleeting SHUTDOWN state to the taskmanager which raises an exception because it only expects states NEW, BUILDING, or RUNNING. wait_for_real_status_to_change_to has an update_db flag which is false by default. Moving this line out of this block means the db is updated unconditionally.","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"55bb9547d9e048a6b0aff8c3dcdb86a7a718b255","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def start_db_with_conf_changes(self, config_contents):"},{"line_number":258,"context_line":"        LOG.info(_(\"Starting redis with conf changes...\"))"},{"line_number":259,"context_line":"        LOG.info(_(\"inside the guest - self.status.is_redis_running(%s)...\")"},{"line_number":260,"context_line":"                 % self.status.is_running)"},{"line_number":261,"context_line":"        if self.status.is_running:"},{"line_number":262,"context_line":"            LOG.error(_(\"Cannot execute start_db_with_conf_changes because \""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2Fd%2Fs%3D","line":259,"updated":"2014-04-21 14:54:56.000000000","message":"Shouldn\u0027t the second of these be a debug message?","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"cc3619881a6efb8984753c7eb1cbe873e0ffdee0","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def start_db_with_conf_changes(self, config_contents):"},{"line_number":258,"context_line":"        LOG.info(_(\"Starting redis with conf changes...\"))"},{"line_number":259,"context_line":"        LOG.info(_(\"inside the guest - self.status.is_redis_running(%s)...\")"},{"line_number":260,"context_line":"                 % self.status.is_running)"},{"line_number":261,"context_line":"        if self.status.is_running:"},{"line_number":262,"context_line":"            LOG.error(_(\"Cannot execute start_db_with_conf_changes because \""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FZu8%3D","line":259,"in_reply_to":"AAAAXH%2F%2Fd%2Fs%3D","updated":"2014-04-22 03:28:04.000000000","message":"Removed the line. See next comment.","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"983b4afaccdeddaaedfa0c1f6f480149d3b71a37","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    def start_db_with_conf_changes(self, config_contents):"},{"line_number":258,"context_line":"        LOG.info(_(\"Starting redis with conf changes...\"))"},{"line_number":259,"context_line":"        LOG.info(_(\"inside the guest - self.status.is_redis_running(%s)...\")"},{"line_number":260,"context_line":"                 % self.status.is_running)"},{"line_number":261,"context_line":"        if self.status.is_running:"},{"line_number":262,"context_line":"            LOG.error(_(\"Cannot execute start_db_with_conf_changes because \""},{"line_number":263,"context_line":"                        \"Redis state \u003d\u003d %s!\") % self.status)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FhdY%3D","line":260,"updated":"2014-04-20 14:17:33.000000000","message":"These 2 log messages seem verbose. How about 1 that says:\n\"Starting redis with conf change. Current status is %s\"...","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"cc3619881a6efb8984753c7eb1cbe873e0ffdee0","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    def start_db_with_conf_changes(self, config_contents):"},{"line_number":258,"context_line":"        LOG.info(_(\"Starting redis with conf changes...\"))"},{"line_number":259,"context_line":"        LOG.info(_(\"inside the guest - self.status.is_redis_running(%s)...\")"},{"line_number":260,"context_line":"                 % self.status.is_running)"},{"line_number":261,"context_line":"        if self.status.is_running:"},{"line_number":262,"context_line":"            LOG.error(_(\"Cannot execute start_db_with_conf_changes because \""},{"line_number":263,"context_line":"                        \"Redis state \u003d\u003d %s!\") % self.status)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FZ34%3D","line":260,"in_reply_to":"AAAAXH%2F%2FhdY%3D","updated":"2014-04-22 03:28:04.000000000","message":"I think more verbose error message is good enough rather than state status here too.","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"55bb9547d9e048a6b0aff8c3dcdb86a7a718b255","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        if self.status.is_running:"},{"line_number":262,"context_line":"            LOG.error(_(\"Cannot execute start_db_with_conf_changes because \""},{"line_number":263,"context_line":"                        \"Redis state \u003d\u003d %s!\") % self.status)"},{"line_number":264,"context_line":"            raise RuntimeError(\"Redis not stopped.\")"},{"line_number":265,"context_line":"        LOG.info(_(\"Initiating config.\"))"},{"line_number":266,"context_line":"        self.write_config(config_contents)"},{"line_number":267,"context_line":"        self.start_redis(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FeAA%3D","line":264,"updated":"2014-04-21 14:54:56.000000000","message":"Is the message correct? Shouldn\u0027t it be \"Redis did not start, or some such?\"","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"983b4afaccdeddaaedfa0c1f6f480149d3b71a37","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        if self.status.is_running:"},{"line_number":262,"context_line":"            LOG.error(_(\"Cannot execute start_db_with_conf_changes because \""},{"line_number":263,"context_line":"                        \"Redis state \u003d\u003d %s!\") % self.status)"},{"line_number":264,"context_line":"            raise RuntimeError(\"Redis not stopped.\")"},{"line_number":265,"context_line":"        LOG.info(_(\"Initiating config.\"))"},{"line_number":266,"context_line":"        self.write_config(config_contents)"},{"line_number":267,"context_line":"        self.start_redis(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FhdI%3D","line":264,"updated":"2014-04-20 14:17:33.000000000","message":"Shouldn\u0027t the raised exception have similar detail to the log message? \n\"Redis cannot be started with config changes because it is not stopped. Current status is %s\"","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"cc3619881a6efb8984753c7eb1cbe873e0ffdee0","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        if self.status.is_running:"},{"line_number":262,"context_line":"            LOG.error(_(\"Cannot execute start_db_with_conf_changes because \""},{"line_number":263,"context_line":"                        \"Redis state \u003d\u003d %s!\") % self.status)"},{"line_number":264,"context_line":"            raise RuntimeError(\"Redis not stopped.\")"},{"line_number":265,"context_line":"        LOG.info(_(\"Initiating config.\"))"},{"line_number":266,"context_line":"        self.write_config(config_contents)"},{"line_number":267,"context_line":"        self.start_redis(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FZuw%3D","line":264,"in_reply_to":"AAAAXH%2F%2FeAA%3D","updated":"2014-04-22 03:28:04.000000000","message":"Just changed the exception message. See previous comment.","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"cc3619881a6efb8984753c7eb1cbe873e0ffdee0","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        if self.status.is_running:"},{"line_number":262,"context_line":"            LOG.error(_(\"Cannot execute start_db_with_conf_changes because \""},{"line_number":263,"context_line":"                        \"Redis state \u003d\u003d %s!\") % self.status)"},{"line_number":264,"context_line":"            raise RuntimeError(\"Redis not stopped.\")"},{"line_number":265,"context_line":"        LOG.info(_(\"Initiating config.\"))"},{"line_number":266,"context_line":"        self.write_config(config_contents)"},{"line_number":267,"context_line":"        self.start_redis(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FZ30%3D","line":264,"in_reply_to":"AAAAXH%2F%2FhdI%3D","updated":"2014-04-22 03:28:04.000000000","message":"Done","commit_id":"0cfe7dc06f280ea2b433a1173ba0390f4699fb59"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"50cd533450b75578d0d78fd9d23e08f6a96ee8be","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            LOG.info(_(\"OS Using Upstart\"))"},{"line_number":207,"context_line":"            utils.execute_with_timeout(\u0027echo\u0027,"},{"line_number":208,"context_line":"                                       \"\u0027manual\u0027\","},{"line_number":209,"context_line":"                                       \u0027\u003e\u003e\u0027,"},{"line_number":210,"context_line":"                                       system.REDIS_INIT,"},{"line_number":211,"context_line":"                                       run_as_root\u003dTrue,"},{"line_number":212,"context_line":"                                       root_helper\u003d\u0027sudo\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXH%2F%2FZmg%3D","side":"PARENT","line":209,"updated":"2014-04-22 03:52:57.000000000","message":"I replaced this implementation entirely with service_discovery since this didn\u0027t appear to work. I assume because shell redirection is used and shell\u003dFalse by default.","commit_id":"bfdd1302da1e486e253018ff1f2df069ab1b39c3"}],"trove/tests/unittests/guestagent/test_dbaas.py":[{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"50cd533450b75578d0d78fd9d23e08f6a96ee8be","unresolved":false,"context_lines":[{"line_number":1276,"context_line":"                utils.execute_with_timeout.assert_any_call("},{"line_number":1277,"context_line":"                    \u0027sudo \u0027 + RedisSystem.REDIS_CMD_DISABLE,"},{"line_number":1278,"context_line":"                    shell\u003dTrue)"},{"line_number":1279,"context_line":""},{"line_number":1280,"context_line":"    def test_stop_db_without_fail(self):"},{"line_number":1281,"context_line":"        mock_status \u003d MagicMock()"},{"line_number":1282,"context_line":"        mock_status.wait_for_real_status_to_change_to \u003d MagicMock("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXH%2F%2FZmI%3D","side":"PARENT","line":1279,"updated":"2014-04-22 03:52:57.000000000","message":"Need to discuss if this is OK to remove given the new service_discovery-based implementation. I would rather spend the effort to unit test service_discovery as unit tests above would be duplicated for every datastore. Note: Other datastores don\u0027t have tests for enable and disable (that I could find).","commit_id":"bfdd1302da1e486e253018ff1f2df069ab1b39c3"}]}
