)]}'
{"doc/manpages/swift.conf.5":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"bd2b3c343253f410d37c435fb1c0517a491a0ff0","unresolved":false,"context_lines":[{"line_number":203,"context_line":"api versions are by default excluded from /info."},{"line_number":204,"context_line":".IP \"\\fBauto_create_account_prefix\\fR\""},{"line_number":205,"context_line":"auto_create_account_prefix specifies the prefix for system accounts, such as"},{"line_number":206,"context_line":"those used by the object-expirer, container-reconciler, and container-sharder."},{"line_number":207,"context_line":"Default is \".\"."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""}],"source_content_type":"text/troff","patch_set":5,"id":"3fa7e38b_07f514cc","line":206,"range":{"start_line":206,"start_character":34,"end_line":206,"end_character":59},"updated":"2020-01-04 00:35:30.000000000","message":"Strike this.","commit_id":"183a48e27bea12e1ce64c3f46132a731b51c90e6"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"fa81fe63f58c916c0013979c504ec70eb208a5b8","unresolved":false,"context_lines":[{"line_number":203,"context_line":"api versions are by default excluded from /info."},{"line_number":204,"context_line":".IP \"\\fBauto_create_account_prefix\\fR\""},{"line_number":205,"context_line":"auto_create_account_prefix specifies the prefix for system accounts, such as"},{"line_number":206,"context_line":"those used by the object-expirer, container-reconciler, and container-sharder."},{"line_number":207,"context_line":"Default is \".\"."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""}],"source_content_type":"text/troff","patch_set":5,"id":"3fa7e38b_bf86845e","line":206,"range":{"start_line":206,"start_character":34,"end_line":206,"end_character":59},"in_reply_to":"3fa7e38b_07f514cc","updated":"2020-01-05 16:00:57.000000000","message":"Done","commit_id":"183a48e27bea12e1ce64c3f46132a731b51c90e6"}],"doc/saio/swift/swift.conf":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"48d599173edd438796b79261bd1e41a6292fc4bb","unresolved":false,"context_lines":[{"line_number":21,"context_line":"ec_num_parity_fragments \u003d 2"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"[swift-constraints]"},{"line_number":24,"context_line":"# XXX: this should (probably) get backed out before merging"},{"line_number":25,"context_line":"auto_create_account_prefix \u003d _"}],"source_content_type":"text/plain","patch_set":3,"id":"3fa7e38b_9cb5e01b","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":59},"updated":"2020-01-03 05:36:03.000000000","message":"Just calling out that we should see probe tests with this active on this patchset.","commit_id":"19915311be039954c440c40a867d21988f7cf59b"}],"etc/proxy-server.conf-sample":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ff7c9f7dd3df25a8c2c48480eaba29614e7c41c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# Allows the ability to withhold sections from showing up in the public calls"},{"line_number":18,"context_line":"# to /info.  You can withhold subsections by separating the dict level with a"},{"line_number":19,"context_line":"# \".\".  The following would cause the sections \u0027container_quotas\u0027 and \u0027tempurl\u0027"},{"line_number":20,"context_line":"# to not be listed, and the key max_failed_deletes would be removed from"},{"line_number":21,"context_line":"# bulk_delete.  Default value is \u0027swift.valid_api_versions\u0027 which allows all"},{"line_number":22,"context_line":"# registered features to be listed via HTTP GET /info except"},{"line_number":23,"context_line":"# swift.valid_api_versions information"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"3fa7e38b_f0219bfd","line":20,"range":{"start_line":20,"start_character":20,"end_line":20,"end_character":67},"updated":"2020-01-02 19:49:02.000000000","message":"Off-topic: lies!","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ff7c9f7dd3df25a8c2c48480eaba29614e7c41c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"# to /info.  You can withhold subsections by separating the dict level with a"},{"line_number":19,"context_line":"# \".\".  The following would cause the sections \u0027container_quotas\u0027 and \u0027tempurl\u0027"},{"line_number":20,"context_line":"# to not be listed, and the key max_failed_deletes would be removed from"},{"line_number":21,"context_line":"# bulk_delete.  Default value is \u0027swift.valid_api_versions\u0027 which allows all"},{"line_number":22,"context_line":"# registered features to be listed via HTTP GET /info except"},{"line_number":23,"context_line":"# swift.valid_api_versions information"},{"line_number":24,"context_line":"# disallowed_sections \u003d swift.valid_api_versions, container_quotas, tempurl"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"3fa7e38b_b03ec323","line":21,"range":{"start_line":21,"start_character":16,"end_line":21,"end_character":59},"updated":"2020-01-02 19:49:02.000000000","message":"Needs updating.","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"}],"etc/swift.conf-sample":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ff7c9f7dd3df25a8c2c48480eaba29614e7c41c","unresolved":false,"context_lines":[{"line_number":196,"context_line":"# valid_api_versions \u003d v1,v1.0"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"# The prefix used for hidden auto-created accounts, for example accounts in"},{"line_number":199,"context_line":"# which shard containers are created. It defaults to \u0027.\u0027; don\u0027t change it."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"# auto_create_account_prefix \u003d ."}],"source_content_type":"application/octet-stream","patch_set":2,"id":"3fa7e38b_f08e7b30","line":199,"range":{"start_line":199,"start_character":58,"end_line":199,"end_character":73},"updated":"2020-01-02 19:49:02.000000000","message":"I feel like this should have something added; as is, it seems strange that it\u0027s configurable at all. Maybe something like\n\n\u003e don\u0027t change it in a running cluster\n\n?","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"}],"swift/common/constraints.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"bdfdefca21f94655edc58cdc19ac6f40af47dbf9","unresolved":false,"context_lines":[{"line_number":44,"context_line":"# If adding an entry to DEFAULT_CONSTRAINTS, note that"},{"line_number":45,"context_line":"# these constraints are automatically published by the"},{"line_number":46,"context_line":"# proxy server in responses to /info requests, with values"},{"line_number":47,"context_line":"# updated by reload_constraints()"},{"line_number":48,"context_line":"DEFAULT_CONSTRAINTS \u003d {"},{"line_number":49,"context_line":"    \u0027max_file_size\u0027: MAX_FILE_SIZE,"},{"line_number":50,"context_line":"    \u0027max_meta_name_length\u0027: MAX_META_NAME_LENGTH,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_46648449","line":47,"updated":"2019-12-31 19:57:45.000000000","message":"N.B. that had to add it to disallowed_sections in proxy.server so it\u0027s not visible","commit_id":"732a49983ea2e8662a4439abacdbdc491d726484"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"bdfdefca21f94655edc58cdc19ac6f40af47dbf9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    \u0027max_container_name_length\u0027: MAX_CONTAINER_NAME_LENGTH,"},{"line_number":60,"context_line":"    \u0027valid_api_versions\u0027: VALID_API_VERSIONS,"},{"line_number":61,"context_line":"    \u0027extra_header_count\u0027: EXTRA_HEADER_COUNT,"},{"line_number":62,"context_line":"    \u0027auto_create_account_prefix\u0027: AUTO_CREATE_ACCOUNT_PREFIX,"},{"line_number":63,"context_line":"}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"SWIFT_CONSTRAINTS_LOADED \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e6549058","line":62,"updated":"2019-12-31 19:57:45.000000000","message":"I couldn\u0027t really think of anything useful to add to test_constraints that wasn\u0027t already covered in the DEFAULT_CONSTRAINTS testing that was already there :+1:","commit_id":"732a49983ea2e8662a4439abacdbdc491d726484"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ff7c9f7dd3df25a8c2c48480eaba29614e7c41c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                # We are never going to find the section for another option"},{"line_number":88,"context_line":"                break"},{"line_number":89,"context_line":"            else:"},{"line_number":90,"context_line":"                try:"},{"line_number":91,"context_line":"                    value \u003d int(value)"},{"line_number":92,"context_line":"                except ValueError:"},{"line_number":93,"context_line":"                    value \u003d utils.list_from_csv(value)"},{"line_number":94,"context_line":"                OVERRIDE_CONSTRAINTS[name] \u003d value"},{"line_number":95,"context_line":"    for name, default in DEFAULT_CONSTRAINTS.items():"},{"line_number":96,"context_line":"        value \u003d OVERRIDE_CONSTRAINTS.get(name, default)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_d07a5f23","line":93,"range":{"start_line":90,"start_character":16,"end_line":93,"end_character":54},"updated":"2020-01-02 19:49:02.000000000","message":"So a configured AUTO_CREATE_ACCOUNT_PREFIX will be... a list? Or possibly an integer? Hmm...","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"662e4f3268251570d0938e4b8cd4938dd11513a6","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                # We are never going to find the section for another option"},{"line_number":88,"context_line":"                break"},{"line_number":89,"context_line":"            else:"},{"line_number":90,"context_line":"                try:"},{"line_number":91,"context_line":"                    value \u003d int(value)"},{"line_number":92,"context_line":"                except ValueError:"},{"line_number":93,"context_line":"                    value \u003d utils.list_from_csv(value)"},{"line_number":94,"context_line":"                OVERRIDE_CONSTRAINTS[name] \u003d value"},{"line_number":95,"context_line":"    for name, default in DEFAULT_CONSTRAINTS.items():"},{"line_number":96,"context_line":"        value \u003d OVERRIDE_CONSTRAINTS.get(name, default)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_a14af720","line":93,"range":{"start_line":90,"start_character":16,"end_line":93,"end_character":54},"in_reply_to":"3fa7e38b_d07a5f23","updated":"2020-01-03 02:12:14.000000000","message":"Yeah, no good:\n\nTraceback (most recent call last):\n  File \"/usr/local/bin/swift-object-expirer\", line 7, in \u003cmodule\u003e\n    exec(compile(f.read(), __file__, \u0027exec\u0027))\n  File \"/vagrant/swift/bin/swift-object-expirer\", line 33, in \u003cmodule\u003e\n    run_daemon(ObjectExpirer, conf_file, **options)\n  File \"/vagrant/swift/swift/common/daemon.py\", line 316, in run_daemon\n    DaemonStrategy(klass(conf), logger).run(once\u003donce, **kwargs)\n  File \"/vagrant/swift/swift/obj/expirer.py\", line 99, in __init__\n    self.read_conf_for_queue_access(swift)\n  File \"/vagrant/swift/swift/obj/expirer.py\", line 130, in read_conf_for_queue_access\n    \u0027expiring_objects\u0027)\nTypeError: can only concatenate list (not \"str\") to list\n\nSomething like\n\ndiff --git a/swift/common/constraints.py b/swift/common/constraints.py\nindex 243308b2f..f572107b8 100644\n--- a/swift/common/constraints.py\n+++ b/swift/common/constraints.py\n@@ -78,7 +78,7 @@ def reload_constraints():\n     constraints_conf \u003d ConfigParser()\n     if constraints_conf.read(utils.SWIFT_CONF_FILE):\n         SWIFT_CONSTRAINTS_LOADED \u003d True\n-        for name in DEFAULT_CONSTRAINTS:\n+        for name, default in DEFAULT_CONSTRAINTS.items():\n             try:\n                 value \u003d constraints_conf.get(\u0027swift-constraints\u0027, name)\n             except NoOptionError:\n@@ -87,9 +87,12 @@ def reload_constraints():\n                 # We are never going to find the section for another option\n                 break\n             else:\n-                try:\n-                    value \u003d int(value)\n-                except ValueError:\n+                if isinstance(default, int):\n+                    value \u003d int(value)  # Go ahead and let it error\n+                elif isinstance(default, str):\n+                    pass  # No translation needed, I guess\n+                else:\n+                    # Hope we want a list!\n                     value \u003d utils.list_from_csv(value)\n                 OVERRIDE_CONSTRAINTS[name] \u003d value\n     for name, default in DEFAULT_CONSTRAINTS.items():\n\nshould square it.","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"}],"swift/common/internal_client.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ff7c9f7dd3df25a8c2c48480eaba29614e7c41c","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    container_ring \u003d pipeline_property(\u0027container_ring\u0027)"},{"line_number":160,"context_line":"    account_ring \u003d pipeline_property(\u0027account_ring\u0027)"},{"line_number":161,"context_line":"    auto_create_account_prefix \u003d pipeline_property("},{"line_number":162,"context_line":"        \u0027auto_create_account_prefix\u0027, default\u003dAUTO_CREATE_ACCOUNT_PREFIX)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def make_request("},{"line_number":165,"context_line":"            self, method, path, headers, acceptable_statuses, body_file\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_90706743","line":162,"updated":"2020-01-02 19:49:02.000000000","message":"So do we get a warning if it\u0027s configured in internal_client.conf? I suppose we do...\n\nOff-topic: pipeline_property is kinda scary -- I\u0027d worry a lot about custom middlewares using non-standard naming conventions, or even just using closures instead of classes. I guess it\u0027s probably mostly OK for InternalClient, though?","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"}],"swift/common/utils.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ff7c9f7dd3df25a8c2c48480eaba29614e7c41c","unresolved":false,"context_lines":[{"line_number":329,"context_line":"    :returns: dictionary of information about the swift cluster."},{"line_number":330,"context_line":"    \"\"\""},{"line_number":331,"context_line":"    disallowed_sections \u003d disallowed_sections or []"},{"line_number":332,"context_line":"    info \u003d deepcopy(_swift_info)"},{"line_number":333,"context_line":"    for section in disallowed_sections:"},{"line_number":334,"context_line":"        key_to_pop \u003d None"},{"line_number":335,"context_line":"        sub_section_dict \u003d info"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_b06d6368","line":332,"updated":"2020-01-02 19:49:02.000000000","message":"This isn\u0027t super-obvious -- what broke without it? Seems like a reasonable thing, though; we don\u0027t want callers accidentally messing with our state.","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"}],"swift/common/wsgi.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"bdfdefca21f94655edc58cdc19ac6f40af47dbf9","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        func \u003d getattr(app, \u0027modify_wsgi_pipeline\u0027, None)"},{"line_number":403,"context_line":"        if func and allow_modify_pipeline:"},{"line_number":404,"context_line":"            func(PipelineWrapper(ctx))"},{"line_number":405,"context_line":"        ctx.app_context.create \u003d lambda: app"},{"line_number":406,"context_line":"    return ctx.create()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_265f0876","line":405,"updated":"2019-12-31 19:57:45.000000000","message":"this is a little sketchy, so I want to draw attention to it\n\ni added this to reduce the amount of double logging that happens when you start a proxy (or load one from a config file as some of the updated tests do)\n\nIf we don\u0027t all think it\u0027s obviously correct to only create application instances once -  I could update the test to allow for the double logging and pull this out into a separate change?","commit_id":"732a49983ea2e8662a4439abacdbdc491d726484"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ff7c9f7dd3df25a8c2c48480eaba29614e7c41c","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        func \u003d getattr(app, \u0027modify_wsgi_pipeline\u0027, None)"},{"line_number":403,"context_line":"        if func and allow_modify_pipeline:"},{"line_number":404,"context_line":"            func(PipelineWrapper(ctx))"},{"line_number":405,"context_line":"        ctx.app_context.create \u003d lambda: app"},{"line_number":406,"context_line":"    return ctx.create()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_90be27ad","line":405,"updated":"2020-01-02 19:49:02.000000000","message":"Agree; definitely a little funny. But it does seem better this way.","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"c1bf25b5fbe79fd884c18637d6f4024a4bf697c9","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        func \u003d getattr(app, \u0027modify_wsgi_pipeline\u0027, None)"},{"line_number":403,"context_line":"        if func and allow_modify_pipeline:"},{"line_number":404,"context_line":"            func(PipelineWrapper(ctx))"},{"line_number":405,"context_line":"        ctx.app_context.create \u003d lambda: app"},{"line_number":406,"context_line":"    return ctx.create()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_ec6bff18","line":405,"in_reply_to":"3fa7e38b_90be27ad","updated":"2020-01-03 21:43:39.000000000","message":"Add a comment!","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"bd2b3c343253f410d37c435fb1c0517a491a0ff0","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        func \u003d getattr(app, \u0027modify_wsgi_pipeline\u0027, None)"},{"line_number":403,"context_line":"        if func and allow_modify_pipeline:"},{"line_number":404,"context_line":"            func(PipelineWrapper(ctx))"},{"line_number":405,"context_line":"        ctx.app_context.create \u003d lambda: app"},{"line_number":406,"context_line":"    return ctx.create()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_c74cdc41","line":405,"updated":"2020-01-04 00:35:30.000000000","message":"Do we want a comment here? About how we only want to create the app once, so deprecation warnings and the like aren\u0027t double-logged?","commit_id":"183a48e27bea12e1ce64c3f46132a731b51c90e6"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"fa81fe63f58c916c0013979c504ec70eb208a5b8","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        func \u003d getattr(app, \u0027modify_wsgi_pipeline\u0027, None)"},{"line_number":403,"context_line":"        if func and allow_modify_pipeline:"},{"line_number":404,"context_line":"            func(PipelineWrapper(ctx))"},{"line_number":405,"context_line":"        ctx.app_context.create \u003d lambda: app"},{"line_number":406,"context_line":"    return ctx.create()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_5fe5103d","line":405,"in_reply_to":"3fa7e38b_3f54d4fc","updated":"2020-01-05 16:00:57.000000000","message":"Done","commit_id":"183a48e27bea12e1ce64c3f46132a731b51c90e6"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"ca5f42dbce771d5ba42a0eb6c40841fc227e247d","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        func \u003d getattr(app, \u0027modify_wsgi_pipeline\u0027, None)"},{"line_number":403,"context_line":"        if func and allow_modify_pipeline:"},{"line_number":404,"context_line":"            func(PipelineWrapper(ctx))"},{"line_number":405,"context_line":"        ctx.app_context.create \u003d lambda: app"},{"line_number":406,"context_line":"    return ctx.create()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_3f54d4fc","line":405,"in_reply_to":"3fa7e38b_4d06cd76","updated":"2020-01-05 14:13:13.000000000","message":"right, each worker is going to call it again - I don\u0027t really have a plan to avoid that...\n\nReally the double logging wasn\u0027t bothering me, it just surprised the heck out me on a test...","commit_id":"183a48e27bea12e1ce64c3f46132a731b51c90e6"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ec3f9150067ec6fed4c9fc351420f094afc7647d","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        func \u003d getattr(app, \u0027modify_wsgi_pipeline\u0027, None)"},{"line_number":403,"context_line":"        if func and allow_modify_pipeline:"},{"line_number":404,"context_line":"            func(PipelineWrapper(ctx))"},{"line_number":405,"context_line":"        ctx.app_context.create \u003d lambda: app"},{"line_number":406,"context_line":"    return ctx.create()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_4d06cd76","line":405,"in_reply_to":"3fa7e38b_c74cdc41","updated":"2020-01-05 09:12:53.000000000","message":":-/\n\nSo I\u0027m not sure this is actually *enough* -- I still see doubled-up logging for the new warning when restarting at least proxies, even with this.\n\nI *think* it comes down to us calling loadapp in run_wsgi *before* calling run_server (which also calls loadapp). Not sure how best to fix it, though :-(","commit_id":"183a48e27bea12e1ce64c3f46132a731b51c90e6"}],"swift/container/reconciler.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"48d599173edd438796b79261bd1e41a6292fc4bb","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    FileLikeIter, Timestamp, last_modified_date_to_timestamp, \\"},{"line_number":32,"context_line":"    LRUCache, decode_timestamps"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"MISPLACED_OBJECTS_ACCOUNT \u003d constraints.AUTO_CREATE_ACCOUNT_PREFIX + \\"},{"line_number":35,"context_line":"    \u0027misplaced_objects\u0027"},{"line_number":36,"context_line":"MISPLACED_OBJECTS_CONTAINER_DIVISOR \u003d 3600  # 1 hour"},{"line_number":37,"context_line":"CONTAINER_POLICY_TTL \u003d 30"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_bcc21c85","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":23},"updated":"2020-01-03 05:36:03.000000000","message":"So now I can see this probe test pass with a non-default prefix... but I\u0027m starting to worry about upgrade impact for clusters that were running with\n\n auto_create_account_prefix \u003d \u003cnot-dot\u003e\n\nwhich had the one-off fix applied of manually creating the \".misplaced_objects\" account :-/","commit_id":"19915311be039954c440c40a867d21988f7cf59b"}],"swift/proxy/controllers/base.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ff7c9f7dd3df25a8c2c48480eaba29614e7c41c","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        # on disk or not."},{"line_number":349,"context_line":"        is_autocreate_account \u003d account.startswith("},{"line_number":350,"context_line":"            getattr(app, \u0027auto_create_account_prefix\u0027,"},{"line_number":351,"context_line":"                    constraints.AUTO_CREATE_ACCOUNT_PREFIX))"},{"line_number":352,"context_line":"        if not is_autocreate_account:"},{"line_number":353,"context_line":"            account_info \u003d get_account_info(env, app, swift_source)"},{"line_number":354,"context_line":"            if not account_info or not is_success(account_info[\u0027status\u0027]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_b0d003f6","line":351,"updated":"2020-01-02 19:49:02.000000000","message":"Now I want to look at why we can\u0027t just say\n\n app.auto_create_account_prefix\n\nWhen would the app *not* have that attribute!?","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"}],"swift/proxy/server.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ff7c9f7dd3df25a8c2c48480eaba29614e7c41c","unresolved":false,"context_lines":[{"line_number":306,"context_line":"            conf.get(\u0027expose_info\u0027, \u0027yes\u0027))"},{"line_number":307,"context_line":"        self.disallowed_sections \u003d list_from_csv("},{"line_number":308,"context_line":"            conf.get(\u0027disallowed_sections\u0027, \u0027, \u0027.join(["},{"line_number":309,"context_line":"                \u0027swift.auto_create_account_prefix\u0027,"},{"line_number":310,"context_line":"                \u0027swift.valid_api_versions\u0027,"},{"line_number":311,"context_line":"            ])))"},{"line_number":312,"context_line":"        self.admin_key \u003d conf.get(\u0027admin_key\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_f0667b55","line":309,"updated":"2020-01-02 19:49:02.000000000","message":"Agreed that this is an internal detail that\u0027s irrelevant to clients and so should not be exposed by default.","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"}],"test/probe/test_container_merge_policy_index.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d2df6797800e21a0b75dbdc96021df5ca7fbb84d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from swift.common import utils, direct_client"},{"line_number":24,"context_line":"from swift.common.storage_policy import POLICIES"},{"line_number":25,"context_line":"from swift.common.http import HTTP_NOT_FOUND"},{"line_number":26,"context_line":"from swift.container.reconciler import MISPLACED_OBJECTS_ACCOUNT"},{"line_number":27,"context_line":"from test.probe.brain import BrainSplitter"},{"line_number":28,"context_line":"from test.probe.common import (ReplProbeTest, ENABLED_POLICIES,"},{"line_number":29,"context_line":"                               POLICIES_BY_TYPE, REPL_POLICY)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_27a850d7","line":26,"updated":"2020-01-03 23:29:38.000000000","message":"I guess at this point this is kind of a drive-by\n\n... but the blame will point back to this review so that\u0027s probably helpful","commit_id":"183a48e27bea12e1ce64c3f46132a731b51c90e6"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"bd2b3c343253f410d37c435fb1c0517a491a0ff0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.container_name \u003d \u0027container-%s\u0027 % uuid.uuid4()"},{"line_number":42,"context_line":"        self.object_name \u003d \u0027object-%s\u0027 % uuid.uuid4()"},{"line_number":43,"context_line":"        self.brain \u003d BrainSplitter(self.url, self.token, self.container_name,"},{"line_number":44,"context_line":"                                   self.object_name, \u0027container\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _get_object_patiently(self, policy_index):"},{"line_number":47,"context_line":"        # use proxy to access object (bad container info might be cached...)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_0770b472","line":44,"updated":"2020-01-04 00:35:30.000000000","message":"I think I can still get this passing with an auto_create_account_prefix override if we add a direct account PUT or the like for MISPLACED_OBJECTS_ACCOUNT.\n\nI\u0027ll try it out in a separate follow-on patch.","commit_id":"183a48e27bea12e1ce64c3f46132a731b51c90e6"}],"test/unit/common/test_internal_client.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ff7c9f7dd3df25a8c2c48480eaba29614e7c41c","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                \u0027Option auto_create_account_prefix is deprecated. \u0027"},{"line_number":266,"context_line":"                \u0027Configure auto_create_account_prefix under the \u0027"},{"line_number":267,"context_line":"                \u0027swift-constraints section of swift.conf. This option will \u0027"},{"line_number":268,"context_line":"                \u0027be ignored in a future release.\u0027])"},{"line_number":269,"context_line":"            self.assertEqual(client.account_ring,"},{"line_number":270,"context_line":"                             client.app.app.app.account_ring)"},{"line_number":271,"context_line":"            self.assertEqual(client.account_ring.serialized_path,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_f0f3db9d","line":268,"updated":"2020-01-02 19:49:02.000000000","message":":+1:","commit_id":"fc1a7aaf33359f1c509699b270c3cb3c7de61d6e"}]}
