)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c30cef43c45343632bc566b0da03dd68670388e9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Cleanup EC backend logging on disconnect"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"All ResummingGetters used on the backend or making logging noise when"},{"line_number":10,"context_line":"a client disconnects."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This attempt has the down-side of mutating the request inplace which"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba0121b8_acd47b47","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":43},"updated":"2016-03-28 17:08:49.000000000","message":"\"are\"?","commit_id":"e73da866c3ad5bf0ea3cd27d2641a62b0b478df4"}],"swift/proxy/controllers/obj.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c30cef43c45343632bc566b0da03dd68670388e9","unresolved":false,"context_lines":[{"line_number":1251,"context_line":"                    for chunk in self.stashed_iter:"},{"line_number":1252,"context_line":"                        yield chunk"},{"line_number":1253,"context_line":"                except GeneratorExit:"},{"line_number":1254,"context_line":"                    self.logger.warning(_(\u0027Client disconnected on read\u0027))"},{"line_number":1255,"context_line":"            return app_iter()"},{"line_number":1256,"context_line":"        else:"},{"line_number":1257,"context_line":"            raise ValueError(\"Failed to call kickoff() before __iter__()\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_8c909797","line":1254,"updated":"2016-03-28 17:08:49.000000000","message":"No swift.non_client_disconnect check? I think this may get triggered during 304/412 responses to SLOs/DLOs.\n\nAlso, any reason not to call self.stashed_iter.close() in here? Maybe in a finally? Your https://gist.github.com/clayg/121c561bf14d3930d61a was interesting; I think Python was handling the closing of f_iter for you. The only way I could get the log lines to come out in the order *I* expected was to explicitly close f_iter (in either the `except GeneratorExit` or `finally` block).\n\nAs far as Sam\u0027s thought about re-raising the GeneratorExit: I think our only obligation is \"don\u0027t call yield again.\" We can\u0027t worry about enclosing generators; that thinking is inverted. Working from your gist, it\u0027d be like getting your app_iter, then reaching down into its f_iter, closing it directly, and somehow expecting app_iter to get cleaned up. Re-raising doesn\u0027t help; the only way to clean up app_iter is to actually close it.","commit_id":"e73da866c3ad5bf0ea3cd27d2641a62b0b478df4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c30cef43c45343632bc566b0da03dd68670388e9","unresolved":false,"context_lines":[{"line_number":1950,"context_line":"        # these are backend connections, not part of the outer iter returned"},{"line_number":1951,"context_line":"        # to eventlet wsgi - if they are ever closed - it\u0027s because we closed"},{"line_number":1952,"context_line":"        # them in ECAppIter"},{"line_number":1953,"context_line":"        req.environ[\u0027swift.non_client_disconnect\u0027] \u003d True"},{"line_number":1954,"context_line":"        getter \u003d ResumingGetter(self.app, req, \u0027Object\u0027, node_iter,"},{"line_number":1955,"context_line":"                                partition, req.swift_entity_path,"},{"line_number":1956,"context_line":"                                backend_headers,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_07b0e0dc","line":1953,"updated":"2016-03-28 17:08:49.000000000","message":"Keeping this environ change contained is going to be Hard, from what I recall while messing around in [1]. I think there\u0027s still work I need to do there... I should revisit that.\n\n[1] https://review.openstack.org/#/c/244394/4/swift/common/swob.py","commit_id":"e73da866c3ad5bf0ea3cd27d2641a62b0b478df4"}]}
