)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"691ebf00389de9cb898d12708e83fd80ef328f5c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Don\u0027t use memcached for caching metadata for now"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The caching backend for memcached/dogpile stores whole Python objects"},{"line_number":10,"context_line":"by creating a deep copy. At the moment Metadata is cached by storing the metadata"},{"line_number":11,"context_line":"Python object, and therefore the whole object tree underneath,"},{"line_number":12,"context_line":"including the \"instance\" attribute.  Whenever the metadata is"},{"line_number":13,"context_line":"fetched, it also fetches the old version of instance with it, and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7af24918_8257c524","line":10,"updated":"2016-03-04 15:36:13.000000000","message":"I think this line is too long, please follow\nhttps://wiki.openstack.org/wiki/GitCommitMessages .","commit_id":"eedefc0f70ce0f8b4f7aa8f393d68b749c62329a"},{"author":{"_account_id":19173,"name":"Sven Anderson","email":"sven@redhat.com","username":"ansiwen"},"change_message_id":"50e6e93eed637afd7c1d3308ecb22d4e517897ec","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Don\u0027t use memcached for caching metadata for now"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The caching backend for memcached/dogpile stores whole Python objects"},{"line_number":10,"context_line":"by creating a deep copy. At the moment Metadata is cached by storing the metadata"},{"line_number":11,"context_line":"Python object, and therefore the whole object tree underneath,"},{"line_number":12,"context_line":"including the \"instance\" attribute.  Whenever the metadata is"},{"line_number":13,"context_line":"fetched, it also fetches the old version of instance with it, and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5aef4532_ad3e04b6","line":10,"in_reply_to":"7af24918_8257c524","updated":"2016-03-07 19:35:42.000000000","message":"Done","commit_id":"eedefc0f70ce0f8b4f7aa8f393d68b749c62329a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b89d2177e56fcf615c5868c6352f60addc010f0c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"including the \"instance\" attribute.  Whenever the metadata is"},{"line_number":13,"context_line":"fetched, it also fetches the old version of instance with it, and"},{"line_number":14,"context_line":"works on it. This has several implications, like for example lazy"},{"line_number":15,"context_line":"fetched fields of the \"instance\" object are never cached, if they are"},{"line_number":16,"context_line":"not pre-fetched before caching.  Also it might implicate security"},{"line_number":17,"context_line":"issues. Until this is fixed by correctly caching pure data"},{"line_number":18,"context_line":"structures, this patch forces to use the internal cache (based on a"},{"line_number":19,"context_line":"Python dict), which doesn\u0027t have these issues."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7af24918_b5c95d28","line":16,"range":{"start_line":15,"start_character":58,"end_line":16,"end_character":30},"updated":"2016-03-04 15:54:25.000000000","message":"You are right, but mostly they should all be pre-fetched now:\nhttps://github.com/openstack/nova/commit/3a761270581d1ac61a3b4669c130d211f1ad5a17","commit_id":"eedefc0f70ce0f8b4f7aa8f393d68b749c62329a"},{"author":{"_account_id":19173,"name":"Sven Anderson","email":"sven@redhat.com","username":"ansiwen"},"change_message_id":"50e6e93eed637afd7c1d3308ecb22d4e517897ec","unresolved":false,"context_lines":[{"line_number":12,"context_line":"including the \"instance\" attribute.  Whenever the metadata is"},{"line_number":13,"context_line":"fetched, it also fetches the old version of instance with it, and"},{"line_number":14,"context_line":"works on it. This has several implications, like for example lazy"},{"line_number":15,"context_line":"fetched fields of the \"instance\" object are never cached, if they are"},{"line_number":16,"context_line":"not pre-fetched before caching.  Also it might implicate security"},{"line_number":17,"context_line":"issues. Until this is fixed by correctly caching pure data"},{"line_number":18,"context_line":"structures, this patch forces to use the internal cache (based on a"},{"line_number":19,"context_line":"Python dict), which doesn\u0027t have these issues."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5aef4532_aa5b8a53","line":16,"range":{"start_line":15,"start_character":58,"end_line":16,"end_character":30},"in_reply_to":"7af24918_b5c95d28","updated":"2016-03-07 19:35:42.000000000","message":"Yes, but do you consider that as a good concept, that one part of the code has to \"know\" which parts need to be pre-fetched, so that another part of the code doesn\u0027t fail? Shouldn\u0027t rather updates on cached data trigger a cache expire?","commit_id":"eedefc0f70ce0f8b4f7aa8f393d68b749c62329a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b89d2177e56fcf615c5868c6352f60addc010f0c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"fetched, it also fetches the old version of instance with it, and"},{"line_number":14,"context_line":"works on it. This has several implications, like for example lazy"},{"line_number":15,"context_line":"fetched fields of the \"instance\" object are never cached, if they are"},{"line_number":16,"context_line":"not pre-fetched before caching.  Also it might implicate security"},{"line_number":17,"context_line":"issues. Until this is fixed by correctly caching pure data"},{"line_number":18,"context_line":"structures, this patch forces to use the internal cache (based on a"},{"line_number":19,"context_line":"Python dict), which doesn\u0027t have these issues."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7af24918_358c2dd9","line":17,"range":{"start_line":16,"start_character":41,"end_line":17,"end_character":6},"updated":"2016-03-04 15:54:25.000000000","message":"We should take that into an embargoed security bug if you can see any issues here, noting this scope of this public comment.","commit_id":"eedefc0f70ce0f8b4f7aa8f393d68b749c62329a"},{"author":{"_account_id":19173,"name":"Sven Anderson","email":"sven@redhat.com","username":"ansiwen"},"change_message_id":"50e6e93eed637afd7c1d3308ecb22d4e517897ec","unresolved":false,"context_lines":[{"line_number":13,"context_line":"fetched, it also fetches the old version of instance with it, and"},{"line_number":14,"context_line":"works on it. This has several implications, like for example lazy"},{"line_number":15,"context_line":"fetched fields of the \"instance\" object are never cached, if they are"},{"line_number":16,"context_line":"not pre-fetched before caching.  Also it might implicate security"},{"line_number":17,"context_line":"issues. Until this is fixed by correctly caching pure data"},{"line_number":18,"context_line":"structures, this patch forces to use the internal cache (based on a"},{"line_number":19,"context_line":"Python dict), which doesn\u0027t have these issues."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5aef4532_0a30be00","line":17,"range":{"start_line":16,"start_character":41,"end_line":17,"end_character":6},"in_reply_to":"7af24918_358c2dd9","updated":"2016-03-07 19:35:42.000000000","message":"No specific issue. In general I think it increases the attack surface.","commit_id":"eedefc0f70ce0f8b4f7aa8f393d68b749c62329a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8e1a62772f741f7401755d8b95dba904725d7662","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Python dict), which doesn\u0027t have these issues."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: If853be1693f3673a9392b985b9035e1ada8e2a93"},{"line_number":22,"context_line":"Related-Bug: #1549814"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7af24918_781fccb6","line":22,"updated":"2016-03-04 15:59:28.000000000","message":"I think we could call this Closes-Bug: and raise a separate bug for the longer term fix?","commit_id":"eedefc0f70ce0f8b4f7aa8f393d68b749c62329a"},{"author":{"_account_id":19173,"name":"Sven Anderson","email":"sven@redhat.com","username":"ansiwen"},"change_message_id":"50e6e93eed637afd7c1d3308ecb22d4e517897ec","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Python dict), which doesn\u0027t have these issues."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: If853be1693f3673a9392b985b9035e1ada8e2a93"},{"line_number":22,"context_line":"Related-Bug: #1549814"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5aef4532_ea03d20d","line":22,"in_reply_to":"7af24918_781fccb6","updated":"2016-03-07 19:35:42.000000000","message":"Ok","commit_id":"eedefc0f70ce0f8b4f7aa8f393d68b749c62329a"}],"nova/cache_utils.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"30195f851ef26accec6518c860c80e50a1508306","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def get_dict_client(expiration_time\u003d0):"},{"line_number":104,"context_line":"    \"\"\"Used to get a dict based caching client.\"\"\""},{"line_number":105,"context_line":"    return CacheClient("},{"line_number":106,"context_line":"            _get_custom_cache_region(expiration_time\u003dexpiration_time,"},{"line_number":107,"context_line":"                                     backend\u003d\u0027oslo_cache.dict\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_82da2515","line":104,"updated":"2016-03-04 15:32:07.000000000","message":"Sorry, I don\u0027t see why this change was made here, seem like an unrelated change?","commit_id":"eedefc0f70ce0f8b4f7aa8f393d68b749c62329a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b698b160c103a33fdf9d02cb3e5c5e52cf071368","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def get_dict_client(expiration_time\u003d0):"},{"line_number":104,"context_line":"    \"\"\"Used to get a dict based caching client.\"\"\""},{"line_number":105,"context_line":"    return CacheClient("},{"line_number":106,"context_line":"            _get_custom_cache_region(expiration_time\u003dexpiration_time,"},{"line_number":107,"context_line":"                                     backend\u003d\u0027oslo_cache.dict\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_028295c7","line":104,"in_reply_to":"7af24918_82da2515","updated":"2016-03-04 15:32:53.000000000","message":"so turns out I am blind, I see what is happening now.","commit_id":"eedefc0f70ce0f8b4f7aa8f393d68b749c62329a"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"54bbe15a2c71f8aad7d89ffda413a266ae65441f","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    return get_dict_client(expiration_time\u003dexpiration_time)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def get_dict_client(expiration_time\u003d0):"},{"line_number":104,"context_line":"    \"\"\"Used to get a dict based caching client.\"\"\""},{"line_number":105,"context_line":"    return CacheClient("},{"line_number":106,"context_line":"            _get_custom_cache_region(expiration_time\u003dexpiration_time,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_acbd3dd9","line":103,"updated":"2016-03-08 14:31:53.000000000","message":"This name is ambiguous as it\u0027s not clear if the client is for storing a dict or stores in a dict. Maybe just call this get_local_client, or get_local_dict_client.","commit_id":"e96ef553be2ce8c067e6917b60b769f757364286"}],"releasenotes/notes/bug-1549814-0801c7887523d9ab.yaml":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"babecc79b8f0df2f12ded951316dd4b2be18e161","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"issues:"},{"line_number":3,"context_line":"  - Metadata is cached in-memory only regardless of memcached configurations."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5aef4532_aaba4b08","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":6},"updated":"2016-03-08 09:45:10.000000000","message":"I was going to say upgrade, but this is probably better.","commit_id":"f8324777677e4333646256f8ced52a7d806b7529"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"babecc79b8f0df2f12ded951316dd4b2be18e161","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"issues:"},{"line_number":3,"context_line":"  - Metadata is cached in-memory only regardless of memcached configurations."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5aef4532_ca6357db","line":3,"updated":"2016-03-08 09:45:10.000000000","message":"Need to have enough context for a deployer to know, when just reading this text, what it means for them.\n\nI think we need to mention:\n\n* metadata service or metadata api, rather than \"metadata\"\n* lets talk about oslo_cache and/or legacy memcached config, I think?\n\nLets describe why this was removed. Using alternative caches did not work at all, so its has been restricted to the only caching method that is known to work.","commit_id":"f8324777677e4333646256f8ced52a7d806b7529"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"54bbe15a2c71f8aad7d89ffda413a266ae65441f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - The metadata api is now always using the in-memory cache of oslo_cache for"},{"line_number":4,"context_line":"    caching the metadata, even if a memcached/dogpile is in use, because caching"},{"line_number":5,"context_line":"    of the metadata in memcached/dogpile is broken and impairs the performance"},{"line_number":6,"context_line":"    by a factor of magnitudes and therefore essentially abrogates the caching."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5aef4532_ec44651c","line":6,"range":{"start_line":6,"start_character":56,"end_line":6,"end_character":65},"updated":"2016-03-08 14:31:53.000000000","message":"I learned a word today.","commit_id":"e96ef553be2ce8c067e6917b60b769f757364286"}]}
