)]}'
{"trove/guestagent/datastore/experimental/redis/service.py":[{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d4417aab50788de73ec752b37f41cf0572f857fd","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except Exception:"},{"line_number":61,"context_line":"            LOG.exception(_(\"Error getting Redis status.\"))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        return rd_instance.ServiceStatuses.SHUTDOWN"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RedisApp(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa32b979_f66a1aed","line":63,"updated":"2015-06-26 05:42:10.000000000","message":"We should try to see if the process crashed and report the status.","commit_id":"94c09c8c31bd4d3b7fe641fd4aa11d5cb4962ccf"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"f22abd278ddbee22345063b205ad61d5233dd297","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except Exception:"},{"line_number":61,"context_line":"            LOG.exception(_(\"Error getting Redis status.\"))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        return rd_instance.ServiceStatuses.SHUTDOWN"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RedisApp(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa32b979_e3a9c891","line":63,"in_reply_to":"fa32b979_c334c4e0","updated":"2015-06-27 04:37:28.000000000","message":"Similarly, we could start searching the process list, but it may be there and still effectively \u0027crashed\u0027, or there may be more one of them a zombie or so...\n\nAgain, I am just not sure we should be attempting this kind of relatively complex low-level (and platform-dependent) analysis with a very uncertain outcome programatically when the only answer may be in the system and database logs (once we have a way for the user to retrieve them)...","commit_id":"94c09c8c31bd4d3b7fe641fd4aa11d5cb4962ccf"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"765dd9df0a5b39917a4a6e3b1cea18fe0f585be7","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except Exception:"},{"line_number":61,"context_line":"            LOG.exception(_(\"Error getting Redis status.\"))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        return rd_instance.ServiceStatuses.SHUTDOWN"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RedisApp(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa32b979_c334c4e0","line":63,"in_reply_to":"fa32b979_f66a1aed","updated":"2015-06-27 03:51:28.000000000","message":"Sure, I can check the existence of the PID file (like the original implementation did), although I am not sure how much useful information it really provides. The log should at this point already contain the exception message from the driver which should provide some insight into what happened. The fact that the PID file is also missing may mean anything.\n\nMaybe we should just always return \u0027CRASHED\u0027 here and call it a day - if we get here the instance is likely in a bad state no matter what. I am just not sure if it\u0027s worth trying to draw any further conclusions based on the sole fact that the PID file is missing (the PID file may not be available for reasons other than crashing - not running as a daemon or using some other forking mechanism).","commit_id":"94c09c8c31bd4d3b7fe641fd4aa11d5cb4962ccf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d4417aab50788de73ec752b37f41cf0572f857fd","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        return None"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def __mangle_config_command_name(self):"},{"line_number":279,"context_line":"        \"\"\"Hide the \u0027CONFIG\u0027 command from the clients by renaming it to a"},{"line_number":280,"context_line":"        random string known only to the guestagent."},{"line_number":281,"context_line":"        Return the mangled name."}],"source_content_type":"text/x-python","patch_set":6,"id":"fa32b979_19e011fa","line":278,"updated":"2015-06-26 05:42:10.000000000","message":"this method does not look like it needs to be double under__scored.","commit_id":"94c09c8c31bd4d3b7fe641fd4aa11d5cb4962ccf"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"765dd9df0a5b39917a4a6e3b1cea18fe0f585be7","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        return None"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def __mangle_config_command_name(self):"},{"line_number":279,"context_line":"        \"\"\"Hide the \u0027CONFIG\u0027 command from the clients by renaming it to a"},{"line_number":280,"context_line":"        random string known only to the guestagent."},{"line_number":281,"context_line":"        Return the mangled name."}],"source_content_type":"text/x-python","patch_set":6,"id":"fa32b979_00a14246","line":278,"in_reply_to":"fa32b979_19e011fa","updated":"2015-06-27 03:51:28.000000000","message":"Done","commit_id":"94c09c8c31bd4d3b7fe641fd4aa11d5cb4962ccf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d4417aab50788de73ec752b37f41cf0572f857fd","unresolved":false,"context_lines":[{"line_number":373,"context_line":"    def __init__(self, password\u003dNone, unix_socket_path\u003dNone):"},{"line_number":374,"context_line":"        self.__client \u003d redis.StrictRedis("},{"line_number":375,"context_line":"            password\u003dpassword, unix_socket_path\u003dunix_socket_path)"},{"line_number":376,"context_line":"        self.__config_cmd_name \u003d None"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def set_config_command_name(self, name):"},{"line_number":379,"context_line":"        \"\"\"Set name of the \u0027CONFIG\u0027 command or None for default."}],"source_content_type":"text/x-python","patch_set":6,"id":"fa32b979_b949e534","line":376,"updated":"2015-06-26 05:42:10.000000000","message":"at first i thought this was the name of the CONFIG command but this is just the override. Could you rename to something that makes more sense.","commit_id":"94c09c8c31bd4d3b7fe641fd4aa11d5cb4962ccf"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"765dd9df0a5b39917a4a6e3b1cea18fe0f585be7","unresolved":false,"context_lines":[{"line_number":373,"context_line":"    def __init__(self, password\u003dNone, unix_socket_path\u003dNone):"},{"line_number":374,"context_line":"        self.__client \u003d redis.StrictRedis("},{"line_number":375,"context_line":"            password\u003dpassword, unix_socket_path\u003dunix_socket_path)"},{"line_number":376,"context_line":"        self.__config_cmd_name \u003d None"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def set_config_command_name(self, name):"},{"line_number":379,"context_line":"        \"\"\"Set name of the \u0027CONFIG\u0027 command or None for default."}],"source_content_type":"text/x-python","patch_set":6,"id":"fa32b979_40974aeb","line":376,"in_reply_to":"fa32b979_b949e534","updated":"2015-06-27 03:51:28.000000000","message":"Not sure I understand. This is the name we renamed the \u0027CONFIG\u0027 command to (or None if it was not renamed). It has to be random and unique for each Trove instance or else the user could guess it.","commit_id":"94c09c8c31bd4d3b7fe641fd4aa11d5cb4962ccf"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"2d48573f53b7e73b79cd5b301abb8bc26e826af8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    Right now this does not do any smart parsing and returns only key"},{"line_number":40,"context_line":"    value pairs as a str, str."},{"line_number":41,"context_line":"    So: \u0027foo bar baz\u0027 becomes {\u0027foo\u0027 : \u0027bar baz\u0027}"},{"line_number":42,"context_line":"    \"\"\""},{"line_number":43,"context_line":"    options \u003d {}"},{"line_number":44,"context_line":"    LOG.debug(\"Loading Redis options.\")"},{"line_number":45,"context_line":"    with open(system.REDIS_CONFIG, \u0027r\u0027) as fd:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_b83d89c5","side":"PARENT","line":42,"updated":"2015-07-16 06:00:35.000000000","message":"see config like this:\nclient-output-buffer-limit normal 0 0 0 927 \nclient-output-buffer-limit slave 256mb 64mb 60\nclient-output-buffer-limit slave 256mb 64mb 60 928 \n\nits have same starts,and will be overrided in options, maybe it\u0027s right.\n{\u0027foo bar\u0027 : \u0027baz\u0027} shall be better.","commit_id":"9268e334f610a00432d7962de280d6ba50cae00a"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"c10f3b445c20f6fd16e0799b3c63b4aa1fe2f11d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    Right now this does not do any smart parsing and returns only key"},{"line_number":40,"context_line":"    value pairs as a str, str."},{"line_number":41,"context_line":"    So: \u0027foo bar baz\u0027 becomes {\u0027foo\u0027 : \u0027bar baz\u0027}"},{"line_number":42,"context_line":"    \"\"\""},{"line_number":43,"context_line":"    options \u003d {}"},{"line_number":44,"context_line":"    LOG.debug(\"Loading Redis options.\")"},{"line_number":45,"context_line":"    with open(system.REDIS_CONFIG, \u0027r\u0027) as fd:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_4272344b","side":"PARENT","line":42,"in_reply_to":"9a41bdd9_b83d89c5","updated":"2015-07-16 14:23:47.000000000","message":"This is the old code that has been removed in this patch set.\n\nThe PropertiesCodec allows you to specify repeated properties as: {\u0027client-output-buffer-limit\u0027: [yyy, x, x, x, x],\u0027client-output-buffer-limit\u0027: [zzz, x, x, x, x]...}","commit_id":"9268e334f610a00432d7962de280d6ba50cae00a"}],"trove/templates/redis/config.template":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"b011b8dc08bc695b504acc34423f0261c0a5b464","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Redis configuration file example"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Note on units: when memory size is needed, it is possible to specify"},{"line_number":4,"context_line":"# it in the usual form of 1k 5GB 4M and so forth:"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa32b979_ab393543","line":1,"updated":"2015-06-16 12:34:28.000000000","message":"Let\u0027s get rid of all this comments. Same we did for cassandra\u0027s config.","commit_id":"49015d8bb9d1d5b3d33092b6a417264a34c5579f"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"1fe86931bab329f8d21e289c976585ee4933fdb5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Redis configuration file example"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Note on units: when memory size is needed, it is possible to specify"},{"line_number":4,"context_line":"# it in the usual form of 1k 5GB 4M and so forth:"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa32b979_55ea7110","line":1,"in_reply_to":"fa32b979_ab393543","updated":"2015-06-16 19:56:32.000000000","message":"I personally find the comments useful. Both for developers working on the guestagent and Trove operators wanting to provide a custom template. The comments do not get pushed down to the guestagent instance.","commit_id":"49015d8bb9d1d5b3d33092b6a417264a34c5579f"}]}
