)]}'
{"gnocchi/storage/incoming/ceph.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e24859b741ed0f81d4b0d2917abe06305dfd1d00","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        ceph.close_rados_connection(self.rados, self.ioctx)"},{"line_number":55,"context_line":"        super(CephStorage, self).stop()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def upgrade(self, index):"},{"line_number":58,"context_line":"        super(CephStorage, self).upgrade(index)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        # Move names stored in xattrs to omap"}],"source_content_type":"text/x-python","patch_set":8,"id":"7ffa3b31_009eb462","side":"PARENT","line":57,"updated":"2017-04-14 14:47:56.000000000","message":"this does not seem related\n\ni understand you want to delete it :) but can you do in a different patch, for the sake of it?","commit_id":"515874fe6a8ab51b6ad8b95e645a298830df4fad"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0369cecac8b5d93e6b60ab6b767139ccfe38af7c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        ceph.close_rados_connection(self.rados, self.ioctx)"},{"line_number":55,"context_line":"        super(CephStorage, self).stop()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def upgrade(self, index):"},{"line_number":58,"context_line":"        super(CephStorage, self).upgrade(index)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        # Move names stored in xattrs to omap"}],"source_content_type":"text/x-python","patch_set":8,"id":"7ffa3b31_46ddcd12","side":"PARENT","line":57,"in_reply_to":"7ffa3b31_009eb462","updated":"2017-04-17 18:11:10.000000000","message":"done","commit_id":"515874fe6a8ab51b6ad8b95e645a298830df4fad"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"fd6954a688bd2738b9f760d536fb9797cbbc44e9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            data \u003d self._encode_measures(measures)"},{"line_number":72,"context_line":"            self.ioctx.write_full(name, data)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        for sack, names in names_by_sack.items():"},{"line_number":75,"context_line":"            with rados.WriteOpCtx() as op:"},{"line_number":76,"context_line":"                # NOTE(sileht): list all objects in a pool is too slow with"},{"line_number":77,"context_line":"                # many objects (2min for 20000 objects in 50osds cluster),"}],"source_content_type":"text/x-python","patch_set":16,"id":"5ff73747_fdebba74","line":74,"updated":"2017-04-28 18:57:43.000000000","message":"i did a rough bench. this is ~20% slower than existing code[1] and ~15% faster than pre-batch code. i could in theory keep writing to a single object and prefix the keys by sack to maintain write performance. but that leaves us to read/write from same OSD.\n\ni\u0027m going to try maybe threading obj and omp writes? not sure what other options we have.\n\n\n[1] https://github.com/openstack/gnocchi/blob/c3d6b2fab7b5f4864ab9a2e6985eaf0a40defafa/gnocchi/storage/incoming/ceph.py#L70-L79","commit_id":"619893fa3b5d3096e402dfb7edcc5916a5b8ba01"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4dcb70f891e5a88a0a6e9532d9bc9a56bb57bd6a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            data \u003d self._encode_measures(measures)"},{"line_number":72,"context_line":"            self.ioctx.write_full(name, data)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        for sack, names in names_by_sack.items():"},{"line_number":75,"context_line":"            with rados.WriteOpCtx() as op:"},{"line_number":76,"context_line":"                # NOTE(sileht): list all objects in a pool is too slow with"},{"line_number":77,"context_line":"                # many objects (2min for 20000 objects in 50osds cluster),"}],"source_content_type":"text/x-python","patch_set":16,"id":"5ff73747_3ca59a47","line":74,"in_reply_to":"5ff73747_fdebba74","updated":"2017-04-29 15:32:23.000000000","message":"I think it\u0027s ok. It\u0027s part of the trade-off of having multiple sacks.","commit_id":"619893fa3b5d3096e402dfb7edcc5916a5b8ba01"},{"author":{"_account_id":12484,"name":"jazeltq","email":"tianqing@unitedstack.com","username":"litianqing"},"change_message_id":"196ce13fb498a3a262d622bb341c222e2eb332b1","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                # omap the list of objects to process (not xattr because"},{"line_number":80,"context_line":"                # it doesn\u0027t # allow to configure the locking behavior)"},{"line_number":81,"context_line":"                self.ioctx.set_omap(op, tuple(names), (b\"\",) * len(names))"},{"line_number":82,"context_line":"                self.ioctx.operate_write_op(op, sack,"},{"line_number":83,"context_line":"                                            flags\u003dself.OMAP_WRITE_FLAGS)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _build_report(self, details):"}],"source_content_type":"text/x-python","patch_set":17,"id":"5ff73747_06626e0a","line":82,"range":{"start_line":82,"start_character":27,"end_line":82,"end_character":43},"updated":"2017-05-02 03:26:31.000000000","message":"Here, can we use operate_aio_write_op? Then the benchmark may be nice than before.....","commit_id":"0c92cb6bb8827c551de2fad11a9bffd5f9bf2b2a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"29539586274ee10f89a0539979f36d869f0ea33b","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                # omap the list of objects to process (not xattr because"},{"line_number":80,"context_line":"                # it doesn\u0027t # allow to configure the locking behavior)"},{"line_number":81,"context_line":"                self.ioctx.set_omap(op, tuple(names), (b\"\",) * len(names))"},{"line_number":82,"context_line":"                self.ioctx.operate_write_op(op, sack,"},{"line_number":83,"context_line":"                                            flags\u003dself.OMAP_WRITE_FLAGS)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _build_report(self, details):"}],"source_content_type":"text/x-python","patch_set":17,"id":"5ff73747_d1c79464","line":82,"range":{"start_line":82,"start_character":27,"end_line":82,"end_character":43},"in_reply_to":"5ff73747_06626e0a","updated":"2017-05-02 13:26:43.000000000","message":"i think this is possible? sileht had a patch one time: https://review.openstack.org/gitweb?p\u003dopenstack/gnocchi.git;a\u003dcommitdiff;h\u003d48a681b8969bab759d1338a8a9d23ce851b2d97c\n\nneed to ask him if it\u0027s valid.","commit_id":"0c92cb6bb8827c551de2fad11a9bffd5f9bf2b2a"},{"author":{"_account_id":12484,"name":"jazeltq","email":"tianqing@unitedstack.com","username":"litianqing"},"change_message_id":"316e71ea5b28ccb9dcef68d2718dae9693e23a70","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                # omap the list of objects to process (not xattr because"},{"line_number":80,"context_line":"                # it doesn\u0027t # allow to configure the locking behavior)"},{"line_number":81,"context_line":"                self.ioctx.set_omap(op, tuple(names), (b\"\",) * len(names))"},{"line_number":82,"context_line":"                self.ioctx.operate_write_op(op, sack,"},{"line_number":83,"context_line":"                                            flags\u003dself.OMAP_WRITE_FLAGS)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _build_report(self, details):"}],"source_content_type":"text/x-python","patch_set":17,"id":"5ff73747_393a0434","line":82,"range":{"start_line":82,"start_character":27,"end_line":82,"end_character":43},"in_reply_to":"5ff73747_d1c79464","updated":"2017-05-03 08:19:36.000000000","message":"yeh. It seems that sileht only add async to process not to add measures.  We can add this and test it. I think it will be better...","commit_id":"0c92cb6bb8827c551de2fad11a9bffd5f9bf2b2a"}]}
