)]}'
{"doc/source/development_middleware.rst":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"7e5c4a1d5bc4eaaf99040daef03f999bc15a863b","unresolved":false,"context_lines":[{"line_number":257,"context_line":"cause any existing item with the same name to be deleted."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"System metadata may be set on objects using only PUT requests. All items of"},{"line_number":260,"context_line":"existing system metadata will be deleted and replaced en-masse by any system"},{"line_number":261,"context_line":"metadata headers included with the PUT request. System metadata is neither"},{"line_number":262,"context_line":"updated nor deleted by a POST request: updating individual items of system"},{"line_number":263,"context_line":"metadata with a POST request is not yet supported in the same way that updating"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa32b979_0e879ab5","line":260,"updated":"2015-06-25 07:28:43.000000000","message":"meta-nit: en masse is just a two word french phrase right - it\u0027s not hyphenated?","commit_id":"5868956d439cfbf6abf83d3308595d0d0d353b58"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"19fdacb0c8d5e9c7bb8fb72ce6681bf17c0099f3","unresolved":false,"context_lines":[{"line_number":257,"context_line":"cause any existing item with the same name to be deleted."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"System metadata may be set on objects using only PUT requests. All items of"},{"line_number":260,"context_line":"existing system metadata will be deleted and replaced en-masse by any system"},{"line_number":261,"context_line":"metadata headers included with the PUT request. System metadata is neither"},{"line_number":262,"context_line":"updated nor deleted by a POST request: updating individual items of system"},{"line_number":263,"context_line":"metadata with a POST request is not yet supported in the same way that updating"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa32b979_1b47c2bc","line":260,"in_reply_to":"fa32b979_0e879ab5","updated":"2015-06-25 15:54:57.000000000","message":"correct! mon dieu :P","commit_id":"5868956d439cfbf6abf83d3308595d0d0d353b58"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"56b3c69f0d4df905a7362fcfcd7b765f92a3afe5","unresolved":false,"context_lines":[{"line_number":262,"context_line":"updated nor deleted by a POST request: updating individual items of system"},{"line_number":263,"context_line":"metadata with a POST request is not yet supported in the same way that updating"},{"line_number":264,"context_line":"individual items of user metadata is not supported. In cases where middleware"},{"line_number":265,"context_line":"needs to store its own metadata with a POST request, it may use Object Mass"},{"line_number":266,"context_line":"Metadata."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5aef4532_91eeb589","line":265,"updated":"2016-03-08 04:51:03.000000000","message":"i missed a few places in this document - this needs to be \"transient sysmeta\" instead of \"Mass Metadata\"","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"6a9056773fe17217bec53921bfc7d87fe42ef92e","unresolved":false,"context_lines":[{"line_number":262,"context_line":"updated nor deleted by a POST request: updating individual items of system"},{"line_number":263,"context_line":"metadata with a POST request is not yet supported in the same way that updating"},{"line_number":264,"context_line":"individual items of user metadata is not supported. In cases where middleware"},{"line_number":265,"context_line":"needs to store its own metadata with a POST request, it may use Object Mass"},{"line_number":266,"context_line":"Metadata."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5aef4532_dfcc52bd","line":265,"in_reply_to":"5aef4532_91eeb589","updated":"2016-03-10 15:46:10.000000000","message":"Done","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"56b3c69f0d4df905a7362fcfcd7b765f92a3afe5","unresolved":false,"context_lines":[{"line_number":266,"context_line":"Metadata."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"^^^^^^^^^^^^^^^^^^^^"},{"line_number":269,"context_line":"Object Mass-Metadata"},{"line_number":270,"context_line":"^^^^^^^^^^^^^^^^^^^^"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"If middleware needs to store object metadata with a POST request it may do so"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5aef4532_f17459d0","line":269,"updated":"2016-03-08 04:51:03.000000000","message":"Change this away from \"Mass\"","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"6a9056773fe17217bec53921bfc7d87fe42ef92e","unresolved":false,"context_lines":[{"line_number":266,"context_line":"Metadata."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"^^^^^^^^^^^^^^^^^^^^"},{"line_number":269,"context_line":"Object Mass-Metadata"},{"line_number":270,"context_line":"^^^^^^^^^^^^^^^^^^^^"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"If middleware needs to store object metadata with a POST request it may do so"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5aef4532_1fc35a8a","line":269,"in_reply_to":"5aef4532_f17459d0","updated":"2016-03-10 15:46:10.000000000","message":"Done","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"56b3c69f0d4df905a7362fcfcd7b765f92a3afe5","unresolved":false,"context_lines":[{"line_number":284,"context_line":"items of mass-metadata are deleted \"en-masse\" and replaced with any"},{"line_number":285,"context_line":"mass-metadata included with the POST request. Mass-metadata set by a middleware"},{"line_number":286,"context_line":"is therefore prone to deletion by a subsequent client-generated POST request"},{"line_number":287,"context_line":"unless the middleware is careful to include its mass-metadata with every POST."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Mass-metadata deliberately uses a different header prefix to system metadata to"},{"line_number":290,"context_line":"emphasize the mass replacement semantic and to allow for support of individual"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5aef4532_d13b1dea","line":287,"updated":"2016-03-08 04:51:03.000000000","message":"This whole paragraph has \"Mass\" and \"mass\" in it.  change them all.","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"6a9056773fe17217bec53921bfc7d87fe42ef92e","unresolved":false,"context_lines":[{"line_number":284,"context_line":"items of mass-metadata are deleted \"en-masse\" and replaced with any"},{"line_number":285,"context_line":"mass-metadata included with the POST request. Mass-metadata set by a middleware"},{"line_number":286,"context_line":"is therefore prone to deletion by a subsequent client-generated POST request"},{"line_number":287,"context_line":"unless the middleware is careful to include its mass-metadata with every POST."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Mass-metadata deliberately uses a different header prefix to system metadata to"},{"line_number":290,"context_line":"emphasize the mass replacement semantic and to allow for support of individual"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5aef4532_7fbc1e06","line":287,"in_reply_to":"5aef4532_d13b1dea","updated":"2016-03-10 15:46:10.000000000","message":"Done","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"56b3c69f0d4df905a7362fcfcd7b765f92a3afe5","unresolved":false,"context_lines":[{"line_number":286,"context_line":"is therefore prone to deletion by a subsequent client-generated POST request"},{"line_number":287,"context_line":"unless the middleware is careful to include its mass-metadata with every POST."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Mass-metadata deliberately uses a different header prefix to system metadata to"},{"line_number":290,"context_line":"emphasize the mass replacement semantic and to allow for support of individual"},{"line_number":291,"context_line":"object metadata updates in the ``sysmeta`` namespace to be added in future."}],"source_content_type":"text/x-rst","patch_set":9,"id":"5aef4532_112625ce","line":289,"updated":"2016-03-08 04:51:03.000000000","message":"another Mass ...","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"6a9056773fe17217bec53921bfc7d87fe42ef92e","unresolved":false,"context_lines":[{"line_number":286,"context_line":"is therefore prone to deletion by a subsequent client-generated POST request"},{"line_number":287,"context_line":"unless the middleware is careful to include its mass-metadata with every POST."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Mass-metadata deliberately uses a different header prefix to system metadata to"},{"line_number":290,"context_line":"emphasize the mass replacement semantic and to allow for support of individual"},{"line_number":291,"context_line":"object metadata updates in the ``sysmeta`` namespace to be added in future."}],"source_content_type":"text/x-rst","patch_set":9,"id":"5aef4532_9f95aa34","line":289,"in_reply_to":"5aef4532_112625ce","updated":"2016-03-10 15:46:10.000000000","message":"done.  I also changed more here, since it was intended to explain the \"mass\" part in the name.  but that is no longer in the name.","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"9d064544b36d817fa10e402cbff3ecc896c47777","unresolved":false,"context_lines":[{"line_number":292,"context_line":""},{"line_number":293,"context_line":"Transient-sysmeta deliberately uses a different header prefix to system"},{"line_number":294,"context_line":"metadata to emphasize the fact that the data is only persisted until a"},{"line_number":295,"context_line":"subsequent POST."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3afc51ec_6d725a7e","line":295,"updated":"2016-03-11 14:56:57.000000000","message":"much better!","commit_id":"7d391626d0d2c3cc22d873441a8b5e6d36562dd9"}],"swift/common/middleware/gatekeeper.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"9ee5836cd6a6ea73ef310ffadb47e734f58c53a2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                      get_sys_meta_prefix(\u0027container\u0027),"},{"line_number":52,"context_line":"                      get_sys_meta_prefix(\u0027object\u0027),"},{"line_number":53,"context_line":"                      get_object_massmeta_prefix(),"},{"line_number":54,"context_line":"                      \u0027x-backend\u0027]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"#: A list of python regular expressions that will be used to"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_4c8165c2","line":54,"updated":"2015-06-01 07:47:24.000000000","message":"Hmm, maybe I\u0027m too much nitpicking here, but now we have three different ways to get prefixes. I would prefer to have a more consistent way of doing this, for example at least using the same arguments, and probably also using get_massmeta_prefix() as the method name. Pls see my comment in request_helpers.py as well.","commit_id":"5868956d439cfbf6abf83d3308595d0d0d353b58"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"19fdacb0c8d5e9c7bb8fb72ce6681bf17c0099f3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                      get_sys_meta_prefix(\u0027container\u0027),"},{"line_number":52,"context_line":"                      get_sys_meta_prefix(\u0027object\u0027),"},{"line_number":53,"context_line":"                      get_object_massmeta_prefix(),"},{"line_number":54,"context_line":"                      \u0027x-backend\u0027]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"#: A list of python regular expressions that will be used to"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_9b575259","line":54,"in_reply_to":"7a016987_4c8165c2","updated":"2015-06-25 15:54:57.000000000","message":"yes. I did it this way because the prefix only applies to objects so it didn\u0027t seem to make sense to pass the server type as an arg. But I\u0027ll look again.","commit_id":"5868956d439cfbf6abf83d3308595d0d0d353b58"}],"swift/common/request_helpers.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"9ee5836cd6a6ea73ef310ffadb47e734f58c53a2","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    return key.lower().startswith(prefix)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"def get_object_massmeta_prefix():"},{"line_number":235,"context_line":"    \"\"\""},{"line_number":236,"context_line":"    Returns the prefix for extra object metadata."},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_8cf07d68","line":234,"updated":"2015-06-01 07:47:24.000000000","message":"I think it would be better to use a server_type argument in the same way get_sys_meta_prefix() and get_user_meta_prefix() are already implemented.\n\nI don\u0027t have a handy use case at the moment, but I could imagine there will be account and container massmeta in the future too, and then we need to refactor this again, maybe breaking external middlewares.","commit_id":"5868956d439cfbf6abf83d3308595d0d0d353b58"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"19fdacb0c8d5e9c7bb8fb72ce6681bf17c0099f3","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    return key.lower().startswith(prefix)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"def get_object_massmeta_prefix():"},{"line_number":235,"context_line":"    \"\"\""},{"line_number":236,"context_line":"    Returns the prefix for extra object metadata."},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_9b9c320f","line":234,"in_reply_to":"7a016987_8cf07d68","updated":"2015-06-25 15:54:57.000000000","message":"I couldn\u0027t think that we\u0027d ever want to apply this to containers or accounts - it\u0027s such an awful semantic that we just have to support for objects :/ Will reconsider though.","commit_id":"5868956d439cfbf6abf83d3308595d0d0d353b58"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"56b3c69f0d4df905a7362fcfcd7b765f92a3afe5","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"def get_obj_persisted_sysmeta_prefix():"},{"line_number":251,"context_line":"    return get_sys_meta_prefix(\u0027object\u0027)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"def is_object_transient_sysmeta(key):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_0c42883e","line":251,"updated":"2016-03-08 04:51:03.000000000","message":"This needs to change to call get_object_transient_sysmeta_prefix() - or we just remove this and use the other method in the crypto code.","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"6a9056773fe17217bec53921bfc7d87fe42ef92e","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"def get_obj_persisted_sysmeta_prefix():"},{"line_number":251,"context_line":"    return get_sys_meta_prefix(\u0027object\u0027)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"def is_object_transient_sysmeta(key):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_9fd64a4d","line":251,"in_reply_to":"5aef4532_0c42883e","updated":"2016-03-10 15:46:10.000000000","message":"Done","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0b0e8bf04f3401db59b43e8ef064bcd87b5d666c","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"def get_obj_persisted_sysmeta_prefix():"},{"line_number":251,"context_line":"    return get_sys_meta_prefix(\u0027object\u0027)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"def is_object_transient_sysmeta(key):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_e0909845","line":251,"in_reply_to":"5aef4532_0c42883e","updated":"2016-03-09 17:40:36.000000000","message":"yeah, remove it","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d9f49f8f3df6b6e4a48cdf1cb820d93dc542e9ff","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    :returns: prefix string for server type\u0027s system metadata headers"},{"line_number":278,"context_line":"    \"\"\""},{"line_number":279,"context_line":"    return \u0027x-object-transient-sysmeta-\u0027"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"def remove_items(headers, condition):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_48cfae55","line":279,"updated":"2016-03-14 21:54:54.000000000","message":"i\u0027m sure there\u0027s prior art, but a function call to return a string looks ridiculous - even granting that it\u0027s a doc anchor point.  IMHO the signature should be:\n\n    def get_object_transient_sysmeta(key):\n        \"\"\"\n        Returns the Object Transient System Metadata header for key.\n\nhttps://gist.github.com/clayg/1bb48494edb0a994d085","commit_id":"9292c73434e4f6301a530b91571ead03b9eed28e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"78901507a9246d28d0c058bd96ece69e4e80be37","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    :returns: prefix string for server type\u0027s system metadata headers"},{"line_number":278,"context_line":"    \"\"\""},{"line_number":279,"context_line":"    return \u0027x-object-transient-sysmeta-\u0027"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"def remove_items(headers, condition):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_a16cf435","line":279,"in_reply_to":"5aef4532_48cfae55","updated":"2016-03-15 09:21:29.000000000","message":"Yep now you point it out it is ridiculous :/ my bad.\n\nIf you propose your gist I would be on board. Note that this version did not merge - see version 11 (the docstring got fixed on this function)","commit_id":"9292c73434e4f6301a530b91571ead03b9eed28e"}],"swift/obj/server.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"7e5c4a1d5bc4eaaf99040daef03f999bc15a863b","unresolved":false,"context_lines":[{"line_number":447,"context_line":"                headers\u003d{\u0027X-Backend-Timestamp\u0027: orig_timestamp.internal})"},{"line_number":448,"context_line":"        metadata \u003d {\u0027X-Timestamp\u0027: req_timestamp.internal}"},{"line_number":449,"context_line":"        metadata.update(val for val in request.headers.iteritems()"},{"line_number":450,"context_line":"                        if is_user_meta(\u0027object\u0027, val[0]))"},{"line_number":451,"context_line":"        for header_key in self.allowed_headers:"},{"line_number":452,"context_line":"            if header_key in request.headers:"},{"line_number":453,"context_line":"                header_caps \u003d header_key.title()"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_445901fc","side":"PARENT","line":450,"updated":"2015-06-25 07:28:43.000000000","message":"what if we *just* changed this to is_sys_or_user like everywhere else?","commit_id":"5bb7c286ebb4a54e4d2bd5a02845644d1c651183"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"19fdacb0c8d5e9c7bb8fb72ce6681bf17c0099f3","unresolved":false,"context_lines":[{"line_number":447,"context_line":"                headers\u003d{\u0027X-Backend-Timestamp\u0027: orig_timestamp.internal})"},{"line_number":448,"context_line":"        metadata \u003d {\u0027X-Timestamp\u0027: req_timestamp.internal}"},{"line_number":449,"context_line":"        metadata.update(val for val in request.headers.iteritems()"},{"line_number":450,"context_line":"                        if is_user_meta(\u0027object\u0027, val[0]))"},{"line_number":451,"context_line":"        for header_key in self.allowed_headers:"},{"line_number":452,"context_line":"            if header_key in request.headers:"},{"line_number":453,"context_line":"                header_caps \u003d header_key.title()"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_db64fa22","side":"PARENT","line":450,"in_reply_to":"fa32b979_445901fc","updated":"2015-06-25 15:54:57.000000000","message":"We\u0027d end up with items of sysmeta set at different times but not having their individual timestamps - same problem as content-type.","commit_id":"5bb7c286ebb4a54e4d2bd5a02845644d1c651183"}],"swift/proxy/controllers/obj.py":[{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"56b3c69f0d4df905a7362fcfcd7b765f92a3afe5","unresolved":false,"context_lines":[{"line_number":508,"context_line":"            condition \u003d lambda k: is_sys_meta(\u0027object\u0027, k)"},{"line_number":509,"context_line":"            # TODO - add tests to assert that obj sysmeta is persisted"},{"line_number":510,"context_line":"            # with the \"remove_items\" removed"},{"line_number":511,"context_line":"            # remove_items(sink_req.headers, condition)"},{"line_number":512,"context_line":"            copy_header_subset(source_resp, sink_req, condition)"},{"line_number":513,"context_line":"        else:"},{"line_number":514,"context_line":"            # copy/update existing sysmeta and user meta"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_4c4ad0c6","side":"PARENT","line":511,"updated":"2016-03-08 04:51:03.000000000","message":"This remove_items needs to be called once again so sysmeta is not persisted (mentioned this change also in the test that is now asserting remove_items is not called).  dont forget to remove the TODO comment here too.","commit_id":"6731dd6da8b3723c8dd821b6b4ba40271b4ecb74"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"8e016e1eb7349881cb1b4aec577af2b7b3702e8e","unresolved":false,"context_lines":[{"line_number":508,"context_line":"            condition \u003d lambda k: is_sys_meta(\u0027object\u0027, k)"},{"line_number":509,"context_line":"            # TODO - add tests to assert that obj sysmeta is persisted"},{"line_number":510,"context_line":"            # with the \"remove_items\" removed"},{"line_number":511,"context_line":"            # remove_items(sink_req.headers, condition)"},{"line_number":512,"context_line":"            copy_header_subset(source_resp, sink_req, condition)"},{"line_number":513,"context_line":"        else:"},{"line_number":514,"context_line":"            # copy/update existing sysmeta and user meta"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_a121a4a1","side":"PARENT","line":511,"in_reply_to":"5aef4532_4c4ad0c6","updated":"2016-03-09 04:31:24.000000000","message":"on second thought, that change will require that we change what is being used by crypto in the same patch.  I guess a separate patch to switch to using this would be good.  I will ask opinions tomorrow before doing anything.","commit_id":"6731dd6da8b3723c8dd821b6b4ba40271b4ecb74"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"9d064544b36d817fa10e402cbff3ecc896c47777","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    GreenAsyncPile, GreenthreadSafeIterator, Timestamp,"},{"line_number":47,"context_line":"    normalize_delete_at_timestamp, public, get_expirer_container,"},{"line_number":48,"context_line":"    document_iters_to_http_response_body, parse_content_range,"},{"line_number":49,"context_line":"    quorum_size, reiterate, close_if_possible)"},{"line_number":50,"context_line":"from swift.common.bufferedhttp import http_connect"},{"line_number":51,"context_line":"from swift.common.constraints import check_metadata, check_object_creation, \\"},{"line_number":52,"context_line":"    check_copy_from_header, check_destination_header, \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"3afc51ec_adbe22fd","line":49,"updated":"2016-03-11 14:56:57.000000000","message":"good catch!","commit_id":"7d391626d0d2c3cc22d873441a8b5e6d36562dd9"}],"test/unit/proxy/test_sysmeta.py":[{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"56b3c69f0d4df905a7362fcfcd7b765f92a3afe5","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        self._assertInHeaders(resp, self.new_meta_headers)"},{"line_number":254,"context_line":"        self._assertNotInHeaders(resp, self.original_meta_headers_2)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def _test_sysmeta_updated_by_POST(self, expect_updated):"},{"line_number":257,"context_line":"        # check sysmeta is changed by a POST but user meta is replaced"},{"line_number":258,"context_line":"        path \u003d \u0027/v1/a/c/o\u0027"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_8c2cd84b","line":256,"updated":"2016-03-08 04:51:03.000000000","message":"We need to revert our changes that persist sysmeta - and this will then change back to \"not_updated\".  Right?","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"6a9056773fe17217bec53921bfc7d87fe42ef92e","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        self._assertInHeaders(resp, self.new_meta_headers)"},{"line_number":254,"context_line":"        self._assertNotInHeaders(resp, self.original_meta_headers_2)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def _test_sysmeta_updated_by_POST(self, expect_updated):"},{"line_number":257,"context_line":"        # check sysmeta is changed by a POST but user meta is replaced"},{"line_number":258,"context_line":"        path \u003d \u0027/v1/a/c/o\u0027"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_bf1346b7","line":256,"in_reply_to":"5aef4532_8c2cd84b","updated":"2016-03-10 15:46:10.000000000","message":"decided to make a dependent patch instead : can always squash the two later if that is desired.","commit_id":"3793af4ab6be50e3534f9e2e310ac975a797beec"}]}
