)]}'
{"doc/source/collectors.rst":[{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"990107dffdabac9ce48e31edd277a439426dbb5d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        use a connection-string of the form redissentinel://\u003chostname\u003e:\u003cport\u003e"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  * Configuration:"},{"line_number":32,"context_line":"        No config changes are required by this driver."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_50e9be19","line":32,"range":{"start_line":32,"start_character":4,"end_line":32,"end_character":54},"updated":"2016-09-22 15:42:26.000000000","message":"what about socket_timeout and sentinel_service_name?\nthis should be documented as well as additional parameters.","commit_id":"a70d156c580b3c4dba0f1cd12af56d8db782b46c"},{"author":{"_account_id":22478,"name":"Benjamin VanHavermaet","email":"bvanhav@us.ibm.com","username":"bvanhav"},"change_message_id":"b8db518d4b4bb2666faa280e4f570db9bce8ab9f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        use a connection-string of the form redissentinel://\u003chostname\u003e:\u003cport\u003e"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"  * Configuration:"},{"line_number":32,"context_line":"        No config changes are required by this driver."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_7b685bf6","line":32,"range":{"start_line":32,"start_character":4,"end_line":32,"end_character":54},"in_reply_to":"5a8bc5a2_50e9be19","updated":"2016-09-22 16:10:21.000000000","message":"Forgot to update after the latest change, will fix.","commit_id":"a70d156c580b3c4dba0f1cd12af56d8db782b46c"}],"osprofiler/drivers/redis_driver.py":[{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"d2a896803fce96058a161b2888efb3e8d0d32a8c","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        parsed_url \u003d parser.urlparse(self.connection_str)"},{"line_number":129,"context_line":"        sentinel \u003d Sentinel([(parsed_url.hostname, int(parsed_url.port))],"},{"line_number":130,"context_line":"                            socket_timeout\u003dsocket_timeout)"},{"line_number":131,"context_line":"        self.db \u003d sentinel.master_for(self.conf.profiler.sentinal_service_name,"},{"line_number":132,"context_line":"                                      socket_timeout\u003dsocket_timeout)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a8bc5a2_15f3a89f","line":131,"range":{"start_line":131,"start_character":59,"end_line":131,"end_character":65},"updated":"2016-09-22 15:37:42.000000000","message":"typo","commit_id":"a70d156c580b3c4dba0f1cd12af56d8db782b46c"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"210086f135b3194da0d44b8faa23f823bea38235","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        data[\"service\"] \u003d self.service"},{"line_number":68,"context_line":"        key \u003d data[\"base_id\"] + \"_\" + data[\"trace_id\"] + \"_\" + \\"},{"line_number":69,"context_line":"            data[\"timestamp\"]"},{"line_number":70,"context_line":"        self.db.set(key, jsonutils.dumps(data))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def list_traces(self, query\u003d\"*\", fields\u003d[]):"},{"line_number":73,"context_line":"        \"\"\"Returns array of all base_id fields that match the given criteria"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_430488bf","line":70,"updated":"2016-09-22 20:20:18.000000000","message":"So this is unusual, redis has *native* hash support, why aren\u0027t we using it?","commit_id":"686e6b4ddf414f4a495a080b00f1b903cf01abda"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"210086f135b3194da0d44b8faa23f823bea38235","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        for base_field in [\"base_id\", \"timestamp\"]:"},{"line_number":79,"context_line":"            if base_field not in fields:"},{"line_number":80,"context_line":"                fields.append(base_field)"},{"line_number":81,"context_line":"        ids \u003d self.db.keys(query)"},{"line_number":82,"context_line":"        traces \u003d [jsonutils.loads(self.db.get(i)) for i in ids]"},{"line_number":83,"context_line":"        result \u003d []"},{"line_number":84,"context_line":"        for trace in traces:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_e3e2f402","line":81,"updated":"2016-09-22 20:20:18.000000000","message":"Ummm, not liking this,\n\nHave u read:\n\nhttp://redis.io/commands/keys\n\nThere is a huge warning there,\n\n\u0027\u0027\u0027\nWarning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. This command is intended for debugging and special operations, such as changing your keyspace layout. Don\u0027t use KEYS in your regular application code. If you\u0027re looking for a way to find keys in a subset of your keyspace, consider using SCAN or sets.\n\nSupported glob-style patterns:\n\u0027\u0027\u0027","commit_id":"686e6b4ddf414f4a495a080b00f1b903cf01abda"},{"author":{"_account_id":22478,"name":"Benjamin VanHavermaet","email":"bvanhav@us.ibm.com","username":"bvanhav"},"change_message_id":"edf1e7380bc036ee9797a551733a2fbf07ccf53a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        for base_field in [\"base_id\", \"timestamp\"]:"},{"line_number":79,"context_line":"            if base_field not in fields:"},{"line_number":80,"context_line":"                fields.append(base_field)"},{"line_number":81,"context_line":"        ids \u003d self.db.keys(query)"},{"line_number":82,"context_line":"        traces \u003d [jsonutils.loads(self.db.get(i)) for i in ids]"},{"line_number":83,"context_line":"        result \u003d []"},{"line_number":84,"context_line":"        for trace in traces:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_1b1f1260","line":81,"in_reply_to":"5a8bc5a2_e3e2f402","updated":"2016-09-23 17:35:04.000000000","message":"Makes sense to change away from using keys. Will look into it, and look at making use of the native hash support as well. So will likely end up redesigning how the data is structured in the db.","commit_id":"686e6b4ddf414f4a495a080b00f1b903cf01abda"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"210086f135b3194da0d44b8faa23f823bea38235","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        :param base_id: Base id of trace elements."},{"line_number":93,"context_line":"        \"\"\""},{"line_number":94,"context_line":"        for key in self.db.keys(base_id + \"*\"):"},{"line_number":95,"context_line":"            data \u003d self.db.get(key)"},{"line_number":96,"context_line":"            n \u003d jsonutils.loads(data)"},{"line_number":97,"context_line":"            trace_id \u003d n[\"trace_id\"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_63efc4e8","line":94,"updated":"2016-09-22 20:20:18.000000000","message":"See above.","commit_id":"686e6b4ddf414f4a495a080b00f1b903cf01abda"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"7af56a35a01e5f995c0357484b90e1f3d2236b63","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        data \u003d info.copy()"},{"line_number":66,"context_line":"        data[\"project\"] \u003d self.project"},{"line_number":67,"context_line":"        data[\"service\"] \u003d self.service"},{"line_number":68,"context_line":"        key \u003d data[\"base_id\"] + \"_\" + data[\"trace_id\"] + \"_\" + \\"},{"line_number":69,"context_line":"            data[\"timestamp\"]"},{"line_number":70,"context_line":"        self.db.set(key, jsonutils.dumps(data))"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a98d1f4_718b8cc3","line":68,"updated":"2016-10-02 00:30:36.000000000","message":"What about prefixing the key with \"osprofiler:\" at least so that all keys for osprofiler are namespaced (which helps if the redis server is being shared by other apps).","commit_id":"aff198b6b4bf589139b8fa7cd05fbc348df36908"}],"osprofiler/opts.py":[{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"990107dffdabac9ce48e31edd277a439426dbb5d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"This parameter defines that timeout (for example: socket_timeout\u003d0.1)."},{"line_number":126,"context_line":"\"\"\")"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"_sentinal_service_name_opt \u003d cfg.StrOpt("},{"line_number":129,"context_line":"    \"sentinal_service_name\","},{"line_number":130,"context_line":"    default\u003d\"mymaster\","},{"line_number":131,"context_line":"    help\u003d\"\"\""},{"line_number":132,"context_line":"Redissentinel uses a service name to identify a master redis service."}],"source_content_type":"text/x-python","patch_set":5,"id":"5a8bc5a2_f0ac8aef","line":129,"range":{"start_line":128,"start_character":0,"end_line":129,"end_character":28},"updated":"2016-09-22 15:42:26.000000000","message":"sentinel","commit_id":"a70d156c580b3c4dba0f1cd12af56d8db782b46c"},{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"990107dffdabac9ce48e31edd277a439426dbb5d","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    _es_scroll_time_opt,"},{"line_number":145,"context_line":"    _es_scroll_size_opt,"},{"line_number":146,"context_line":"    _socket_timeout_opt,"},{"line_number":147,"context_line":"    _sentinal_service_name_opt"},{"line_number":148,"context_line":"]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"cfg.CONF.register_opts(_PROFILER_OPTS, group\u003d_profiler_opt_group)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a8bc5a2_70a07af5","line":147,"range":{"start_line":147,"start_character":4,"end_line":147,"end_character":30},"updated":"2016-09-22 15:42:26.000000000","message":"sentinel","commit_id":"a70d156c580b3c4dba0f1cd12af56d8db782b46c"},{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"990107dffdabac9ce48e31edd277a439426dbb5d","unresolved":false,"context_lines":[{"line_number":153,"context_line":"def set_defaults(conf, enabled\u003dNone, trace_sqlalchemy\u003dNone, hmac_keys\u003dNone,"},{"line_number":154,"context_line":"                 connection_string\u003dNone, es_doc_type\u003dNone,"},{"line_number":155,"context_line":"                 es_scroll_time\u003dNone, es_scroll_size\u003dNone,"},{"line_number":156,"context_line":"                 socket_timeout\u003dNone, sentinal_service_name\u003dNone):"},{"line_number":157,"context_line":"    conf.register_opts(_PROFILER_OPTS, group\u003d_profiler_opt_group)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    if enabled is not None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a8bc5a2_b073e2b0","line":156,"range":{"start_line":156,"start_character":0,"end_line":156,"end_character":66},"updated":"2016-09-22 15:42:26.000000000","message":"sentinel","commit_id":"a70d156c580b3c4dba0f1cd12af56d8db782b46c"},{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"990107dffdabac9ce48e31edd277a439426dbb5d","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                         group\u003d_profiler_opt_group.name)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    if sentinal_service_name is not None:"},{"line_number":190,"context_line":"        conf.set_default(\"sentinal_service_name\", sentinal_service_name,"},{"line_number":191,"context_line":"                         group\u003d_profiler_opt_group.name)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a8bc5a2_d0414e3b","line":190,"range":{"start_line":190,"start_character":1,"end_line":190,"end_character":72},"updated":"2016-09-22 15:42:26.000000000","message":"sentinel","commit_id":"a70d156c580b3c4dba0f1cd12af56d8db782b46c"},{"author":{"_account_id":22478,"name":"Benjamin VanHavermaet","email":"bvanhav@us.ibm.com","username":"bvanhav"},"change_message_id":"b8db518d4b4bb2666faa280e4f570db9bce8ab9f","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                         group\u003d_profiler_opt_group.name)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    if sentinal_service_name is not None:"},{"line_number":190,"context_line":"        conf.set_default(\"sentinal_service_name\", sentinal_service_name,"},{"line_number":191,"context_line":"                         group\u003d_profiler_opt_group.name)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a8bc5a2_f66562e1","line":190,"range":{"start_line":190,"start_character":1,"end_line":190,"end_character":72},"in_reply_to":"5a8bc5a2_d0414e3b","updated":"2016-09-22 16:10:21.000000000","message":"Started wrong and kept doing it that way. At least it\u0027s consistent :)\n\nWill fix.","commit_id":"a70d156c580b3c4dba0f1cd12af56d8db782b46c"}]}
