)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"363a63127624e458563b440b9c69500ba9c6021e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  - We don\u0027t have to worry about loading up rings in a container-server"},{"line_number":18,"context_line":"    to answer questions about the state of its ring, and"},{"line_number":19,"context_line":"  - We can reduce the overall memory overhead by removing rings from"},{"line_number":20,"context_line":"    background daemons in favor of querying the ring service."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Prototype it as a Flask app -- at some point we\u0027ll need to deploy and"},{"line_number":23,"context_line":"start it in a more Swift-y way."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_28280ae0","line":20,"updated":"2019-10-05 02:22:27.000000000","message":"Note that this also makes things like moving to 32-bit dev_ids less scary -- we aren\u0027t doubling the size of a ring across all services, just one service.","commit_id":"9087e2267cb3a938f42237a2740648dcb92dc014"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"363a63127624e458563b440b9c69500ba9c6021e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    all the partitions this device is responsible for?\", for example)"},{"line_number":29,"context_line":"  - Actually try swapping a daemon to use the service; will maybe"},{"line_number":30,"context_line":"    involve some sort of RingProxy that mirrors the Ring API but talks"},{"line_number":31,"context_line":"    to a socket?"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Change-Id: Id0010ee5d9034f48eb6a96c147a5f72a73269253"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_483c662e","line":31,"updated":"2019-10-05 02:22:27.000000000","message":"- Consider getting error-limiting into the service, so the object-replicator and object-reconstructory (for example) don\u0027t have to separately determine that some other node is currently having issues.","commit_id":"9087e2267cb3a938f42237a2740648dcb92dc014"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f058661c145c2bea39f3522b1475674475b5af23","unresolved":true,"context_lines":[{"line_number":25,"context_line":"  - Think about other useful questions to ask of rings (maybe \"what are"},{"line_number":26,"context_line":"    all the partitions this device is responsible for?\", for example)"},{"line_number":27,"context_line":"  - Have backend daemons include response headers indicating whether"},{"line_number":28,"context_line":"    they think they\u0027re a primary for a resource"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Change-Id: Id0010ee5d9034f48eb6a96c147a5f72a73269253"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"925f50f7_9876181e","line":28,"updated":"2021-04-01 20:26:47.000000000","message":"- error-limiting feedback/centralization\n- doc updates","commit_id":"b8933889342a4360872e7547b7ea53b07d6f6ae4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f058661c145c2bea39f3522b1475674475b5af23","unresolved":true,"context_lines":[{"line_number":27,"context_line":"  - Have backend daemons include response headers indicating whether"},{"line_number":28,"context_line":"    they think they\u0027re a primary for a resource"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Change-Id: Id0010ee5d9034f48eb6a96c147a5f72a73269253"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"f50d096f_dcea1291","line":30,"updated":"2021-04-01 20:26:47.000000000","message":"Closes-Bug: #1910157","commit_id":"b8933889342a4360872e7547b7ea53b07d6f6ae4"}],"etc/swift.conf-sample":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03c8172b224d40f4264dc2d9f157f635a8491cbc","unresolved":true,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"# Ring data may also be looked up via a service bound to localhost. Set this"},{"line_number":13,"context_line":"# option to use RingProxy shims instead of loading up the ring in-process."},{"line_number":14,"context_line":"#swift_ring_server_port \u003d 8081"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# storage policies are defined here and determine various characteristics"},{"line_number":17,"context_line":"# about how objects are stored and treated.  Policies are specified by name on"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"60592a93_ce02523e","line":14,"updated":"2021-02-03 18:52:29.000000000","message":"So I stuck this here on the assumption that you\u0027d always want the rings to be the same across all services on a node... but maybe that\u0027s a faulty assumption. I kind of want to try some crazy things like having a policy that\u0027s got two replicas in the proxy but three for the backend servers... in which case having this configurable per service (or at least per-layer) might be better.","commit_id":"b8933889342a4360872e7547b7ea53b07d6f6ae4"}],"swift/common/ring/server.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f058661c145c2bea39f3522b1475674475b5af23","unresolved":true,"context_lines":[{"line_number":27,"context_line":"from swift.common import utils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"DEFAULT_HANDOFFS \u003d 3"},{"line_number":31,"context_line":"SWIFT_DIR \u003d os.environ.get(\u0027SWIFT_DIR\u0027, \u0027/etc/swift\u0027)"},{"line_number":32,"context_line":"utils.set_swift_dir(SWIFT_DIR)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"99a29c3d_3f08312f","line":30,"updated":"2021-04-01 20:26:47.000000000","message":"Should probably be willing to go a bit higher for the default -- N replicas?","commit_id":"b8933889342a4360872e7547b7ea53b07d6f6ae4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f058661c145c2bea39f3522b1475674475b5af23","unresolved":true,"context_lines":[{"line_number":41,"context_line":"    return \u0027http://{ip}:{port}/{device}/{part}/{path}\u0027.format("},{"line_number":42,"context_line":"        ip\u003d\u0027[\u0027 + dev[\u0027ip\u0027] + \u0027]\u0027 if \u0027:\u0027 in dev[\u0027ip\u0027] else dev[\u0027ip\u0027],"},{"line_number":43,"context_line":"        port\u003ddev[\u0027port\u0027],"},{"line_number":44,"context_line":"        device\u003ddev[\u0027device\u0027],"},{"line_number":45,"context_line":"        part\u003dpart,"},{"line_number":46,"context_line":"        path\u003dswob.wsgi_quote(swob.str_to_wsgi(path)))"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"c5078325_ff705be2","line":44,"updated":"2021-04-01 20:26:47.000000000","message":"Should probably take a flag for whether to use replication network (if available).","commit_id":"b8933889342a4360872e7547b7ea53b07d6f6ae4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f058661c145c2bea39f3522b1475674475b5af23","unresolved":true,"context_lines":[{"line_number":81,"context_line":"                return json_response(r.devs)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"            elif prop \u003d\u003d \u0027partition\u0027:"},{"line_number":84,"context_line":"                part \u003d int(rest)"},{"line_number":85,"context_line":"                primaries \u003d r.get_part_nodes(part)"},{"line_number":86,"context_line":"                try:"},{"line_number":87,"context_line":"                    handoffs \u003d int(req.params.get(\u0027handoffs\u0027, \u0027\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"c45a3b0c_22b6c3e3","line":84,"updated":"2021-04-01 20:26:47.000000000","message":"except ValueError...","commit_id":"b8933889342a4360872e7547b7ea53b07d6f6ae4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03c8172b224d40f4264dc2d9f157f635a8491cbc","unresolved":true,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":129,"context_line":"    sock \u003d eventlet.listen((\u0027localhost\u0027, utils.RING_SERVER_PORT), backlog\u003d1024)"},{"line_number":130,"context_line":"    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)"},{"line_number":131,"context_line":"    sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)"},{"line_number":132,"context_line":"    wsgi.server(sock, Application(), utils.NullLogger())"}],"source_content_type":"text/x-python","patch_set":3,"id":"f7915df2_519f548c","line":129,"range":{"start_line":129,"start_character":41,"end_line":129,"end_character":63},"updated":"2021-02-03 18:52:29.000000000","message":"Should probably make sure this isn\u0027t 0.","commit_id":"b8933889342a4360872e7547b7ea53b07d6f6ae4"}]}
