)]}'
{"specs/juno/gnocchi.rst":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"be64c47ad7d4c9bdff1a86a880523012534bed32","unresolved":false,"context_lines":[{"line_number":99,"context_line":"* `POST /v1/entity`::"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"     -\u003e {\"archives\": [{\"lifespan\": 3600, \"points\": 1000},"},{"line_number":102,"context_line":"                      {\"lifespan\": \"1 year\", \"interval\": 60},"},{"line_number":103,"context_line":"                      {\"points\": 1000, \"interval\": 60}]}"},{"line_number":104,"context_line":"     \u003c- 201 Created"},{"line_number":105,"context_line":"        Location: /v1/entity/\u003cuuid\u003e"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab895d6_61d3d838","line":102,"updated":"2014-06-30 09:59:49.000000000","message":"Just to clarify, is the \"1 year\" intended to be:\n\n* (a) age-based retention offset from now (i.e. discard datapoints once they reach one year old)\n* (b) age-based retention offset from time of submission (i.e. discard datapoints once they have been stored for a year, regardless of age)\n* (c) count-based retention of the equivalent span (i.e. keep 365*24*60 datapoints in this case, regardless of age)\n\nI think option (a) would map most closely to the semantics that other storage drivers provide natively and be most intuitive for users.","commit_id":"4f5fdf094827f8517511a57c8eb2d82bfaa2a701"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"64b85f8bbbb2efa77e4f2c7a465901d92ff67167","unresolved":false,"context_lines":[{"line_number":99,"context_line":"* `POST /v1/entity`::"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"     -\u003e {\"archives\": [{\"lifespan\": 3600, \"points\": 1000},"},{"line_number":102,"context_line":"                      {\"lifespan\": \"1 year\", \"interval\": 60},"},{"line_number":103,"context_line":"                      {\"points\": 1000, \"interval\": 60}]}"},{"line_number":104,"context_line":"     \u003c- 201 Created"},{"line_number":105,"context_line":"        Location: /v1/entity/\u003cuuid\u003e"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab895d6_61dd9814","line":102,"in_reply_to":"dab895d6_61d3d838","updated":"2014-06-30 10:03:05.000000000","message":"It\u0027s a/b but the year is computed from the most recent timestamp stored in the timeseries.\n\n(that may be what you meant in b but I was not sure)","commit_id":"4f5fdf094827f8517511a57c8eb2d82bfaa2a701"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"b33909f58d746c79a2806c54f623b54eaf6272eb","unresolved":false,"context_lines":[{"line_number":99,"context_line":"* `POST /v1/entity`::"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"     -\u003e {\"archives\": [{\"lifespan\": 3600, \"points\": 1000},"},{"line_number":102,"context_line":"                      {\"lifespan\": \"1 year\", \"interval\": 60},"},{"line_number":103,"context_line":"                      {\"points\": 1000, \"interval\": 60}]}"},{"line_number":104,"context_line":"     \u003c- 201 Created"},{"line_number":105,"context_line":"        Location: /v1/entity/\u003cuuid\u003e"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab895d6_a6bfc1cf","line":102,"in_reply_to":"dab895d6_61dd9814","updated":"2014-06-30 12:11:06.000000000","message":"Thanks for the clarification.\n\nIIUC that\u0027s more what I meant by option by (c) ... i.e. the retention is anchored in the timestamps of the datapoints themselves, as opposed to current time or the time at which the datapoint was submitted.\n\nThis is making me a bit nervous because:\n\n* I think we\u0027ll need some additional logic to reap old entities for which no fresh datapoints are still arriving (so the old ones never age out)\n* I suspect users will find it a bit counter-intuitive (as TTL is usually anchored on the current time)\n* I suspect anchoring the age calculation on the most recent point in the timeseries will make things awkward from the PoV of efficiently deleting old data from alternative storage drivers other than pandas+swift. For example InfluxDB provides a continuous query mechanism that allows old data to be efficiently dropped, whereas it would be relatively expensive to selectively delete a single point for the series whenever a new point arrives and causes the oldest datapoint to fall off the cliff.\n\nSo I wonder would it make sense to make the interpretation of the archive lifespan be a configurable policy?\n\ne.g.\n\n  DataRetentionAnchorPolicy \u003d [ \"now\", \"newest\", \"submission\", ...]\n\nto allow the retention logic be anchored on:\n\n* 1. current time\n* 2. timestamp of the most recent datapoint in the series, or\n* 3. time of submission of the datapoint to be evicted. \n\n(#1 and #2 make most sense to me, #3 I\u0027m not so sure about)\n\nWe could use a capabilities mechanism where drivers can advertize the ability to support some or all of these anchor policies.","commit_id":"4f5fdf094827f8517511a57c8eb2d82bfaa2a701"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1b1cacc51ac7333497af64148dfcc8e711c87fc8","unresolved":false,"context_lines":[{"line_number":99,"context_line":"* `POST /v1/entity`::"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"     -\u003e {\"archives\": [{\"lifespan\": 3600, \"points\": 1000},"},{"line_number":102,"context_line":"                      {\"lifespan\": \"1 year\", \"interval\": 60},"},{"line_number":103,"context_line":"                      {\"points\": 1000, \"interval\": 60}]}"},{"line_number":104,"context_line":"     \u003c- 201 Created"},{"line_number":105,"context_line":"        Location: /v1/entity/\u003cuuid\u003e"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab895d6_e688d9e9","line":102,"in_reply_to":"dab895d6_a6bfc1cf","updated":"2014-06-30 12:20:44.000000000","message":"You\u0027re right it\u0027s (c).\n\nTo reply to your points, Gnocchi is a timeserie storage, and nobody ever said that timeseries storage had to be tied to the notion of \"what is now() and what should I do with what is XXX old\". So we would definitely need a different \"service\" that would provide a functionality removing data sample that are old compared to now().\n\nStoring timeserie is storing an array of key/value, not anything else.\n\nHandling data TTL is another set of feature – that we want I\u0027m sure, but it\u0027s not in the scope of that timeserie storage right now.","commit_id":"4f5fdf094827f8517511a57c8eb2d82bfaa2a701"}]}
