)]}'
{"glance_store/_drivers/swift/store.py":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"4e810c768ab7f8eb9ce5429cef8ed107031f99ac","unresolved":false,"context_lines":[{"line_number":556,"context_line":"                                connection \u003d self.reauthenticate("},{"line_number":557,"context_line":"                                    location\u003dlocation,"},{"line_number":558,"context_line":"                                    context\u003dcontext)"},{"line_number":559,"context_line":"                                continue"},{"line_number":560,"context_line":"                            except NotImplementedError:"},{"line_number":561,"context_line":"                                # No reason to delete stale chunks in that"},{"line_number":562,"context_line":"                                # case, because we simply can\u0027t get access"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_86966a4a","line":559,"updated":"2015-07-08 15:38:24.000000000","message":"Even if we manage to reauthenticate we skip the chunk that failed here.","commit_id":"b8083b8f4250123f589ac56d241d71cf1d7b2426"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"65aa5ab0776f5243962e2aec1c7624c5e8e65ac0","unresolved":false,"context_lines":[{"line_number":558,"context_line":"                                    context\u003dcontext)"},{"line_number":559,"context_line":"                                continue"},{"line_number":560,"context_line":"                            except NotImplementedError:"},{"line_number":561,"context_line":"                                # No reason to delete stale chunks in that"},{"line_number":562,"context_line":"                                # case, because we simply can\u0027t get access"},{"line_number":563,"context_line":"                                # there"},{"line_number":564,"context_line":"                                raise e"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_8678aac5","line":561,"updated":"2015-07-08 17:09:40.000000000","message":"How about a warn level log here? This essentially results in dark data in the backend store.","commit_id":"b8083b8f4250123f589ac56d241d71cf1d7b2426"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"68a7cf77d16c279077c6705aa254730b766b5bcb","unresolved":false,"context_lines":[{"line_number":558,"context_line":"                                    context\u003dcontext)"},{"line_number":559,"context_line":"                                continue"},{"line_number":560,"context_line":"                            except NotImplementedError:"},{"line_number":561,"context_line":"                                # No reason to delete stale chunks in that"},{"line_number":562,"context_line":"                                # case, because we simply can\u0027t get access"},{"line_number":563,"context_line":"                                # there"},{"line_number":564,"context_line":"                                raise e"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_87697a8e","line":561,"in_reply_to":"ba3cc151_8678aac5","updated":"2015-07-08 20:01:32.000000000","message":"+1","commit_id":"b8083b8f4250123f589ac56d241d71cf1d7b2426"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"115b452eeadcfe76a9c8bf2b815bd0e453538646","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                        connection.delete_object(location.container,"},{"line_number":592,"context_line":"                                                 chunk_name)"},{"line_number":593,"context_line":"                        break"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"                    chunk_id +\u003d 1"},{"line_number":596,"context_line":"                    combined_chunks_size +\u003d bytes_read"},{"line_number":597,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_e63c16e3","line":594,"updated":"2015-07-08 15:45:23.000000000","message":"Erno, chunk id is changed here, after the \u0027continue\u0027. so I think we upload exactly the same chunk.","commit_id":"b8083b8f4250123f589ac56d241d71cf1d7b2426"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"68a7cf77d16c279077c6705aa254730b766b5bcb","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                        connection.delete_object(location.container,"},{"line_number":592,"context_line":"                                                 chunk_name)"},{"line_number":593,"context_line":"                        break"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"                    chunk_id +\u003d 1"},{"line_number":596,"context_line":"                    combined_chunks_size +\u003d bytes_read"},{"line_number":597,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_07fb2a7c","line":594,"in_reply_to":"ba3cc151_67031d43","updated":"2015-07-08 20:01:32.000000000","message":"Erno\u0027s correct. There\u0027s no attempt to re-upload the chunks that swiftclient uploaded before it raised the error.\n\nIn case you\u0027re wondering, httplib (and therefore, urllib3 and requests) do not provide a way to begin reading the response until the request is finished. So the data will be lost.","commit_id":"b8083b8f4250123f589ac56d241d71cf1d7b2426"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"65aa5ab0776f5243962e2aec1c7624c5e8e65ac0","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                        connection.delete_object(location.container,"},{"line_number":592,"context_line":"                                                 chunk_name)"},{"line_number":593,"context_line":"                        break"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"                    chunk_id +\u003d 1"},{"line_number":596,"context_line":"                    combined_chunks_size +\u003d bytes_read"},{"line_number":597,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_0c55981c","line":594,"in_reply_to":"ba3cc151_e63c16e3","updated":"2015-07-08 17:09:40.000000000","message":"It\u0027s not so much just the chunk id that erno is talking about. We may well skip a chunk id and not have any impact on the image at all. \n\nIIUC, Erno is talking about losing content from the image stream if the client happens to read any data at all before a 401 is raised.","commit_id":"b8083b8f4250123f589ac56d241d71cf1d7b2426"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"7c03b42df2110a11b57b38c40f2f31e2f2687724","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                        connection.delete_object(location.container,"},{"line_number":592,"context_line":"                                                 chunk_name)"},{"line_number":593,"context_line":"                        break"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"                    chunk_id +\u003d 1"},{"line_number":596,"context_line":"                    combined_chunks_size +\u003d bytes_read"},{"line_number":597,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_67031d43","line":594,"in_reply_to":"ba3cc151_e63c16e3","updated":"2015-07-08 17:23:28.000000000","message":"The seek on the fd has still moved and we loose the data read in between.","commit_id":"b8083b8f4250123f589ac56d241d71cf1d7b2426"},{"author":{"_account_id":16658,"name":"Darja Shakhray","email":"damalyavkina@gmail.com","username":"dshakhray"},"change_message_id":"f7cc71a29f546572d2ad109743e0773473d5de48","unresolved":false,"context_lines":[{"line_number":545,"context_line":""},{"line_number":546,"context_line":"                    chunk_name \u003d \"%s-%05d\" % (location.obj, chunk_id)"},{"line_number":547,"context_line":"                    reader \u003d ChunkReader(image_file, checksum, chunk_size)"},{"line_number":548,"context_line":"                    if self.auth_plugin.will_expire_soon():"},{"line_number":549,"context_line":"                        connection \u003d self.get_connection(location,"},{"line_number":550,"context_line":"                                                         context\u003dcontext)"},{"line_number":551,"context_line":"                    try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_8e9880c1","line":548,"updated":"2015-07-09 15:18:18.000000000","message":"What if  self.auth_plugin is None?","commit_id":"667e6c1e396ce9e812f1873d8f44cc46785361d1"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ea041358447e9f34c229af08881047d239ec0bb8","unresolved":false,"context_lines":[{"line_number":545,"context_line":""},{"line_number":546,"context_line":"                    chunk_name \u003d \"%s-%05d\" % (location.obj, chunk_id)"},{"line_number":547,"context_line":"                    reader \u003d ChunkReader(image_file, checksum, chunk_size)"},{"line_number":548,"context_line":"                    if self.auth_plugin.will_expire_soon():"},{"line_number":549,"context_line":"                        connection \u003d self.get_connection(location,"},{"line_number":550,"context_line":"                                                         context\u003dcontext)"},{"line_number":551,"context_line":"                    try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_2e3cd491","line":548,"in_reply_to":"ba3cc151_8e9880c1","updated":"2015-07-09 15:19:56.000000000","message":"Done","commit_id":"667e6c1e396ce9e812f1873d8f44cc46785361d1"}],"glance_store/common/auth.py":[{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"6faf523cf59cd0f70bd12692d37e5f051f1e1c25","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def will_expire_soon(self, stale_duration\u003dNone):"},{"line_number":246,"context_line":"        \"\"\"Determines if expiration is about to occur.\"\"\""},{"line_number":247,"context_line":"        if self.token_expires is None:"},{"line_number":248,"context_line":"            raise exceptions.NotAuthenticated()"},{"line_number":249,"context_line":"        stale_duration \u003d (STALE_TOKEN_DURATION if stale_duration is None"},{"line_number":250,"context_line":"                          else stale_duration)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_a1ceb557","line":247,"updated":"2015-07-09 15:41:52.000000000","message":"I think there should be if self.auth_token is None. It makes more sense.","commit_id":"1cb92a9ba50ce2bfb6fa3c86ab99da065cf08ea5"}],"glance_store/tests/unit/test_swift_store.py":[{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ba0bcba2ed61f2f6d97cee46d547595e5f76f683","unresolved":false,"context_lines":[{"line_number":788,"context_line":""},{"line_number":789,"context_line":"            def patched_put_object(container, obj, contents,"},{"line_number":790,"context_line":"                                   content_length\u003dNone, headers\u003dNone):"},{"line_number":791,"context_line":"                # Let\u0027s assume that the exception is raise on the second"},{"line_number":792,"context_line":"                # iteration."},{"line_number":793,"context_line":"                if SWIFT_PUT_OBJECT_CALLS \u003d\u003d 2 and SWIFT_REAUTH \u003d\u003d 0:"},{"line_number":794,"context_line":"                    raise swiftclient.ClientException(msg\u003d\u0027Unauthorized.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_151842d2","line":791,"updated":"2015-07-08 14:59:50.000000000","message":"raised","commit_id":"b8083b8f4250123f589ac56d241d71cf1d7b2426"}]}
