)]}'
{"CHANGELOG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5e13e9105e81e4ae3278db20c921dc1140e7c8be","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      recopy the contents of the object. While the default still is"},{"line_number":11,"context_line":"      `object_post_as_copy` as True, the plan is to change the default"},{"line_number":12,"context_line":"      to False and then deprecate post-as-copy functionality in later"},{"line_number":13,"context_line":"      releases."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    * Add concurrent reads option to proxy."},{"line_number":16,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_c7978146","line":13,"updated":"2016-03-23 09:40:19.000000000","message":"IDK, should we call out that container sync will now work with fast-post?? It *does* but highlighting in changelog might only make sense if this lands:\n\n  https://review.openstack.org/295739","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c409c3ffc8dd6ae3b2fe0fad7c9c9ce06d6da1eb","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      recopy the contents of the object. While the default still is"},{"line_number":11,"context_line":"      `object_post_as_copy` as True, the plan is to change the default"},{"line_number":12,"context_line":"      to False and then deprecate post-as-copy functionality in later"},{"line_number":13,"context_line":"      releases."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    * Add concurrent reads option to proxy."},{"line_number":16,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_a9184dd4","line":13,"in_reply_to":"fa0719c6_c7978146","updated":"2016-03-23 15:44:14.000000000","message":"Yes, it will be good to call out that container sync now works with fast-post.","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5e13e9105e81e4ae3278db20c921dc1140e7c8be","unresolved":false,"context_lines":[{"line_number":18,"context_line":"      GETs in Swift, these are `concurrent_gets` and `concurrency_timeout`."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"      `concurrent_gets` allows you to turn on or off concurrent"},{"line_number":21,"context_line":"      GETs; when on, it will set the GET/HEAD concurrency to the"},{"line_number":22,"context_line":"      replica count. And in the case of EC HEADs it will set it to"},{"line_number":23,"context_line":"      ndata. The proxy will then serve only the first valid source to"},{"line_number":24,"context_line":"      respond. This applies to all account, container, and object GETs"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_ff569328","line":21,"updated":"2016-03-23 09:40:19.000000000","message":"Insert somewhere \u0027the default is off\"","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c409c3ffc8dd6ae3b2fe0fad7c9c9ce06d6da1eb","unresolved":false,"context_lines":[{"line_number":18,"context_line":"      GETs in Swift, these are `concurrent_gets` and `concurrency_timeout`."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"      `concurrent_gets` allows you to turn on or off concurrent"},{"line_number":21,"context_line":"      GETs; when on, it will set the GET/HEAD concurrency to the"},{"line_number":22,"context_line":"      replica count. And in the case of EC HEADs it will set it to"},{"line_number":23,"context_line":"      ndata. The proxy will then serve only the first valid source to"},{"line_number":24,"context_line":"      respond. This applies to all account, container, and object GETs"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_29da7de8","line":21,"in_reply_to":"fa0719c6_ff569328","updated":"2016-03-23 15:44:14.000000000","message":"Done","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5e13e9105e81e4ae3278db20c921dc1140e7c8be","unresolved":false,"context_lines":[{"line_number":21,"context_line":"      GETs; when on, it will set the GET/HEAD concurrency to the"},{"line_number":22,"context_line":"      replica count. And in the case of EC HEADs it will set it to"},{"line_number":23,"context_line":"      ndata. The proxy will then serve only the first valid source to"},{"line_number":24,"context_line":"      respond. This applies to all account, container, and object GETs"},{"line_number":25,"context_line":"      except for EC. For EC only HEAD requests are affected."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"      `concurrency_timeout` is related to `concurrent_gets` and is"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_3f4c8b9d","line":24,"updated":"2016-03-23 09:40:19.000000000","message":"GETS -\u003e GETS and HEADS","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c409c3ffc8dd6ae3b2fe0fad7c9c9ce06d6da1eb","unresolved":false,"context_lines":[{"line_number":21,"context_line":"      GETs; when on, it will set the GET/HEAD concurrency to the"},{"line_number":22,"context_line":"      replica count. And in the case of EC HEADs it will set it to"},{"line_number":23,"context_line":"      ndata. The proxy will then serve only the first valid source to"},{"line_number":24,"context_line":"      respond. This applies to all account, container, and object GETs"},{"line_number":25,"context_line":"      except for EC. For EC only HEAD requests are affected."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"      `concurrency_timeout` is related to `concurrent_gets` and is"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_69e0f596","line":24,"in_reply_to":"fa0719c6_3f4c8b9d","updated":"2016-03-23 15:44:14.000000000","message":"Done","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5e13e9105e81e4ae3278db20c921dc1140e7c8be","unresolved":false,"context_lines":[{"line_number":28,"context_line":"      the amount of time to wait before firing the next thread. A"},{"line_number":29,"context_line":"      value of 0 will fire at the same time (fully concurrent), but"},{"line_number":30,"context_line":"      setting another value will stagger the firing allowing you the"},{"line_number":31,"context_line":"      ability to give a node a shorter chance to respond before firing"},{"line_number":32,"context_line":"      the next. This value is a float and should be somewhere between"},{"line_number":33,"context_line":"      0 and `node_timeout`. The default is `conn_timeout`, meaning by"},{"line_number":34,"context_line":"      default it will stagger the firing."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_f12fe785","line":31,"updated":"2016-03-23 09:40:19.000000000","message":"s/shorter/short/ ?? or should it be \"shorter than node_timeout\".","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c409c3ffc8dd6ae3b2fe0fad7c9c9ce06d6da1eb","unresolved":false,"context_lines":[{"line_number":28,"context_line":"      the amount of time to wait before firing the next thread. A"},{"line_number":29,"context_line":"      value of 0 will fire at the same time (fully concurrent), but"},{"line_number":30,"context_line":"      setting another value will stagger the firing allowing you the"},{"line_number":31,"context_line":"      ability to give a node a shorter chance to respond before firing"},{"line_number":32,"context_line":"      the next. This value is a float and should be somewhere between"},{"line_number":33,"context_line":"      0 and `node_timeout`. The default is `conn_timeout`, meaning by"},{"line_number":34,"context_line":"      default it will stagger the firing."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_099df909","line":31,"in_reply_to":"fa0719c6_f12fe785","updated":"2016-03-23 15:44:14.000000000","message":"Done","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5e13e9105e81e4ae3278db20c921dc1140e7c8be","unresolved":false,"context_lines":[{"line_number":61,"context_line":"      impact it can have during normal operations by dog-piling on a"},{"line_number":62,"context_line":"      node that was temporarily unavailable."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    * By default, inbound `X-Timestamp` headers are now disallowed. This"},{"line_number":65,"context_line":"      header is useful for allowing data migration from other storage"},{"line_number":66,"context_line":"      systems to Swift and keeping the original timestamp of the data."},{"line_number":67,"context_line":"      If you have this migration use case (or any other requirement"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_516053a5","line":64,"updated":"2016-03-23 09:40:19.000000000","message":"\"except when in an authorised container sync request\"","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c409c3ffc8dd6ae3b2fe0fad7c9c9ce06d6da1eb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"      impact it can have during normal operations by dog-piling on a"},{"line_number":62,"context_line":"      node that was temporarily unavailable."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    * By default, inbound `X-Timestamp` headers are now disallowed. This"},{"line_number":65,"context_line":"      header is useful for allowing data migration from other storage"},{"line_number":66,"context_line":"      systems to Swift and keeping the original timestamp of the data."},{"line_number":67,"context_line":"      If you have this migration use case (or any other requirement"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_a9696dfb","line":64,"in_reply_to":"fa0719c6_516053a5","updated":"2016-03-23 15:44:14.000000000","message":"Done","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5e13e9105e81e4ae3278db20c921dc1140e7c8be","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    * Static web page listings can now be rendered with a custom"},{"line_number":78,"context_line":"      label. By default listings are rendered with a label of:"},{"line_number":79,"context_line":"      \"Listing of /v1/account/container/path\". This change adds a new"},{"line_number":80,"context_line":"      custom metadata key/value pair"},{"line_number":81,"context_line":"      `X-Container-Meta-Web-Listings-Label: \u003clabel\u003e` that when set,"},{"line_number":82,"context_line":"      will cause the following: \"Listing of \u003clabel\u003e/path\" to be rendered"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_51d5f319","line":79,"updated":"2016-03-23 09:40:19.000000000","message":"nit: enclose account, container, path in \u003c\u003e","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c409c3ffc8dd6ae3b2fe0fad7c9c9ce06d6da1eb","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    * Static web page listings can now be rendered with a custom"},{"line_number":78,"context_line":"      label. By default listings are rendered with a label of:"},{"line_number":79,"context_line":"      \"Listing of /v1/account/container/path\". This change adds a new"},{"line_number":80,"context_line":"      custom metadata key/value pair"},{"line_number":81,"context_line":"      `X-Container-Meta-Web-Listings-Label: \u003clabel\u003e` that when set,"},{"line_number":82,"context_line":"      will cause the following: \"Listing of \u003clabel\u003e/path\" to be rendered"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_290b9d2b","line":79,"in_reply_to":"fa0719c6_51d5f319","updated":"2016-03-23 15:44:14.000000000","message":"Done","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5e13e9105e81e4ae3278db20c921dc1140e7c8be","unresolved":false,"context_lines":[{"line_number":86,"context_line":"      size (default to 1MiB). This limit has been removed, but small"},{"line_number":87,"context_line":"      segments will be ratelimited. The config parameter"},{"line_number":88,"context_line":"      `rate_limit_under_size` controls the definition of \"small\""},{"line_number":89,"context_line":"      segments (1MiB by default), and `rate_limit_segments_per_sec`"},{"line_number":90,"context_line":"      controls how many segments per second can be served."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    * The Erasure Code reconstruction process has been made more"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_b188cfc6","line":89,"updated":"2016-03-23 09:40:19.000000000","message":"less than 1MiB by default","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c409c3ffc8dd6ae3b2fe0fad7c9c9ce06d6da1eb","unresolved":false,"context_lines":[{"line_number":86,"context_line":"      size (default to 1MiB). This limit has been removed, but small"},{"line_number":87,"context_line":"      segments will be ratelimited. The config parameter"},{"line_number":88,"context_line":"      `rate_limit_under_size` controls the definition of \"small\""},{"line_number":89,"context_line":"      segments (1MiB by default), and `rate_limit_segments_per_sec`"},{"line_number":90,"context_line":"      controls how many segments per second can be served."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    * The Erasure Code reconstruction process has been made more"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_2c4a8b26","line":89,"in_reply_to":"fa0719c6_b188cfc6","updated":"2016-03-23 15:44:14.000000000","message":"The default value is 1MiB, but the check is \u003c instead of \u003c\u003d. So I think the current words are ok. \"Small\" files are defined as 1MiB.\n\nBut I added a line at the end calling out that the effective behavior when serving SLOs is the same","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5e13e9105e81e4ae3278db20c921dc1140e7c8be","unresolved":false,"context_lines":[{"line_number":87,"context_line":"      segments will be ratelimited. The config parameter"},{"line_number":88,"context_line":"      `rate_limit_under_size` controls the definition of \"small\""},{"line_number":89,"context_line":"      segments (1MiB by default), and `rate_limit_segments_per_sec`"},{"line_number":90,"context_line":"      controls how many segments per second can be served."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    * The Erasure Code reconstruction process has been made more"},{"line_number":93,"context_line":"      efficient by not syncing data files when only the durable commit"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_34f02dfe","line":90,"updated":"2016-03-23 09:40:19.000000000","message":"\"how many small segments per second (default is 1)\" I think","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c409c3ffc8dd6ae3b2fe0fad7c9c9ce06d6da1eb","unresolved":false,"context_lines":[{"line_number":87,"context_line":"      segments will be ratelimited. The config parameter"},{"line_number":88,"context_line":"      `rate_limit_under_size` controls the definition of \"small\""},{"line_number":89,"context_line":"      segments (1MiB by default), and `rate_limit_segments_per_sec`"},{"line_number":90,"context_line":"      controls how many segments per second can be served."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    * The Erasure Code reconstruction process has been made more"},{"line_number":93,"context_line":"      efficient by not syncing data files when only the durable commit"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_0c6ce7ce","line":90,"in_reply_to":"fa0719c6_34f02dfe","updated":"2016-03-23 15:44:14.000000000","message":"Done","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5e13e9105e81e4ae3278db20c921dc1140e7c8be","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    * Fixed a bug where 304 and 416 response may not have the right"},{"line_number":97,"context_line":"      Etag and Accept-Ranges headers when the object is stored in an"},{"line_number":98,"context_line":"      Erasure Coded policy."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    * Versioned writes now correctly stores the date of previous versions"},{"line_number":101,"context_line":"      using GMT instead of local time."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_07e69943","line":98,"updated":"2016-03-23 09:40:19.000000000","message":"Also this related fix https://review.openstack.org/276582, do before this release no EC response had Accept-Ranges","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c409c3ffc8dd6ae3b2fe0fad7c9c9ce06d6da1eb","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    * Fixed a bug where 304 and 416 response may not have the right"},{"line_number":97,"context_line":"      Etag and Accept-Ranges headers when the object is stored in an"},{"line_number":98,"context_line":"      Erasure Coded policy."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    * Versioned writes now correctly stores the date of previous versions"},{"line_number":101,"context_line":"      using GMT instead of local time."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"fa0719c6_6c712344","line":98,"in_reply_to":"fa0719c6_07e69943","updated":"2016-03-23 15:44:14.000000000","message":"Yeah, I had originally had that as another entry in this changelog, but I pulled it out to bundle under the \"various other minor things\" line. Do you think it needs to be called out specifically?","commit_id":"16878f951b802d10a50199b0bf1aa24c55eb6afb"}]}
