)]}'
{"gnocchi/storage/ceph.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"6bd896799d90367f4df311ae4927609949e8011f","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        return len(metrics), count, metric_details if details else None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def _list_object_names_to_process(self, ioctx, prefix\u003d\"\"):"},{"line_number":162,"context_line":"        # FIXME(sileht): Allow upgrade from xattrs"},{"line_number":163,"context_line":"        with rados.ReadOpCtx() as op:"},{"line_number":164,"context_line":"            omaps, ret \u003d ioctx.get_omap_vals(op, \"\", prefix, -1)"},{"line_number":165,"context_line":"            ioctx.operate_read_op("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_6b37dbe3","line":162,"range":{"start_line":162,"start_character":10,"end_line":162,"end_character":50},"updated":"2016-03-21 08:50:37.000000000","message":"This is going a show stopper for this patch right now :/","commit_id":"96bee0a8e005d30fcfd94687755efb97abc4ce37"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"de9df06cdf6b191487ad455c1f6cc479cc3dcf4a","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        return len(metrics), count, metric_details if details else None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def _list_object_names_to_process(self, ioctx, prefix\u003d\"\"):"},{"line_number":162,"context_line":"        # FIXME(sileht): Allow upgrade from xattrs"},{"line_number":163,"context_line":"        with rados.ReadOpCtx() as op:"},{"line_number":164,"context_line":"            omaps, ret \u003d ioctx.get_omap_vals(op, \"\", prefix, -1)"},{"line_number":165,"context_line":"            ioctx.operate_read_op("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_c52240b9","line":162,"range":{"start_line":162,"start_character":10,"end_line":162,"end_character":50},"in_reply_to":"fa0719c6_6b37dbe3","updated":"2016-03-21 14:56:53.000000000","message":"This is just a comment I have missed to remove, the upgrade method is ready !","commit_id":"96bee0a8e005d30fcfd94687755efb97abc4ce37"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bf1d01837253d78635904e73b8aaafb596fea100","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        # we are safe and good."},{"line_number":108,"context_line":"        self.OMAP_WRITE_FLAGS \u003d rados.LIBRADOS_OPERATION_SKIPRWLOCKS"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def upgrade(self, index):"},{"line_number":111,"context_line":"        super(CephStorage, self).upgrade(index)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Move names stored in xattrs to omap"},{"line_number":114,"context_line":"        with self._get_ioctx() as ioctx:"},{"line_number":115,"context_line":"            try:"},{"line_number":116,"context_line":"                xattrs \u003d tuple(k for k, v in"},{"line_number":117,"context_line":"                               ioctx.get_xattrs(self.MEASURE_PREFIX))"},{"line_number":118,"context_line":"            except rados.ObjectNotFound:"},{"line_number":119,"context_line":"                return"},{"line_number":120,"context_line":"            with rados.WriteOpCtx() as op:"},{"line_number":121,"context_line":"                ioctx.set_omap(op, xattrs, xattrs)"},{"line_number":122,"context_line":"                ioctx.operate_write_op(op, self.MEASURE_PREFIX)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"            for xattr in xattrs:"},{"line_number":125,"context_line":"                ioctx.rm_xattr(self.MEASURE_PREFIX, xattr)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _store_measures(self, metric, data):"},{"line_number":128,"context_line":"        # NOTE(sileht): list all objects in a pool is too slow with"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_9df4fc87","line":125,"range":{"start_line":110,"start_character":3,"end_line":125,"end_character":58},"updated":"2016-03-22 09:48:47.000000000","message":"This does not seem to work with:\n\nhttp://gnocchi.xyz/install.html?highlight\u003dupgrade#minimal-interruption-upgrade\n\n\nBecause I don\u0027t think you lock the MEASURES_PREFIX here, so there might be some race condition and measures lost, no?","commit_id":"4be8055480399c622cffc181d84dcb90337e6050"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"c2bb29606d1fc158b82ebc91603f0412ffbbad4a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        # we are safe and good."},{"line_number":108,"context_line":"        self.OMAP_WRITE_FLAGS \u003d rados.LIBRADOS_OPERATION_SKIPRWLOCKS"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def upgrade(self, index):"},{"line_number":111,"context_line":"        super(CephStorage, self).upgrade(index)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Move names stored in xattrs to omap"},{"line_number":114,"context_line":"        with self._get_ioctx() as ioctx:"},{"line_number":115,"context_line":"            try:"},{"line_number":116,"context_line":"                xattrs \u003d tuple(k for k, v in"},{"line_number":117,"context_line":"                               ioctx.get_xattrs(self.MEASURE_PREFIX))"},{"line_number":118,"context_line":"            except rados.ObjectNotFound:"},{"line_number":119,"context_line":"                return"},{"line_number":120,"context_line":"            with rados.WriteOpCtx() as op:"},{"line_number":121,"context_line":"                ioctx.set_omap(op, xattrs, xattrs)"},{"line_number":122,"context_line":"                ioctx.operate_write_op(op, self.MEASURE_PREFIX)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"            for xattr in xattrs:"},{"line_number":125,"context_line":"                ioctx.rm_xattr(self.MEASURE_PREFIX, xattr)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _store_measures(self, metric, data):"},{"line_number":128,"context_line":"        # NOTE(sileht): list all objects in a pool is too slow with"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_7cee38b5","line":125,"range":{"start_line":110,"start_character":3,"end_line":125,"end_character":58},"in_reply_to":"fa0719c6_9df4fc87","updated":"2016-03-23 06:27:45.000000000","message":"Fixed, at this step metricd is stopped, so only API can write new measures and all API must already run the new code and don\u0027t use xattr anymore.","commit_id":"4be8055480399c622cffc181d84dcb90337e6050"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8a8f5ea3038d4342daa3f844a802a799feeffa77","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            with rados.WriteOpCtx() as op:"},{"line_number":207,"context_line":"                # NOTE(sileht): come on Ceph, no return code"},{"line_number":208,"context_line":"                # for this operation ?!!"},{"line_number":209,"context_line":"                ctx.remove_omap_keys(op, tuple(object_names))"},{"line_number":210,"context_line":"                ctx.operate_write_op(op, self.MEASURE_PREFIX,"},{"line_number":211,"context_line":"                                     flags\u003dself.OMAP_WRITE_FLAGS)"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_96bfb6fa","line":209,"updated":"2016-03-22 11:46:54.000000000","message":"we should remove this before we delete objects no? since we async delete objects we don\u0027t want to delete and have it possibly still be accessible?","commit_id":"4be8055480399c622cffc181d84dcb90337e6050"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"c2bb29606d1fc158b82ebc91603f0412ffbbad4a","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            with rados.WriteOpCtx() as op:"},{"line_number":207,"context_line":"                # NOTE(sileht): come on Ceph, no return code"},{"line_number":208,"context_line":"                # for this operation ?!!"},{"line_number":209,"context_line":"                ctx.remove_omap_keys(op, tuple(object_names))"},{"line_number":210,"context_line":"                ctx.operate_write_op(op, self.MEASURE_PREFIX,"},{"line_number":211,"context_line":"                                     flags\u003dself.OMAP_WRITE_FLAGS)"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_dc2b04ea","line":209,"in_reply_to":"fa0719c6_96bfb6fa","updated":"2016-03-23 06:27:45.000000000","message":"Done","commit_id":"4be8055480399c622cffc181d84dcb90337e6050"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8a8f5ea3038d4342daa3f844a802a799feeffa77","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                # NOTE(sileht): come on Ceph, no return code"},{"line_number":233,"context_line":"                # for this operation ?!!"},{"line_number":234,"context_line":"                ctx.remove_omap_keys(op, tuple(object_names))"},{"line_number":235,"context_line":"                ctx.operate_write_op(op, self.MEASURE_PREFIX,"},{"line_number":236,"context_line":"                                     flags\u003dself.OMAP_WRITE_FLAGS)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def _get_ioctx(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_b63aba96","line":235,"updated":"2016-03-22 11:46:54.000000000","message":"same","commit_id":"4be8055480399c622cffc181d84dcb90337e6050"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"c2bb29606d1fc158b82ebc91603f0412ffbbad4a","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                # NOTE(sileht): come on Ceph, no return code"},{"line_number":233,"context_line":"                # for this operation ?!!"},{"line_number":234,"context_line":"                ctx.remove_omap_keys(op, tuple(object_names))"},{"line_number":235,"context_line":"                ctx.operate_write_op(op, self.MEASURE_PREFIX,"},{"line_number":236,"context_line":"                                     flags\u003dself.OMAP_WRITE_FLAGS)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def _get_ioctx(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_bc2e10f8","line":235,"in_reply_to":"fa0719c6_b63aba96","updated":"2016-03-23 06:27:45.000000000","message":"Done","commit_id":"4be8055480399c622cffc181d84dcb90337e6050"},{"author":{"_account_id":1955,"name":"Alan Pevec","email":"alan.pevec@redhat.com","username":"apevec"},"change_message_id":"b5d18cd1e1e735d7ded85212647a20067e042e66","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        if not hasattr(rados, \u0027OmapIterator\u0027):"},{"line_number":73,"context_line":"            raise ImportError(\"Your rados python module does not support \""},{"line_number":74,"context_line":"                              \"omap feature. Upgrade \u0027python-rados\u0027 or \""},{"line_number":75,"context_line":"                              \"install \u0027cradox\u0027\")"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        LOG.info(\"Ceph storage backend use \u0027%s\u0027 python library\" %"}],"source_content_type":"text/x-python","patch_set":9,"id":"da0c15f0_4af3f10a","line":74,"range":{"start_line":74,"start_character":45,"end_line":74,"end_character":67},"updated":"2016-03-24 23:16:39.000000000","message":"What is the minimum version required for python-rados after this change?\n\nCan you please specify it in setup.cfg [extras] ?","commit_id":"346011bd5fb90aaf6f5c4882c2b3b58e8fd980b0"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"252673b4bbc9c35a572ab137bce9b87cd3fd42fd","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        if not hasattr(rados, \u0027OmapIterator\u0027):"},{"line_number":73,"context_line":"            raise ImportError(\"Your rados python module does not support \""},{"line_number":74,"context_line":"                              \"omap feature. Upgrade \u0027python-rados\u0027 or \""},{"line_number":75,"context_line":"                              \"install \u0027cradox\u0027\")"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        LOG.info(\"Ceph storage backend use \u0027%s\u0027 python library\" %"}],"source_content_type":"text/x-python","patch_set":9,"id":"da0c15f0_895b4e54","line":74,"range":{"start_line":74,"start_character":45,"end_line":74,"end_character":67},"in_reply_to":"da0c15f0_4af3f10a","updated":"2016-03-25 08:02:51.000000000","message":"I have uploaded this to make thing clearer: https://review.openstack.org/#/c/297562/\n\nAnd also published a new version of \u0027cradox\u0027, with some bug fixes and the README.md improved too.","commit_id":"346011bd5fb90aaf6f5c4882c2b3b58e8fd980b0"}]}
