)]}'
{"swift/obj/server.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"c43e55dac6a717fe12592642f83ae91b6fd318ba","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        try:"},{"line_number":506,"context_line":"            disk_file \u003d self.get_diskfile("},{"line_number":507,"context_line":"                device, partition, account, container, obj,"},{"line_number":508,"context_line":"                policy\u003dpolicy, frag_index\u003dfrag_index)"},{"line_number":509,"context_line":"        except DiskFileDeviceUnavailable:"},{"line_number":510,"context_line":"            return HTTPInsufficientStorage(drive\u003ddevice, request\u003drequest)"},{"line_number":511,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_59e59235","line":508,"updated":"2015-06-17 21:17:35.000000000","message":"this change specifically deserves it\u0027s own test - if a put includes the x-backend-ssync-frag-index header it can lay down multiple fragment indexes","commit_id":"923cc9a99394786aa5c5d47a399973e83cfb0744"}],"swift/obj/ssync_receiver.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"7c91f7ec52c03cbdfc34bc84e807989a9d15441e","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            request_helpers.get_name_and_placement(self.request, 2, 2, False)"},{"line_number":159,"context_line":"        self.frag_index \u003d self.node_index \u003d None"},{"line_number":160,"context_line":"        if \u0027X-Backend-Ssync-Frag-Index\u0027 in self.request.headers:"},{"line_number":161,"context_line":"            if self.request.headers[\u0027X-Backend-Ssync-Frag-Index\u0027] !\u003d \u0027None\u0027:"},{"line_number":162,"context_line":"                self.frag_index \u003d int("},{"line_number":163,"context_line":"                    self.request.headers[\u0027X-Backend-Ssync-Frag-Index\u0027])"},{"line_number":164,"context_line":"        if \u0027X-Backend-Ssync-Node-Index\u0027 in self.request.headers:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_5c68bcf5","line":161,"updated":"2015-06-15 05:03:19.000000000","message":"I\u0027ve looked into the reconstructor and ssync code, and I can\u0027t see anywhere \u0027X-Backend-Ssync-Frag-Index\u0027 or \u0027X-Backend-Ssync-Node-Index\u0027 will be \u0027None\u0027 (unless I missed it). So is this suppose to be a None check? in which case can it be:\n\n  if not self.request.headers[\u0027X-Backend-Ssync-Frag-Index\u0027]:\n\nAssuming of course that \u0027\u0027 is also counted as a missing index.","commit_id":"923cc9a99394786aa5c5d47a399973e83cfb0744"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"c43e55dac6a717fe12592642f83ae91b6fd318ba","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            request_helpers.get_name_and_placement(self.request, 2, 2, False)"},{"line_number":159,"context_line":"        self.frag_index \u003d self.node_index \u003d None"},{"line_number":160,"context_line":"        if \u0027X-Backend-Ssync-Frag-Index\u0027 in self.request.headers:"},{"line_number":161,"context_line":"            if self.request.headers[\u0027X-Backend-Ssync-Frag-Index\u0027] !\u003d \u0027None\u0027:"},{"line_number":162,"context_line":"                self.frag_index \u003d int("},{"line_number":163,"context_line":"                    self.request.headers[\u0027X-Backend-Ssync-Frag-Index\u0027])"},{"line_number":164,"context_line":"        if \u0027X-Backend-Ssync-Node-Index\u0027 in self.request.headers:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_c228d0e4","line":161,"in_reply_to":"fa32b979_5c68bcf5","updated":"2015-06-17 21:17:35.000000000","message":"yeah this looks like you should be able to just spell it with self.request.headers.get - I think I had originally assumed that if it was *in* headers then it was a *string*.  peluse decided that it could also be None sometimes because... real life?  swob?  eventlet?","commit_id":"923cc9a99394786aa5c5d47a399973e83cfb0744"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"7c91f7ec52c03cbdfc34bc84e807989a9d15441e","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                self.frag_index \u003d int("},{"line_number":163,"context_line":"                    self.request.headers[\u0027X-Backend-Ssync-Frag-Index\u0027])"},{"line_number":164,"context_line":"        if \u0027X-Backend-Ssync-Node-Index\u0027 in self.request.headers:"},{"line_number":165,"context_line":"            if self.request.headers[\u0027X-Backend-Ssync-Node-Index\u0027] !\u003d \u0027None\u0027:"},{"line_number":166,"context_line":"                self.node_index \u003d int("},{"line_number":167,"context_line":"                    self.request.headers[\u0027X-Backend-Ssync-Node-Index\u0027])"},{"line_number":168,"context_line":"                if self.node_index !\u003d self.frag_index:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_1c7234e6","line":165,"updated":"2015-06-15 05:03:19.000000000","message":"Here too?","commit_id":"923cc9a99394786aa5c5d47a399973e83cfb0744"}],"swift/obj/ssync_sender.py":[{"author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"change_message_id":"51749e2c17eadeb910c008980d0d4e061ef94e72","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                self.node.get(\u0027index\u0027, self.job.get(\u0027frag_index\u0027, None)))"},{"line_number":138,"context_line":"            # a revert job to a handoff will not have a node index"},{"line_number":139,"context_line":"            self.connection.putheader(\u0027X-Backend-Ssync-Node-Index\u0027,"},{"line_number":140,"context_line":"                                      self.node.get(\u0027index\u0027))"},{"line_number":141,"context_line":"            self.connection.endheaders()"},{"line_number":142,"context_line":"        with exceptions.MessageTimeout("},{"line_number":143,"context_line":"                self.daemon.node_timeout, \u0027connect receive\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_a404f1bf","line":140,"updated":"2015-06-16 19:12:48.000000000","message":"nit: being explicit with a \u0027None\u0027 might be nice here. Makes it more clear where this value could be set","commit_id":"923cc9a99394786aa5c5d47a399973e83cfb0744"}],"test/unit/obj/test_ssync_receiver.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"c43e55dac6a717fe12592642f83ae91b6fd318ba","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                 \u0027:MISSING_CHECK: END\\r\\n\u0027"},{"line_number":225,"context_line":"                 \u0027:UPDATES: START\\r\\n:UPDATES: END\\r\\n\u0027)"},{"line_number":226,"context_line":"        self.assertRaises(HTTPException, ssync_receiver.Receiver,"},{"line_number":227,"context_line":"                          self.controller, req)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @unit.patch_policies()"},{"line_number":230,"context_line":"    def test_Receiver_with_matched_indexes(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_b9ae1ee4","line":227,"updated":"2015-06-17 21:17:35.000000000","message":"oh right, *if* node index is present it is *required* to be equal to frag index\n\n... needs a better test name or comment or assertion on the body or something","commit_id":"923cc9a99394786aa5c5d47a399973e83cfb0744"}]}
