)]}'
{"AUTHORS":[{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"b3ac9ea63dca5751a3763481fbe314c51263057c","unresolved":false,"context_lines":[{"line_number":293,"context_line":"Pearl Yajing Tan (pearl.y.tan@seagate.com)"},{"line_number":294,"context_line":"Pete Zaitcev (zaitcev@kotori.zaitcev.us)"},{"line_number":295,"context_line":"Peter Lisak (peter.lisak@firma.seznam.cz)"},{"line_number":296,"context_line":"Peter Lisák (peter.lisak@gmail.com)"},{"line_number":297,"context_line":"Peter Portante (peter.portante@redhat.com)"},{"line_number":298,"context_line":"Petr Kovar (pkovar@redhat.com)"},{"line_number":299,"context_line":"Pradeep Kumar Singh (pradeep.singh@nectechnologies.in)"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"7f96bb07_83447948","line":296,"range":{"start_line":296,"start_character":0,"end_line":296,"end_character":32},"updated":"2018-01-17 21:09:33.000000000","message":"same as previous line?","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"b4fcefb7d6a1754c9fb91223c2b819ca6b8e6449","unresolved":false,"context_lines":[{"line_number":293,"context_line":"Pearl Yajing Tan (pearl.y.tan@seagate.com)"},{"line_number":294,"context_line":"Pete Zaitcev (zaitcev@kotori.zaitcev.us)"},{"line_number":295,"context_line":"Peter Lisak (peter.lisak@firma.seznam.cz)"},{"line_number":296,"context_line":"Peter Lisák (peter.lisak@gmail.com)"},{"line_number":297,"context_line":"Peter Portante (peter.portante@redhat.com)"},{"line_number":298,"context_line":"Petr Kovar (pkovar@redhat.com)"},{"line_number":299,"context_line":"Pradeep Kumar Singh (pradeep.singh@nectechnologies.in)"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"5f93b717_eeda3049","line":296,"range":{"start_line":296,"start_character":0,"end_line":296,"end_character":32},"in_reply_to":"7f96bb07_83447948","updated":"2018-01-30 23:29:59.000000000","message":"Done","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"}],"CHANGELOG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6ea3bf2531f508bbc0ed557c2f610ee2e191f269","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"      - Deleting an expiring object will now cause less work in the system."},{"line_number":15,"context_line":"        The number of async_pending files written has been reduced for all"},{"line_number":16,"context_line":"        objects and greatly reduced for erasure-coded objects."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    * When the object auditor examines an object, it will now add any"},{"line_number":19,"context_line":"      missing metadata checksums."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"7f96bb07_078ad8bd","line":16,"updated":"2018-01-17 01:05:28.000000000","message":"Maybe call out that this should also bring down container server load? Or maybe that\u0027s just implied from\n\n\u003e The number of async_pending files written has been reduced","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6ea3bf2531f508bbc0ed557c2f610ee2e191f269","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        doesn\u0027t impove."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"      - Improved the granularity of the ring dispersion metric so that"},{"line_number":27,"context_line":"        smaller improvements after a rebalance can show changes in the"},{"line_number":28,"context_line":"        dispersion number. TODO: explain the new range of values"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"      - Display more info on empty rings."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"7f96bb07_a769a4f9","line":27,"range":{"start_line":27,"start_character":8,"end_line":27,"end_character":15},"updated":"2018-01-17 01:05:28.000000000","message":"s/smaller/even small/","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"191e4671891ab45819e5b5ccf3a59bdb09b14200","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"      - Improved the granularity of the ring dispersion metric so that"},{"line_number":27,"context_line":"        smaller improvements after a rebalance can show changes in the"},{"line_number":28,"context_line":"        dispersion number. TODO: explain the new range of values"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"      - Display more info on empty rings."},{"line_number":31,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"7f96bb07_e7a56c48","line":28,"updated":"2018-01-17 00:53:18.000000000","message":"I think it\u0027s fine without further explanation - improved granularity sort of suggests that it\u0027s more fine grained - which you could sorta talk yourself into meaning \"smaller - but more *potent*\"\n\ni don\u0027t really know how to explain it better.  Anything not zero might be bad.  The more replicas you have the more scary smaller numbers might be.  But anytime it gets better the number will get smaller - that\u0027s the main thing.\n\nNow that I\u0027m thinking about explaining it to someone I almost wish we\u0027d had stuck with letting it go higher than 100% to display amplified suckatude for more replias instead of compessing everything.\n\nMaybe Matt and Tim can convince you this is better.","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"b4fcefb7d6a1754c9fb91223c2b819ca6b8e6449","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"      - Improved the granularity of the ring dispersion metric so that"},{"line_number":27,"context_line":"        smaller improvements after a rebalance can show changes in the"},{"line_number":28,"context_line":"        dispersion number. TODO: explain the new range of values"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"      - Display more info on empty rings."},{"line_number":31,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"5f93b717_4ec3245e","line":28,"in_reply_to":"7f96bb07_e7a56c48","updated":"2018-01-30 23:29:59.000000000","message":"Done","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6ea3bf2531f508bbc0ed557c2f610ee2e191f269","unresolved":false,"context_lines":[{"line_number":30,"context_line":"      - Display more info on empty rings."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"      - Added a \u0027--recalculate\u0027 option to `swift-ring-builder` to"},{"line_number":33,"context_line":"        recalculate dispersion."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"      - Show devices marked as deleted in empty rings."},{"line_number":36,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"7f96bb07_c756302b","line":33,"updated":"2018-01-17 01:05:28.000000000","message":"This should probably get rolled into the explanation of the new dispersion range. We wanted it primarily to give people a way to have apples-to-apples comparisons between rebalances.","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"b4fcefb7d6a1754c9fb91223c2b819ca6b8e6449","unresolved":false,"context_lines":[{"line_number":30,"context_line":"      - Display more info on empty rings."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"      - Added a \u0027--recalculate\u0027 option to `swift-ring-builder` to"},{"line_number":33,"context_line":"        recalculate dispersion."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"      - Show devices marked as deleted in empty rings."},{"line_number":36,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"5f93b717_eeb31009","line":33,"in_reply_to":"7f96bb07_c756302b","updated":"2018-01-30 23:29:59.000000000","message":"Done","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6ea3bf2531f508bbc0ed557c2f610ee2e191f269","unresolved":false,"context_lines":[{"line_number":32,"context_line":"      - Added a \u0027--recalculate\u0027 option to `swift-ring-builder` to"},{"line_number":33,"context_line":"        recalculate dispersion."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"      - Show devices marked as deleted in empty rings."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      - Empty rings can no longer be written. Displaying an empty ring"},{"line_number":38,"context_line":"        will now have an exit code of 0 (ie success)."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"7f96bb07_e7280c98","line":35,"updated":"2018-01-17 01:05:28.000000000","message":"This isn\u0027t covered by\n\n\u003e Display more info on empty rings\n\n?","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"b4fcefb7d6a1754c9fb91223c2b819ca6b8e6449","unresolved":false,"context_lines":[{"line_number":32,"context_line":"      - Added a \u0027--recalculate\u0027 option to `swift-ring-builder` to"},{"line_number":33,"context_line":"        recalculate dispersion."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"      - Show devices marked as deleted in empty rings."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      - Empty rings can no longer be written. Displaying an empty ring"},{"line_number":38,"context_line":"        will now have an exit code of 0 (ie success)."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"5f93b717_0eb99ce7","line":35,"in_reply_to":"7f96bb07_e7280c98","updated":"2018-01-30 23:29:59.000000000","message":"Done","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6ea3bf2531f508bbc0ed557c2f610ee2e191f269","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"      - Show devices marked as deleted in empty rings."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      - Empty rings can no longer be written. Displaying an empty ring"},{"line_number":38,"context_line":"        will now have an exit code of 0 (ie success)."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    * Fixed rare socket leak on range requests to erasure-coded objects."},{"line_number":41,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"7f96bb07_59852859","line":38,"range":{"start_line":37,"start_character":46,"end_line":38,"end_character":52},"updated":"2018-01-17 01:05:28.000000000","message":"I\u0027m fairly certain this is unchanged from the previous release, save for the traceback caused by bug 1737068","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"b4fcefb7d6a1754c9fb91223c2b819ca6b8e6449","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"      - Show devices marked as deleted in empty rings."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      - Empty rings can no longer be written. Displaying an empty ring"},{"line_number":38,"context_line":"        will now have an exit code of 0 (ie success)."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    * Fixed rare socket leak on range requests to erasure-coded objects."},{"line_number":41,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"5f93b717_cece5481","line":38,"range":{"start_line":37,"start_character":46,"end_line":38,"end_character":52},"in_reply_to":"7f96bb07_59852859","updated":"2018-01-30 23:29:59.000000000","message":"Done","commit_id":"9374f0ec3e265707800eb7263c2ebabfbb3a76f4"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"3c212f31ac976f556fb51caf46f0eae9e793a219","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    * Added symlink objects support."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"      Symlink objects reference one other object. They are created by"},{"line_number":6,"context_line":"      creating an object with an X-Symlink-Target header. The value of"},{"line_number":7,"context_line":"      the header is of the format \u003ccontainer\u003e/\u003cobject\u003e, and it does"},{"line_number":8,"context_line":"      not need to exist at the time of symlink creation. Cross-account"},{"line_number":9,"context_line":"      symlinks can be referenced by including the"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"5f93b717_49f0fefe","line":6,"range":{"start_line":6,"start_character":6,"end_line":6,"end_character":24},"updated":"2018-01-31 00:09:06.000000000","message":"creating a zero byte object","commit_id":"01c94ac98f5c2c84884eeaacab11994ff9ea6010"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"b1d23622ff1d645333213149c65f8f250ca86ae9","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    * Added symlink objects support."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"      Symlink objects reference one other object. They are created by"},{"line_number":6,"context_line":"      creating an object with an X-Symlink-Target header. The value of"},{"line_number":7,"context_line":"      the header is of the format \u003ccontainer\u003e/\u003cobject\u003e, and it does"},{"line_number":8,"context_line":"      not need to exist at the time of symlink creation. Cross-account"},{"line_number":9,"context_line":"      symlinks can be referenced by including the"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"5f93b717_6974dafe","line":6,"range":{"start_line":6,"start_character":6,"end_line":6,"end_character":24},"in_reply_to":"5f93b717_49f0fefe","updated":"2018-01-31 00:37:48.000000000","message":"Done","commit_id":"01c94ac98f5c2c84884eeaacab11994ff9ea6010"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"3c212f31ac976f556fb51caf46f0eae9e793a219","unresolved":false,"context_lines":[{"line_number":13,"context_line":"      referenced object. DELETE and PUT requests will operate on the"},{"line_number":14,"context_line":"      symlink object itself. POST requests are not forwarded to the"},{"line_number":15,"context_line":"      referenced object. POST requests sent to a symlink will result"},{"line_number":16,"context_line":"      in a 307 Temporary Redirect response."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    * Object expiry improvements"},{"line_number":19,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"5f93b717_e9f0eaff","line":16,"updated":"2018-01-31 00:09:06.000000000","message":"I believe the metadata on a POST is also written to the symlink itself.","commit_id":"01c94ac98f5c2c84884eeaacab11994ff9ea6010"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"3c212f31ac976f556fb51caf46f0eae9e793a219","unresolved":false,"context_lines":[{"line_number":78,"context_line":"      five minutes. The logging at the end of a pass remains and has"},{"line_number":79,"context_line":"      been expanded to also include all stats."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    * If a proxy server in configured to autocreate accounts and the"},{"line_number":82,"context_line":"      account create fails, it will now return a server error (500)"},{"line_number":83,"context_line":"      instead of Not Found (404)."},{"line_number":84,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"5f93b717_69bdba00","line":81,"range":{"start_line":81,"start_character":24,"end_line":81,"end_character":26},"updated":"2018-01-31 00:09:06.000000000","message":"is","commit_id":"01c94ac98f5c2c84884eeaacab11994ff9ea6010"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"b1d23622ff1d645333213149c65f8f250ca86ae9","unresolved":false,"context_lines":[{"line_number":78,"context_line":"      five minutes. The logging at the end of a pass remains and has"},{"line_number":79,"context_line":"      been expanded to also include all stats."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    * If a proxy server in configured to autocreate accounts and the"},{"line_number":82,"context_line":"      account create fails, it will now return a server error (500)"},{"line_number":83,"context_line":"      instead of Not Found (404)."},{"line_number":84,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"5f93b717_c96bae1b","line":81,"range":{"start_line":81,"start_character":24,"end_line":81,"end_character":26},"in_reply_to":"5f93b717_69bdba00","updated":"2018-01-31 00:37:48.000000000","message":"Done","commit_id":"01c94ac98f5c2c84884eeaacab11994ff9ea6010"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c5e1834323e4a30d5e695e0e08c44b3dcde1abb4","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"      Symlink objects reference one other object. They are created by"},{"line_number":6,"context_line":"      creating an empty object with an X-Symlink-Target header. The value of"},{"line_number":7,"context_line":"      the header is of the format \u003ccontainer\u003e/\u003cobject\u003e, and it does"},{"line_number":8,"context_line":"      not need to exist at the time of symlink creation. Cross-account"},{"line_number":9,"context_line":"      symlinks can be referenced by including the"},{"line_number":10,"context_line":"      X-Symlink-Target-Account header."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_cc94db39","line":7,"range":{"start_line":7,"start_character":60,"end_line":7,"end_character":62},"updated":"2018-02-02 00:28:36.000000000","message":"s/it/the target/ maybe?","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c0f7eee57145957998418e2e7842bbd9ad7872b6","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"      Symlink objects reference one other object. They are created by"},{"line_number":6,"context_line":"      creating an empty object with an X-Symlink-Target header. The value of"},{"line_number":7,"context_line":"      the header is of the format \u003ccontainer\u003e/\u003cobject\u003e, and it does"},{"line_number":8,"context_line":"      not need to exist at the time of symlink creation. Cross-account"},{"line_number":9,"context_line":"      symlinks can be referenced by including the"},{"line_number":10,"context_line":"      X-Symlink-Target-Account header."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_ab6b6382","line":7,"range":{"start_line":7,"start_character":60,"end_line":7,"end_character":62},"in_reply_to":"5f93b717_cc94db39","updated":"2018-02-02 17:07:25.000000000","message":"Done","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c5e1834323e4a30d5e695e0e08c44b3dcde1abb4","unresolved":false,"context_lines":[{"line_number":7,"context_line":"      the header is of the format \u003ccontainer\u003e/\u003cobject\u003e, and it does"},{"line_number":8,"context_line":"      not need to exist at the time of symlink creation. Cross-account"},{"line_number":9,"context_line":"      symlinks can be referenced by including the"},{"line_number":10,"context_line":"      X-Symlink-Target-Account header."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"      GET and HEAD requests to a symlink will operate on the"},{"line_number":13,"context_line":"      referenced object. DELETE and PUT requests will operate on the"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_0cbf23aa","line":10,"updated":"2018-02-02 00:28:36.000000000","message":"Either\n\n\u003e Cross-account symlinks can be created by including the X-Symlink-Target-Account header.\n\nor\n\n\u003e Symlinks can reference objects in other accounts by including the X-Symlink-Target-Account header.","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c0f7eee57145957998418e2e7842bbd9ad7872b6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"      the header is of the format \u003ccontainer\u003e/\u003cobject\u003e, and it does"},{"line_number":8,"context_line":"      not need to exist at the time of symlink creation. Cross-account"},{"line_number":9,"context_line":"      symlinks can be referenced by including the"},{"line_number":10,"context_line":"      X-Symlink-Target-Account header."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"      GET and HEAD requests to a symlink will operate on the"},{"line_number":13,"context_line":"      referenced object. DELETE and PUT requests will operate on the"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_ebfacbba","line":10,"in_reply_to":"5f93b717_0cbf23aa","updated":"2018-02-02 17:07:25.000000000","message":"Done","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c5e1834323e4a30d5e695e0e08c44b3dcde1abb4","unresolved":false,"context_lines":[{"line_number":9,"context_line":"      symlinks can be referenced by including the"},{"line_number":10,"context_line":"      X-Symlink-Target-Account header."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"      GET and HEAD requests to a symlink will operate on the"},{"line_number":13,"context_line":"      referenced object. DELETE and PUT requests will operate on the"},{"line_number":14,"context_line":"      symlink object itself. POST requests are not forwarded to the"},{"line_number":15,"context_line":"      referenced object. POST requests sent to a symlink will result"},{"line_number":16,"context_line":"      in a 307 Temporary Redirect response."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_acdf0f0b","line":13,"range":{"start_line":12,"start_character":41,"end_line":13,"end_character":23},"updated":"2018-02-02 00:28:36.000000000","message":"\u003e ... and require appropriate permissions in the target container.","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c0f7eee57145957998418e2e7842bbd9ad7872b6","unresolved":false,"context_lines":[{"line_number":9,"context_line":"      symlinks can be referenced by including the"},{"line_number":10,"context_line":"      X-Symlink-Target-Account header."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"      GET and HEAD requests to a symlink will operate on the"},{"line_number":13,"context_line":"      referenced object. DELETE and PUT requests will operate on the"},{"line_number":14,"context_line":"      symlink object itself. POST requests are not forwarded to the"},{"line_number":15,"context_line":"      referenced object. POST requests sent to a symlink will result"},{"line_number":16,"context_line":"      in a 307 Temporary Redirect response."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_cbfb4fbb","line":13,"range":{"start_line":12,"start_character":41,"end_line":13,"end_character":23},"in_reply_to":"5f93b717_acdf0f0b","updated":"2018-02-02 17:07:25.000000000","message":"Done","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c5e1834323e4a30d5e695e0e08c44b3dcde1abb4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"      able to read. This will resolve itself once the upgrade completes"},{"line_number":23,"context_line":"      on all nodes."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    * The tempurl digest algorithm is now configurable and added support"},{"line_number":26,"context_line":"      for both SHA-256 and SHA-512. Supported tempurl digests are exposed"},{"line_number":27,"context_line":"      to clients in `/info`. Additionally, tempurl signatures can now be"},{"line_number":28,"context_line":"      base64 encoded."},{"line_number":29,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_2cfc5f6e","line":26,"range":{"start_line":25,"start_character":6,"end_line":26,"end_character":35},"updated":"2018-02-02 00:28:36.000000000","message":"\u003e The tempurl digest algorithm is now configurable. Additionally, support has been added for both SHA-256 and SHA-512 signatures.","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c0f7eee57145957998418e2e7842bbd9ad7872b6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"      able to read. This will resolve itself once the upgrade completes"},{"line_number":23,"context_line":"      on all nodes."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    * The tempurl digest algorithm is now configurable and added support"},{"line_number":26,"context_line":"      for both SHA-256 and SHA-512. Supported tempurl digests are exposed"},{"line_number":27,"context_line":"      to clients in `/info`. Additionally, tempurl signatures can now be"},{"line_number":28,"context_line":"      base64 encoded."},{"line_number":29,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_8b3307ab","line":26,"range":{"start_line":25,"start_character":6,"end_line":26,"end_character":35},"in_reply_to":"5f93b717_2cfc5f6e","updated":"2018-02-02 17:07:25.000000000","message":"Done","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c5e1834323e4a30d5e695e0e08c44b3dcde1abb4","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"      - Disallow x-delete-at equal to x-timestamp."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"      - X-Delete-At computation now uses x-timestamp instead of"},{"line_number":35,"context_line":"        system time. This prevents clock skew causing inconsistent"},{"line_number":36,"context_line":"        expiry data."},{"line_number":37,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_ecf19796","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":52},"updated":"2018-02-02 00:28:36.000000000","message":"So is the norm to capitalize the headers, or not?","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c0f7eee57145957998418e2e7842bbd9ad7872b6","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"      - Disallow x-delete-at equal to x-timestamp."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"      - X-Delete-At computation now uses x-timestamp instead of"},{"line_number":35,"context_line":"        system time. This prevents clock skew causing inconsistent"},{"line_number":36,"context_line":"        expiry data."},{"line_number":37,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_8bd8e752","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":52},"in_reply_to":"5f93b717_ecf19796","updated":"2018-02-02 17:07:25.000000000","message":"The spec says case doesn\u0027t matter....","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c5e1834323e4a30d5e695e0e08c44b3dcde1abb4","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    * Fixed rare socket leak on range requests to erasure-coded objects."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    * The number of container updates on object PUTs (ie to updating listings)"},{"line_number":66,"context_line":"      has been recomputed to be far more efficient and provide better"},{"line_number":67,"context_line":"      durability guarantees. Specifically, object PUTs to erasure-coded"},{"line_number":68,"context_line":"      policies will now normally result in far fewer container updates."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_8c36d350","line":65,"range":{"start_line":65,"start_character":60,"end_line":65,"end_character":68},"updated":"2018-02-02 00:28:36.000000000","message":"s/updating/update/","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c0f7eee57145957998418e2e7842bbd9ad7872b6","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    * Fixed rare socket leak on range requests to erasure-coded objects."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    * The number of container updates on object PUTs (ie to updating listings)"},{"line_number":66,"context_line":"      has been recomputed to be far more efficient and provide better"},{"line_number":67,"context_line":"      durability guarantees. Specifically, object PUTs to erasure-coded"},{"line_number":68,"context_line":"      policies will now normally result in far fewer container updates."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_ab9cc369","line":65,"range":{"start_line":65,"start_character":60,"end_line":65,"end_character":68},"in_reply_to":"5f93b717_8c36d350","updated":"2018-02-02 17:07:25.000000000","message":"Done","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c5e1834323e4a30d5e695e0e08c44b3dcde1abb4","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    * Fixed rare socket leak on range requests to erasure-coded objects."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    * The number of container updates on object PUTs (ie to updating listings)"},{"line_number":66,"context_line":"      has been recomputed to be far more efficient and provide better"},{"line_number":67,"context_line":"      durability guarantees. Specifically, object PUTs to erasure-coded"},{"line_number":68,"context_line":"      policies will now normally result in far fewer container updates."},{"line_number":69,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_0c42c3ab","line":66,"range":{"start_line":66,"start_character":51,"end_line":66,"end_character":69},"updated":"2018-02-02 00:28:36.000000000","message":"Maybe better as \"while maintaining\"?","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"c0f7eee57145957998418e2e7842bbd9ad7872b6","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    * Fixed rare socket leak on range requests to erasure-coded objects."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    * The number of container updates on object PUTs (ie to updating listings)"},{"line_number":66,"context_line":"      has been recomputed to be far more efficient and provide better"},{"line_number":67,"context_line":"      durability guarantees. Specifically, object PUTs to erasure-coded"},{"line_number":68,"context_line":"      policies will now normally result in far fewer container updates."},{"line_number":69,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"5f93b717_8b8f8728","line":66,"range":{"start_line":66,"start_character":51,"end_line":66,"end_character":69},"in_reply_to":"5f93b717_0c42c3ab","updated":"2018-02-02 17:07:25.000000000","message":"Done","commit_id":"54768a840491bb715ba94813e772e4e51d881a8c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1f12474db19638339d18988158e3735ab09ff0d6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        small improvements after a rebalance can show changes in the"},{"line_number":58,"context_line":"        dispersion number. Dispersion in existing and new rings can be"},{"line_number":59,"context_line":"        recalculated using the new \u0027--recalculate\u0027 option to"},{"line_number":60,"context_line":"        `swift-ring-builder`."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"      - Display more info on empty rings."},{"line_number":63,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":5,"id":"5f93b717_863c5e93","line":60,"updated":"2018-02-02 17:29:44.000000000","message":"I wonder if it might be worth calling out that this primarily affects rings with a high replica count, such as those required by EC policies.","commit_id":"3c88726d0fb9bdc4490b5b52313275af314a5887"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1f12474db19638339d18988158e3735ab09ff0d6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    * Fixed rare socket leak on range requests to erasure-coded objects."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    * The number of container updates on object PUTs (ie to update listings)"},{"line_number":67,"context_line":"      has been recomputed to be far more efficient and while maintaining"},{"line_number":68,"context_line":"      durability guarantees. Specifically, object PUTs to erasure-coded"},{"line_number":69,"context_line":"      policies will now normally result in far fewer container updates."},{"line_number":70,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":5,"id":"5f93b717_6678328f","line":67,"range":{"start_line":67,"start_character":51,"end_line":67,"end_character":54},"updated":"2018-02-02 17:29:44.000000000","message":"Strike \"and\"","commit_id":"3c88726d0fb9bdc4490b5b52313275af314a5887"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1f12474db19638339d18988158e3735ab09ff0d6","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    * Moved Zuul v3 tox jobs into the Swift code repo."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    * Changed where liberasurecode-devel for CentOS 7 is referenced and"},{"line_number":74,"context_line":"      installed as a dependency."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    * Added container/object listing with prefix to InternalClient."},{"line_number":77,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":5,"id":"5f93b717_666272b0","line":74,"updated":"2018-02-02 17:29:44.000000000","message":"This was mainly test infrastructure, yeah? Does it affect things for packagers/deployers? If not, should we just drop it?","commit_id":"3c88726d0fb9bdc4490b5b52313275af314a5887"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1f12474db19638339d18988158e3735ab09ff0d6","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    * Stop logging tracebacks in the `object-replicator` when it runs"},{"line_number":82,"context_line":"      out of handoff locations."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    * Send ETag header in 206 responses to SLO reads."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    * Now `swift-recon-cron` works with conf.d configs."},{"line_number":87,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":5,"id":"5f93b717_061fee07","line":84,"range":{"start_line":84,"start_character":26,"end_line":84,"end_character":39},"updated":"2018-02-02 17:29:44.000000000","message":"Maybe worth spelling out \"206 Partial Content responses\"?","commit_id":"3c88726d0fb9bdc4490b5b52313275af314a5887"}],"releasenotes/notes/2_17_0_release-bd35f18c41c5ef18.yaml":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1f12474db19638339d18988158e3735ab09ff0d6","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    - Allow the expirer to gracefully move past updating stale work items."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  - |"},{"line_number":53,"context_line":"    When the object auditor examines an object, it will now add any"},{"line_number":54,"context_line":"      missing metadata checksums."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5f93b717_c68a6662","line":53,"updated":"2018-02-02 17:29:44.000000000","message":"DO WE KNOW WHY THIS IS SO LOUD IN THE RENDERED DOCS?\n\nSee http://logs.openstack.org/28/534528/5/check/build-openstack-releasenotes/ab50a00/html/current.html","commit_id":"3c88726d0fb9bdc4490b5b52313275af314a5887"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1f12474db19638339d18988158e3735ab09ff0d6","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    - Improved the granularity of the ring dispersion metric so that"},{"line_number":63,"context_line":"      small improvements after a rebalance can show changes in the"},{"line_number":64,"context_line":"      dispersion number. Dispersion in existing and new rings can be"},{"line_number":65,"context_line":"      recalculated using the new \u0027--recalculate\u0027 option to"},{"line_number":66,"context_line":"      ``swift-ring-builder``."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    - Display more info on empty rings."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5f93b717_c6dfc663","line":65,"range":{"start_line":65,"start_character":33,"end_line":65,"end_character":48},"updated":"2018-02-02 17:29:44.000000000","message":"``--recalculate``\n\nLooks silly otherwise, mostly because of the en-dash.","commit_id":"3c88726d0fb9bdc4490b5b52313275af314a5887"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1f12474db19638339d18988158e3735ab09ff0d6","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    Added container/object listing with prefix to InternalClient."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"  - |"},{"line_number":90,"context_line":"    Added \u0027--swift-versions\u0027 to ``swift-recon`` CLI to compare installed"},{"line_number":91,"context_line":"    versions in the cluster."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5f93b717_e6752265","line":90,"range":{"start_line":90,"start_character":10,"end_line":90,"end_character":28},"updated":"2018-02-02 17:29:44.000000000","message":"``--swift-versions`` for the same reasons as above","commit_id":"3c88726d0fb9bdc4490b5b52313275af314a5887"}]}
