)]}'
{"test/probe/test_sharder.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"e7e4b51b4a44f55b4b54d61c64d114268c6336ce","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        self.sharders \u003d Manager([\u0027container-sharder\u0027])"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def direct_container_op(self, func, account\u003dNone, container\u003dNone,"},{"line_number":67,"context_line":"                            expect_failure\u003dFalse):"},{"line_number":68,"context_line":"        account \u003d account if account else self.account"},{"line_number":69,"context_line":"        container \u003d container if container else self.container_name"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_dcbfe5a7","line":66,"range":{"start_line":66,"start_character":34,"end_line":66,"end_character":38},"updated":"2017-12-08 05:49:59.000000000","message":"Instead of passing a func around we could just use the op as the method name says, something like: http://paste.openstack.org/show/628406/","commit_id":"8a587275be39432c32efb0d52a202f88fae661f2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"72c7ee6caf2166e75f31344b87627a965dcb1372","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        self.sharders \u003d Manager([\u0027container-sharder\u0027])"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def direct_container_op(self, func, account\u003dNone, container\u003dNone,"},{"line_number":67,"context_line":"                            expect_failure\u003dFalse):"},{"line_number":68,"context_line":"        account \u003d account if account else self.account"},{"line_number":69,"context_line":"        container \u003d container if container else self.container_name"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_4f7c671e","line":66,"range":{"start_line":66,"start_character":34,"end_line":66,"end_character":38},"in_reply_to":"df87a7cf_dcbfe5a7","updated":"2017-12-08 18:26:15.000000000","message":"That works too. I think I prefer to avoid using string literals though - there is always the (albeit small) chance of regression if a refactoring changes a function name and the call site doesn\u0027t get changed because it was using getattr(\u0027func name\u0027)","commit_id":"8a587275be39432c32efb0d52a202f88fae661f2"}],"test/unit/container/test_backend.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"cce44c41ffa740ac4b3e1d64fc104f91809a392d","unresolved":false,"context_lines":[{"line_number":2629,"context_line":"        # sanity check - if root is marked deleted, it still considers itself"},{"line_number":2630,"context_line":"        # to be a root"},{"line_number":2631,"context_line":"        broker.delete_db(next(ts_iter).internal)"},{"line_number":2632,"context_line":"        self.assertEqual(\u0027root_a\u0027, broker.root_account)"},{"line_number":2633,"context_line":"        self.assertEqual(\u0027root_c\u0027, broker.root_container)"},{"line_number":2634,"context_line":"        self.assertEqual(\u0027root_a/root_c\u0027, broker.root_path)"},{"line_number":2635,"context_line":"        self.assertTrue(broker.is_root_container())"},{"line_number":2636,"context_line":""},{"line_number":2637,"context_line":"        # check a shard container"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_5c3d15db","line":2634,"range":{"start_line":2632,"start_character":8,"end_line":2634,"end_character":59},"updated":"2017-12-08 06:16:29.000000000","message":"This isn\u0027t actually true. It works in the test because the data has been cached into the brokers _root_account/container instance variables. BUT is you create a broker from the deleted db, then these will come back as empty (\u0027\u0027) strings.\n\nEg. if I do this after line 2632:\n\n\n  \u003e\u003e\u003e broker2 \u003d ContainerBroker(broker.db_file)\n  \u003e\u003e\u003e broker2.is_deleted()\n  True\n  \u003e\u003e\u003e broker2.root_account\n  \u0027\u0027\n  \u003e\u003e\u003e broker2.root_container\n  \u0027\u0027\n  \u003e\u003e\u003e broker2.root_path\n  \u0027/\u0027\n  \u003e\u003e\u003e broker2.is_root_container()\n  False","commit_id":"8a587275be39432c32efb0d52a202f88fae661f2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"72c7ee6caf2166e75f31344b87627a965dcb1372","unresolved":false,"context_lines":[{"line_number":2629,"context_line":"        # sanity check - if root is marked deleted, it still considers itself"},{"line_number":2630,"context_line":"        # to be a root"},{"line_number":2631,"context_line":"        broker.delete_db(next(ts_iter).internal)"},{"line_number":2632,"context_line":"        self.assertEqual(\u0027root_a\u0027, broker.root_account)"},{"line_number":2633,"context_line":"        self.assertEqual(\u0027root_c\u0027, broker.root_container)"},{"line_number":2634,"context_line":"        self.assertEqual(\u0027root_a/root_c\u0027, broker.root_path)"},{"line_number":2635,"context_line":"        self.assertTrue(broker.is_root_container())"},{"line_number":2636,"context_line":""},{"line_number":2637,"context_line":"        # check a shard container"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_6fb36b0b","line":2634,"range":{"start_line":2632,"start_character":8,"end_line":2634,"end_character":59},"in_reply_to":"df87a7cf_5c3d15db","updated":"2017-12-08 18:26:15.000000000","message":"eek!\n\nturns out this is because of lines 2616-2620 where the root container was given sysmeta-shard-root (which as noted should never happen) - when the db is deleted the sysmeta is set to \u0027\u0027 and that causes the root to behave like a deleted shard. So the test scenario was bogus.","commit_id":"8a587275be39432c32efb0d52a202f88fae661f2"}]}
