)]}'
{"monasca_persister/conf/influxdb.py":[{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7c4885c4e12d181cc685085812648753a9c73f76","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    cfg.HostAddressOpt(\u0027ip_address\u0027,"},{"line_number":25,"context_line":"                       help\u003d\u0027Valid IP address or hostname \u0027"},{"line_number":26,"context_line":"                            \u0027to InfluxDB instance\u0027),"},{"line_number":27,"context_line":"    cfg.PortOpt(\u0027port\u0027, default\u003d8086,"},{"line_number":28,"context_line":"                help\u003d\u0027port to influxdb\u0027),"},{"line_number":29,"context_line":"    cfg.StrOpt(\u0027user\u0027, default\u003d\u0027mon_persister\u0027,"},{"line_number":30,"context_line":"               help\u003d\u0027influxdb user\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_89756466","line":27,"range":{"start_line":27,"start_character":4,"end_line":27,"end_character":5},"updated":"2019-08-05 13:49:21.000000000","message":"We should always strive for the minimal set of changes to implement the feature. Please revert the refactoring.","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"}],"monasca_persister/repositories/cassandra/metrics_repository.py":[{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7c4885c4e12d181cc685085812648753a9c73f76","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                 metric.time_stamp))"},{"line_number":217,"context_line":"            self._metric_batch.add_measurement_query(measurement_insert_bound_stmt)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"            return metric, tenant_id"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def write_batch(self, metrics, tenant_id\u003dNone):"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_0933b415","line":219,"updated":"2019-08-05 13:49:21.000000000","message":"The tenant ID is already in the metric - can we avoid returning it here?","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"d0a5461a5c54f8b751939042b157a9bf90ec56cb","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                 metric.time_stamp))"},{"line_number":217,"context_line":"            self._metric_batch.add_measurement_query(measurement_insert_bound_stmt)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"            return metric, tenant_id"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def write_batch(self, metrics, tenant_id\u003dNone):"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_1df48bce","line":219,"in_reply_to":"7faddb67_0933b415","updated":"2019-09-02 08:49:42.000000000","message":"Any thoughts on this?","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"bf98100a096bbed826d6d37f9d6648fc84ad46e3","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                 metric.time_stamp))"},{"line_number":217,"context_line":"            self._metric_batch.add_measurement_query(measurement_insert_bound_stmt)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"            return metric, tenant_id"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def write_batch(self, metrics, tenant_id\u003dNone):"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_9dbf1bcf","line":219,"in_reply_to":"7faddb67_0933b415","updated":"2019-09-02 09:21:55.000000000","message":"Yes, it the case of cassandra, this is the case but in the case of InfluxDB, the returned value is a string so we\u0027d have to reprocess it again to get the tenant_id out.","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7c4885c4e12d181cc685085812648753a9c73f76","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            self._dimension_cache.currsize)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    @staticmethod"},{"line_number":256,"context_line":"    def _get_dimension_key(region, tenant_id, name, value):"},{"line_number":257,"context_line":"        return \u0027%s\\0%s\\0%s\\0%s\u0027 % (region, tenant_id, name, value)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _load_metric_dimension_cache(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_090734cc","line":256,"range":{"start_line":256,"start_character":4,"end_line":256,"end_character":7},"updated":"2019-08-05 13:49:21.000000000","message":"nit: please make a separate commit for the typo fix.","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"ff454a9ff1e66809823fbc97c00a623107ddc4f3","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            metric_id \u003d hashlib.sha1(hash_string.encode(\u0027utf8\u0027)).hexdigest()"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"            # TODO(brtknr): If database per tenant becomes the default and the"},{"line_number":140,"context_line":"            # only option, recording tenant_id will be redundant."},{"line_number":141,"context_line":"            metric \u003d Metric(id\u003dmetric_id,"},{"line_number":142,"context_line":"                            region\u003dregion,"},{"line_number":143,"context_line":"                            tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_efb68d25","line":140,"updated":"2019-09-02 16:22:36.000000000","message":"I think it should, because it makes it a lot easier to implement things like retention policies as a function of tenant, and improves security through better isolation.","commit_id":"da959f0f385a1a5ca69e9adc212671526a078d5f"}],"monasca_persister/repositories/influxdb/abstract_repository.py":[{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7c4885c4e12d181cc685085812648753a9c73f76","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self):"},{"line_number":27,"context_line":"        super(AbstractInfluxdbRepository, self).__init__()"},{"line_number":28,"context_line":"        self.conf \u003d cfg.CONF.influxdb"},{"line_number":29,"context_line":"        self._influxdb_client \u003d influxdb.InfluxDBClient("},{"line_number":30,"context_line":"            self.conf.ip_address,"},{"line_number":31,"context_line":"            self.conf.port,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_09d5f41b","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":8},"updated":"2019-08-05 13:49:21.000000000","message":"Please make a separate commit for the refactoring.","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7c4885c4e12d181cc685085812648753a9c73f76","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            self.conf.database_name)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def write_batch(self, data_points, tenant_id\u003dNone):"},{"line_number":37,"context_line":"        database \u003d tenant_id if self.conf.db_per_tenant else None"},{"line_number":38,"context_line":"        self._influxdb_client.write_points(data_points, \u0027ms\u0027,"},{"line_number":39,"context_line":"                                           protocol\u003d\u0027line\u0027,"},{"line_number":40,"context_line":"                                           database\u003ddatabase)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_49c3ec38","line":37,"range":{"start_line":37,"start_character":7,"end_line":37,"end_character":65},"updated":"2019-08-05 13:49:21.000000000","message":"What happens if the database doesn\u0027t exist? I don\u0027t think it will auto-create the database out of the box?\n\nIf it doesn\u0027t exist, we could catch the exception, create it, and retry?","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"143908bb4603e3321f8fdb1628677b6589f3eda3","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        database \u003d (\u0027%s_%s\u0027 % (self.conf.influxdb.database_name, tenant_id)"},{"line_number":37,"context_line":"                    if self.conf.influxdb.db_per_tenant"},{"line_number":38,"context_line":"                    else self.conf.influxdb.database_name)"},{"line_number":39,"context_line":"        for i in range(3):"},{"line_number":40,"context_line":"            try:"},{"line_number":41,"context_line":"                self._influxdb_client.write_points(data_points, \u0027ms\u0027,"},{"line_number":42,"context_line":"                                                   protocol\u003d\u0027line\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_a098aa1a","line":39,"range":{"start_line":39,"start_character":8,"end_line":39,"end_character":26},"updated":"2019-09-02 10:52:23.000000000","message":"Please can we add this retry mechanism in a separate patch, and make it configurable.","commit_id":"7f6dd992d3a0ca4174fd84451b7c2e912d1e3c70"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"edabc0dc4ad1d1ede86c006ded730bffc315c683","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        database \u003d (\u0027%s_%s\u0027 % (self.conf.influxdb.database_name, tenant_id)"},{"line_number":37,"context_line":"                    if self.conf.influxdb.db_per_tenant"},{"line_number":38,"context_line":"                    else self.conf.influxdb.database_name)"},{"line_number":39,"context_line":"        for i in range(3):"},{"line_number":40,"context_line":"            try:"},{"line_number":41,"context_line":"                self._influxdb_client.write_points(data_points, \u0027ms\u0027,"},{"line_number":42,"context_line":"                                                   protocol\u003d\u0027line\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_035e6844","line":39,"range":{"start_line":39,"start_character":17,"end_line":39,"end_character":22},"updated":"2019-09-02 12:35:24.000000000","message":"The retry mechanism is not anything special, it is just to allow database to be created. I can use a while loop here instead.","commit_id":"7f6dd992d3a0ca4174fd84451b7c2e912d1e3c70"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"32779271f5197d8dead4421caf26c14d7322fef4","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        database \u003d (\u0027%s_%s\u0027 % (self.conf.influxdb.database_name, tenant_id)"},{"line_number":37,"context_line":"                    if self.conf.influxdb.db_per_tenant"},{"line_number":38,"context_line":"                    else self.conf.influxdb.database_name)"},{"line_number":39,"context_line":"        for i in range(3):"},{"line_number":40,"context_line":"            try:"},{"line_number":41,"context_line":"                self._influxdb_client.write_points(data_points, \u0027ms\u0027,"},{"line_number":42,"context_line":"                                                   protocol\u003d\u0027line\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_8ed03f55","line":39,"range":{"start_line":39,"start_character":17,"end_line":39,"end_character":22},"in_reply_to":"7faddb67_035e6844","updated":"2019-09-02 12:49:22.000000000","message":"Sounds good - at the moment it looks like this might catch failed writes as well. I assume you will use a flag in the while loop?","commit_id":"7f6dd992d3a0ca4174fd84451b7c2e912d1e3c70"}],"monasca_persister/repositories/persister.py":[{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7c4885c4e12d181cc685085812648753a9c73f76","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def __init__(self, kafka_conf, zookeeper_conf, repository):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._data_points \u003d {}"},{"line_number":31,"context_line":"        self._n_data_points \u003d 0"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self._kafka_topic \u003d kafka_conf.topic"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_acf5cecc","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":31},"updated":"2019-08-05 13:49:21.000000000","message":"This almost needs a little class called MetricsContainer or something and then you can get rid of all the messy resets via metricsContainer.reset().","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"d0a5461a5c54f8b751939042b157a9bf90ec56cb","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def __init__(self, kafka_conf, zookeeper_conf, repository):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._data_points \u003d {}"},{"line_number":31,"context_line":"        self._n_data_points \u003d 0"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self._kafka_topic \u003d kafka_conf.topic"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_7d2c9f49","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":31},"in_reply_to":"7faddb67_acf5cecc","updated":"2019-09-02 08:49:42.000000000","message":"Any thoughts on this?","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"bf98100a096bbed826d6d37f9d6648fc84ad46e3","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def __init__(self, kafka_conf, zookeeper_conf, repository):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._data_points \u003d {}"},{"line_number":31,"context_line":"        self._n_data_points \u003d 0"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self._kafka_topic \u003d kafka_conf.topic"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_fd25ef0a","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":31},"in_reply_to":"7faddb67_acf5cecc","updated":"2019-09-02 09:21:55.000000000","message":"I dont have strong views on this. I ham happy to implement a class if that\u0027s necessary.","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"143908bb4603e3321f8fdb1628677b6589f3eda3","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def __init__(self, kafka_conf, zookeeper_conf, repository):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._data_points \u003d {}"},{"line_number":31,"context_line":"        self._n_data_points \u003d 0"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self._kafka_topic \u003d kafka_conf.topic"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_606cf206","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":31},"in_reply_to":"7faddb67_fd25ef0a","updated":"2019-09-02 10:52:23.000000000","message":"Thanks - I think it\u0027s a lot clearer now that you\u0027ve added it (although slightly less efficient with the new method of counting, but I don\u0027t think it matters)","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7c4885c4e12d181cc685085812648753a9c73f76","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            return"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        try:"},{"line_number":54,"context_line":"            for tenant_id, data_points in self._data_points.iteritems():"},{"line_number":55,"context_line":"                self.repository.write_batch(data_points, tenant_id)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"            LOG.info(\"Processed {} messages from topic \u0027{}\u0027\".format("}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_acc2ae83","line":54,"updated":"2019-08-05 13:49:21.000000000","message":"I suppose this could decrease write performance in some scenarios because it can lead to smaller chunks of data being written when you have more than one tenant. I don\u0027t think it\u0027s a big deal though - ultimately read performance should be improved and we have Kafka as a buffer for the writes. The approach of batching the metrics per tenant as they come out of Kafka makes sense and is much better than doing lots of micro writes here.","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7c4885c4e12d181cc685085812648753a9c73f76","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                    message \u003d raw_message[1]"},{"line_number":87,"context_line":"                    data_point, tenant_id \u003d self.repository.process_message(message)"},{"line_number":88,"context_line":"                    self._data_points.setdefault(tenant_id, []).append(data_point)"},{"line_number":89,"context_line":"                    self._n_data_points +\u003d 1"},{"line_number":90,"context_line":"                except Exception:"},{"line_number":91,"context_line":"                    LOG.exception(\u0027Error processing message. Message is \u0027"},{"line_number":92,"context_line":"                                  \u0027being dropped. {}\u0027.format(message))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_cc060a1d","line":89,"updated":"2019-08-05 13:49:21.000000000","message":"`self._total_data_points`?","commit_id":"3459674db02bbeeb4e510257cbea1ce049f554b7"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"28c5918b6482ccf5201666352ff95c29cf9cab84","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            return"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        try:"},{"line_number":71,"context_line":"            for tenant_id, data_points in self._data_points.items():"},{"line_number":72,"context_line":"                self.repository.write_batch(data_points, tenant_id)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"            LOG.info(\"Processed {} messages from topic \u0027{}\u0027\".format("}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_9e371100","line":71,"updated":"2019-09-25 10:50:17.000000000","message":"This will multiply the number of requests to the database by the number of projects. I\u0027m wondering what\u0027s the impact on the overall write throughput.","commit_id":"333a1047870507948a663719c726b44d4699fdfc"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"d5ca9f5a26347a83c1ff660bbebf5326ef18f0ae","unresolved":false,"context_lines":[{"line_number":60,"context_line":"class Persister(six.with_metaclass(ABCMeta, object)):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self, kafka_conf, repository):"},{"line_number":63,"context_line":"        self._data_points \u003d DataPoints()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self._kafka_topic \u003d kafka_conf.topic"},{"line_number":66,"context_line":"        self._batch_size \u003d kafka_conf.batch_size"}],"source_content_type":"text/x-python","patch_set":23,"id":"3fa7e38b_5115dce3","line":63,"range":{"start_line":63,"start_character":28,"end_line":63,"end_character":40},"updated":"2019-09-27 09:17:47.000000000","message":"I think it would be easier to use two different classes here depending if db_per_tanant is enabled or not. This way we would avoid chaining again the list of values.\n\nCan be done in the follow-up change though.","commit_id":"774e981f8780b1584050767ea22c17c85aa92727"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"bb7dfc383e597aba8e50546593d5350873e81bf4","unresolved":false,"context_lines":[{"line_number":60,"context_line":"class Persister(six.with_metaclass(ABCMeta, object)):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self, kafka_conf, repository):"},{"line_number":63,"context_line":"        self._data_points \u003d DataPoints()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self._kafka_topic \u003d kafka_conf.topic"},{"line_number":66,"context_line":"        self._batch_size \u003d kafka_conf.batch_size"}],"source_content_type":"text/x-python","patch_set":23,"id":"3fa7e38b_54c38a57","line":63,"range":{"start_line":63,"start_character":28,"end_line":63,"end_character":40},"in_reply_to":"3fa7e38b_31c4e03f","updated":"2019-09-27 10:01:07.000000000","message":"Good point. We can think about changing it later.","commit_id":"774e981f8780b1584050767ea22c17c85aa92727"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"c749d79eaacdc9dbd898895b0d9d553bc0abba0b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"class Persister(six.with_metaclass(ABCMeta, object)):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self, kafka_conf, repository):"},{"line_number":63,"context_line":"        self._data_points \u003d DataPoints()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self._kafka_topic \u003d kafka_conf.topic"},{"line_number":66,"context_line":"        self._batch_size \u003d kafka_conf.batch_size"}],"source_content_type":"text/x-python","patch_set":23,"id":"3fa7e38b_31c4e03f","line":63,"range":{"start_line":63,"start_character":28,"end_line":63,"end_character":40},"in_reply_to":"3fa7e38b_5115dce3","updated":"2019-09-27 09:23:37.000000000","message":"The problem is that db_per_tenancy is currently only enabled for InfluxDB and monasca_persister/repositories/persister.py needs to support both InfluxDB and Cassandra.","commit_id":"774e981f8780b1584050767ea22c17c85aa92727"}]}
