)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"de9767b0f804a9109c717988bed02f01822aeff0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yasuaki Nagata \u003cyasuaki.nagata@intellilink.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-12-08 16:11:21 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Race between imagebackend and imagecache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ImageCacheManager deletes the base images that"},{"line_number":10,"context_line":"has not been used beyond the time setting."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a961159_72a65ec3","line":7,"updated":"2014-12-08 09:34:55.000000000","message":"Can you please prefix this with libvirt:","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"c5d40dff48ecbf0d0dd9c7beb4f730a93085c346","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yasuaki Nagata \u003cyasuaki.nagata@intellilink.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-12-08 16:11:21 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Race between imagebackend and imagecache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ImageCacheManager deletes the base images that"},{"line_number":10,"context_line":"has not been used beyond the time setting."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a961159_a962fcd5","line":7,"in_reply_to":"3a961159_72a65ec3","updated":"2014-12-09 05:46:05.000000000","message":"Thank you. I will fix comment.","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"12d9c9f9c843e6468dff02b80b6324aa402e3ce6","unresolved":false,"context_lines":[{"line_number":14,"context_line":"by this process."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch fixes problem by updating the base images\u0027s"},{"line_number":17,"context_line":"timestamp inprocess of creating instance from base images."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I7d08c9a7ff14bd12e6c37ded44447c196fca9a66"},{"line_number":20,"context_line":"Close-bug: #1256838"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a961159_58b07c8b","line":17,"updated":"2014-12-09 09:39:29.000000000","message":"in process","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0fc7a25b280e2bcfa73d3be6c80aa1ee2f997788","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yasuaki Nagata \u003cyasuaki.nagata@intellilink.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-12-16 10:52:56 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix Race between imagebackend and imagecache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ImageCacheManager deletes the base images that"},{"line_number":10,"context_line":"has not been used beyond the time setting."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_c8a1d0aa","line":7,"updated":"2014-12-18 10:46:34.000000000","message":"please prefix with libvirt:","commit_id":"bf0054e07d32d44a28717a1679deac3c23d22ec7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0fc7a25b280e2bcfa73d3be6c80aa1ee2f997788","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix Race between imagebackend and imagecache"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ImageCacheManager deletes the base images that"},{"line_number":10,"context_line":"has not been used beyond the time setting."},{"line_number":11,"context_line":"Because there are some time until process of"},{"line_number":12,"context_line":"deleting base images, there are possibilities that"},{"line_number":13,"context_line":"base image is deleted by image cache process."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_0883d804","line":10,"updated":"2014-12-18 10:46:34.000000000","message":"has not \u003d\u003e have not","commit_id":"bf0054e07d32d44a28717a1679deac3c23d22ec7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0fc7a25b280e2bcfa73d3be6c80aa1ee2f997788","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ImageCacheManager deletes the base images that"},{"line_number":10,"context_line":"has not been used beyond the time setting."},{"line_number":11,"context_line":"Because there are some time until process of"},{"line_number":12,"context_line":"deleting base images, there are possibilities that"},{"line_number":13,"context_line":"base image is deleted by image cache process."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_487c0021","line":11,"updated":"2014-12-18 10:46:34.000000000","message":"are \u003d\u003e is","commit_id":"bf0054e07d32d44a28717a1679deac3c23d22ec7"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2376245cfac4715e385b9d61c46aaffbd3fe541b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"We expect it to reduce the cache possibility of problems."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I7d08c9a7ff14bd12e6c37ded44447c196fca9a66"},{"line_number":22,"context_line":"Close-bug: #1256838"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a961159_334778a5","line":22,"updated":"2015-01-19 22:05:41.000000000","message":"FYI, this footer is supposed to be \"Closes-Bug\", not \"Close-Bug\".  No big deal, but you may have to update the bug\u0027s state manually.","commit_id":"80735b31cbd8cec2839e97c07848a447d5ff73ff"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"3dcf6ed380defd439bb560903b49938a2066450a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"We expect it to reduce the cache possibility of problems."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I7d08c9a7ff14bd12e6c37ded44447c196fca9a66"},{"line_number":22,"context_line":"Close-bug: #1256838"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a961159_de59d8fe","line":22,"in_reply_to":"3a961159_334778a5","updated":"2015-01-20 00:56:42.000000000","message":"Sorry. I had overlooked this.","commit_id":"80735b31cbd8cec2839e97c07848a447d5ff73ff"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e5ddae1bd5167f070a5dd1d9e33b8bece78b44","unresolved":false,"context_lines":[{"line_number":6932,"context_line":""},{"line_number":6933,"context_line":"    @mock.patch.object(imagebackend.Qcow2, \u0027_check_basefile\u0027)"},{"line_number":6934,"context_line":"    def test_create_images_and_backing_ephemeral_gets_created(self,"},{"line_number":6935,"context_line":"            mock_check_basefile):"},{"line_number":6936,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":6937,"context_line":"        disk_info_json \u003d jsonutils.dumps("},{"line_number":6938,"context_line":"            [{u\u0027backing_file\u0027: u\u0027fake_image_backing_file\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_328b1620","line":6935,"updated":"2015-02-13 09:58:43.000000000","message":"+1 on this","commit_id":"531c13e295c69b63a1ac0b76ad5341baf5344b09"}],"nova/tests/unit/virt/libvirt/test_imagebackend.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0fc7a25b280e2bcfa73d3be6c80aa1ee2f997788","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        self.mox.VerifyAll()"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def test_create_image_base_none(self):"},{"line_number":420,"context_line":"        fn \u003d self.prepare_mocks()"},{"line_number":421,"context_line":"        fn(max_size\u003dself.SIZE, target\u003dself.TEMPLATE_PATH)"},{"line_number":422,"context_line":"        self.mox.StubOutWithMock(os.path, \u0027exists\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_8876e83c","line":419,"updated":"2014-12-18 10:46:34.000000000","message":"please write new tests with mock","commit_id":"bf0054e07d32d44a28717a1679deac3c23d22ec7"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"375a6ef2dab804891dfff5ed0523f1351f3a55ee","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        self.mox.VerifyAll()"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def test_create_image_base_none(self):"},{"line_number":420,"context_line":"        fn \u003d self.prepare_mocks()"},{"line_number":421,"context_line":"        fn(max_size\u003dself.SIZE, target\u003dself.TEMPLATE_PATH)"},{"line_number":422,"context_line":"        self.mox.StubOutWithMock(os.path, \u0027exists\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_a10b76d4","line":419,"in_reply_to":"3a961159_8876e83c","updated":"2014-12-22 04:48:30.000000000","message":"OK. I will fix this.","commit_id":"bf0054e07d32d44a28717a1679deac3c23d22ec7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e5ddae1bd5167f070a5dd1d9e33b8bece78b44","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        imagebackend.libvirt_utils.chown(self.TEMPLATE_PATH, os.getuid())"},{"line_number":397,"context_line":"        os.access(self.TEMPLATE_PATH, os.W_OK).AndReturn(True)"},{"line_number":398,"context_line":"        os.utime(self.TEMPLATE_PATH, None)"},{"line_number":399,"context_line":"        imagebackend.libvirt_utils.create_cow_image(self.TEMPLATE_PATH,"},{"line_number":400,"context_line":"                                                    self.PATH)"},{"line_number":401,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_92cbe272","line":398,"updated":"2015-02-13 09:58:43.000000000","message":"I would rather be in favor of mocking the whole new method that you\u0027re adding and provide separate test(s) for it","commit_id":"531c13e295c69b63a1ac0b76ad5341baf5344b09"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"840534cafbf74158f21363fad8d40607c09c8bca","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        os.utime(self.TEMPLATE_PATH, None)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        self.mox.ReplayAll()"},{"line_number":404,"context_line":"        image._check_basefile(self.TEMPLATE_PATH)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def test_check_basefile_none(self):"},{"line_number":407,"context_line":"        image \u003d self.image_class(self.INSTANCE, self.NAME)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_d9b6963d","line":404,"updated":"2015-02-19 09:37:04.000000000","message":"assertNone ? ...It\u0027s probably a nit.","commit_id":"c43ad41f0dad5be207eece1ca6d9cb6bb4e2d1c0"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"840534cafbf74158f21363fad8d40607c09c8bca","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        os.path.exists(self.TEMPLATE_PATH).AndReturn(False)"},{"line_number":426,"context_line":"        os.path.exists(self.PATH).AndReturn(False)"},{"line_number":427,"context_line":"        os.path.exists(self.PATH).AndReturn(False)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        imagebackend.libvirt_utils.create_cow_image(self.TEMPLATE_PATH,"},{"line_number":430,"context_line":"                                                    self.PATH)"},{"line_number":431,"context_line":"        imagebackend.disk.extend(self.PATH, self.SIZE, use_cow\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_f95a7a1c","line":428,"updated":"2015-02-19 09:37:04.000000000","message":"not necessary","commit_id":"c43ad41f0dad5be207eece1ca6d9cb6bb4e2d1c0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"66bb25ccfc85c464e5d63ade73885bae24c26726","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        ) as (mock_exists, mock_access, mock_utime):"},{"line_number":400,"context_line":"            image._check_basefile(self.TEMPLATE_PATH)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        mock_utime.assert_called_with(self.TEMPLATE_PATH, None)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dFalse)"},{"line_number":405,"context_line":"    def test_check_basefile_none(self, mock_exists):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_b488c5c7","line":402,"updated":"2015-02-20 08:36:28.000000000","message":"nit: you should make sure you only have one call by using assert_called_once_with() but that\u0027s fine","commit_id":"4cd55058d2897c3b2e250e92798b5804f6c7e5c4"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"75d75aae91be37282b787e6b6cf28752d0e55c8e","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        ) as (mock_exists, mock_access, mock_utime):"},{"line_number":400,"context_line":"            image._check_basefile(self.TEMPLATE_PATH)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        mock_utime.assert_called_with(self.TEMPLATE_PATH, None)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dFalse)"},{"line_number":405,"context_line":"    def test_check_basefile_none(self, mock_exists):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_c4f3af08","line":402,"in_reply_to":"ba7be1f8_b488c5c7","updated":"2015-02-20 20:22:58.000000000","message":"I\u0027ll second this nit: use assert_called_once_with()","commit_id":"4cd55058d2897c3b2e250e92798b5804f6c7e5c4"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"18e900596b5698765542675796c6614075e366ed","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        ) as (mock_exists, mock_access, mock_utime):"},{"line_number":400,"context_line":"            image._check_basefile(self.TEMPLATE_PATH)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        mock_utime.assert_called_with(self.TEMPLATE_PATH, None)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dFalse)"},{"line_number":405,"context_line":"    def test_check_basefile_none(self, mock_exists):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_4445e6b1","line":402,"in_reply_to":"ba7be1f8_c4f3af08","updated":"2015-02-23 01:15:50.000000000","message":"OK. I\u0027ll fix it.\nThank you.","commit_id":"4cd55058d2897c3b2e250e92798b5804f6c7e5c4"}],"nova/virt/libvirt/imagebackend.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6b2779ba42049cf289819f76bf9d3f4c15e4d673","unresolved":false,"context_lines":[{"line_number":432,"context_line":""},{"line_number":433,"context_line":"        @utils.synchronized(filename, external\u003dTrue, lock_path\u003dself.lock_path)"},{"line_number":434,"context_line":"        def copy_qcow2_image(base, target, size):"},{"line_number":435,"context_line":"            if os.path.exists(base):"},{"line_number":436,"context_line":"                libvirt_utils.chown(base, os.getuid())"},{"line_number":437,"context_line":"                os.utime(base, None)"},{"line_number":438,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_18e7fb41","line":435,"updated":"2014-12-08 10:28:47.000000000","message":"Can we enter here with a base which does not exist? yes probably because of this race. what will happen? we probably want to handle this error correctly.","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"a3c0fcdf4251b1f35113155eb02e88b0bc698769","unresolved":false,"context_lines":[{"line_number":432,"context_line":""},{"line_number":433,"context_line":"        @utils.synchronized(filename, external\u003dTrue, lock_path\u003dself.lock_path)"},{"line_number":434,"context_line":"        def copy_qcow2_image(base, target, size):"},{"line_number":435,"context_line":"            if os.path.exists(base):"},{"line_number":436,"context_line":"                libvirt_utils.chown(base, os.getuid())"},{"line_number":437,"context_line":"                os.utime(base, None)"},{"line_number":438,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_df79b6fd","line":435,"in_reply_to":"3a961159_18e7fb41","updated":"2014-12-09 07:22:05.000000000","message":"Yes. You\u0027re right.\nThere are possibility which base images are deleted by race condition problem.\nSo, it may fail process in the \u0027if\u0027 statement.\nI think so about handling error.\n\n[for example...]\nif os.path.exisit(base):\n\tlibvirt_utils.chown(base, os.getuid())\n\tos.utime(base, None)\nelse:\n\tmsg \u003d (_(\"Base file does not exist %(base)s\") % {\u0027base\u0027: base})\n\traise exception.InvalidDiskInfo(reason\u003dmsg)","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"de9767b0f804a9109c717988bed02f01822aeff0","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        @utils.synchronized(filename, external\u003dTrue, lock_path\u003dself.lock_path)"},{"line_number":434,"context_line":"        def copy_qcow2_image(base, target, size):"},{"line_number":435,"context_line":"            if os.path.exists(base):"},{"line_number":436,"context_line":"                libvirt_utils.chown(base, os.getuid())"},{"line_number":437,"context_line":"                os.utime(base, None)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"            # TODO(pbrady): Consider copying the cow image here"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_3273f64e","line":436,"updated":"2014-12-08 09:34:55.000000000","message":"why does the owner need to be changed?","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"c5d40dff48ecbf0d0dd9c7beb4f730a93085c346","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        @utils.synchronized(filename, external\u003dTrue, lock_path\u003dself.lock_path)"},{"line_number":434,"context_line":"        def copy_qcow2_image(base, target, size):"},{"line_number":435,"context_line":"            if os.path.exists(base):"},{"line_number":436,"context_line":"                libvirt_utils.chown(base, os.getuid())"},{"line_number":437,"context_line":"                os.utime(base, None)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"            # TODO(pbrady): Consider copying the cow image here"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_899380a2","line":436,"in_reply_to":"3a961159_3273f64e","updated":"2014-12-09 05:46:05.000000000","message":"Because there is a traceback problem.\n\nhttps://bugs.launchpad.net/nova/+bug/973377\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/imagecache.py#L546","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"de9767b0f804a9109c717988bed02f01822aeff0","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        def copy_qcow2_image(base, target, size):"},{"line_number":435,"context_line":"            if os.path.exists(base):"},{"line_number":436,"context_line":"                libvirt_utils.chown(base, os.getuid())"},{"line_number":437,"context_line":"                os.utime(base, None)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"            # TODO(pbrady): Consider copying the cow image here"},{"line_number":440,"context_line":"            # with preallocation\u003dmetadata set for performance reasons."}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b29e0655","line":437,"updated":"2014-12-08 09:34:55.000000000","message":"is this to touch the image?","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"c5d40dff48ecbf0d0dd9c7beb4f730a93085c346","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        def copy_qcow2_image(base, target, size):"},{"line_number":435,"context_line":"            if os.path.exists(base):"},{"line_number":436,"context_line":"                libvirt_utils.chown(base, os.getuid())"},{"line_number":437,"context_line":"                os.utime(base, None)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"            # TODO(pbrady): Consider copying the cow image here"},{"line_number":440,"context_line":"            # with preallocation\u003dmetadata set for performance reasons."}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_09a150f8","line":437,"in_reply_to":"3a961159_b29e0655","updated":"2014-12-09 05:46:05.000000000","message":"Yes.","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"12d9c9f9c843e6468dff02b80b6324aa402e3ce6","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            if os.path.exists(base):"},{"line_number":436,"context_line":"                libvirt_utils.chown(base, os.getuid())"},{"line_number":437,"context_line":"                os.utime(base, None)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"            # TODO(pbrady): Consider copying the cow image here"},{"line_number":440,"context_line":"            # with preallocation\u003dmetadata set for performance reasons."},{"line_number":441,"context_line":"            # This would be keyed on a \u0027preallocate_images\u0027 setting."}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_733e39ba","line":438,"updated":"2014-12-09 09:39:29.000000000","message":"do we need to return here? image is already there?","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"eac2fbc15ece937e836650bde4af8ca7e3a9aff9","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            if os.path.exists(base):"},{"line_number":436,"context_line":"                libvirt_utils.chown(base, os.getuid())"},{"line_number":437,"context_line":"                os.utime(base, None)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"            # TODO(pbrady): Consider copying the cow image here"},{"line_number":440,"context_line":"            # with preallocation\u003dmetadata set for performance reasons."},{"line_number":441,"context_line":"            # This would be keyed on a \u0027preallocate_images\u0027 setting."}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_3714764d","line":438,"in_reply_to":"3a961159_733e39ba","updated":"2014-12-10 08:59:01.000000000","message":"Please watch the conversation with \u0027sahid\u0027. it not return here.","commit_id":"7cd1ee2bdaa6f44c04bf81e81f39f085471b9f33"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0fc7a25b280e2bcfa73d3be6c80aa1ee2f997788","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            msg \u003d (_(\"Base file does not exist %(base)s\") % {\u0027base\u0027: base})"},{"line_number":436,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        return True"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    def create_image(self, prepare_template, base, size, *args, **kwargs):"},{"line_number":441,"context_line":"        filename \u003d os.path.split(base)[-1]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_28b414d0","line":438,"updated":"2014-12-18 10:46:34.000000000","message":"why do we need the return True?","commit_id":"bf0054e07d32d44a28717a1679deac3c23d22ec7"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"375a6ef2dab804891dfff5ed0523f1351f3a55ee","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            msg \u003d (_(\"Base file does not exist %(base)s\") % {\u0027base\u0027: base})"},{"line_number":436,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        return True"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    def create_image(self, prepare_template, base, size, *args, **kwargs):"},{"line_number":441,"context_line":"        filename \u003d os.path.split(base)[-1]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_01fa8abc","line":438,"in_reply_to":"3a961159_28b414d0","updated":"2014-12-22 04:48:30.000000000","message":"I added the \u0027true\u0027 because it was thought to be required for the test.\nBut this is not related to the processing, so I think trying to delete it is better.","commit_id":"bf0054e07d32d44a28717a1679deac3c23d22ec7"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"33efb9449323dd76ff2721405ff27886f36622ca","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            libvirt_utils.chown(base, os.getuid())"},{"line_number":433,"context_line":"            os.utime(base, None)"},{"line_number":434,"context_line":"        else:"},{"line_number":435,"context_line":"            msg \u003d (_(\"Base file does not exist %(base)s\") % {\u0027base\u0027: base})"},{"line_number":436,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    def create_image(self, prepare_template, base, size, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_d25a0bf1","line":435,"updated":"2014-12-22 10:18:18.000000000","message":"Well you should not use a dict to format the string we there are only one arg.","commit_id":"d94534820bd5994a6d6dfd244f8b96b29d477a07"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"507178ae0a64eef2bffab77a94e54322215f7a34","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            libvirt_utils.chown(base, os.getuid())"},{"line_number":433,"context_line":"            os.utime(base, None)"},{"line_number":434,"context_line":"        else:"},{"line_number":435,"context_line":"            msg \u003d (_(\"Base file does not exist %(base)s\") % {\u0027base\u0027: base})"},{"line_number":436,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    def create_image(self, prepare_template, base, size, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_2ba780be","line":435,"in_reply_to":"3a961159_adda8448","updated":"2015-01-06 10:55:20.000000000","message":"Did not see your comment. That is fine and not related to you change, feel free to update it in an other changeset.","commit_id":"d94534820bd5994a6d6dfd244f8b96b29d477a07"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"54a8d890d6dda18a3fc75e8059487ee7f7aa0457","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            libvirt_utils.chown(base, os.getuid())"},{"line_number":433,"context_line":"            os.utime(base, None)"},{"line_number":434,"context_line":"        else:"},{"line_number":435,"context_line":"            msg \u003d (_(\"Base file does not exist %(base)s\") % {\u0027base\u0027: base})"},{"line_number":436,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    def create_image(self, prepare_template, base, size, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_adda8448","line":435,"in_reply_to":"3a961159_d25a0bf1","updated":"2014-12-22 10:59:09.000000000","message":"Oh, I see. I\u0027ll fix it as following.\n_(\"Base file does not exist %s\" % base)\n\nThe similar code occurs at https://github.com/openstack/nova/blob/master/nova/virt/images.py#L52\nShould I fix it together?","commit_id":"d94534820bd5994a6d6dfd244f8b96b29d477a07"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"89f9f6baf297cccef34fdb9b850e7d9f405a1848","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        if os.path.exists(base):"},{"line_number":465,"context_line":"            libvirt_utils.chown(base, os.getuid())"},{"line_number":466,"context_line":"            if os.access(base, os.W_OK):"},{"line_number":467,"context_line":"                os.utime(base, None)"},{"line_number":468,"context_line":"        else:"},{"line_number":469,"context_line":"            msg \u003d _(\"Base file does not exist %s\") % base"},{"line_number":470,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_3778108f","line":467,"updated":"2015-02-23 15:09:53.000000000","message":"This doesn\u0027t close the race, right? Each of the lines above can cause us to get swapped out and we could be racing with the cache manager thread. I think you need to check os.path.exists() again after you do utime, right?","commit_id":"a2ba5e193b7711601934b8d9d9d615e1f3fc0817"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"607b00c524c049fd6cf27bf8455983ebc657f456","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        self.resolve_driver_format()"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def _check_basefile(self, base):"},{"line_number":464,"context_line":"        msg \u003d _(\"Base file does not exist %s\") % base"},{"line_number":465,"context_line":"        if os.path.exists(base):"},{"line_number":466,"context_line":"            libvirt_utils.chown(base, os.getuid())"},{"line_number":467,"context_line":"            if os.access(base, os.W_OK):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_fcc68315","line":464,"updated":"2015-02-27 17:23:31.000000000","message":"you should create this message only in the conditional (L470)","commit_id":"50e4d4e7ea42ae8495d18ffc2cd3b005055d7b98"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"1524ca9361cbabeb9e3da7872c48bec94c8c0af4","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        self.resolve_driver_format()"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def _check_basefile(self, base):"},{"line_number":464,"context_line":"        msg \u003d _(\"Base file does not exist %s\") % base"},{"line_number":465,"context_line":"        if os.path.exists(base):"},{"line_number":466,"context_line":"            libvirt_utils.chown(base, os.getuid())"},{"line_number":467,"context_line":"            if os.access(base, os.W_OK):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_6cd39e5f","line":464,"in_reply_to":"ba7be1f8_fcc68315","updated":"2015-03-02 02:46:38.000000000","message":"OK. I will consider the message.","commit_id":"50e4d4e7ea42ae8495d18ffc2cd3b005055d7b98"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"5a48b24ae5516cdd72bfd3369f5eaea3e4bc674e","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            if os.access(base, os.W_OK):"},{"line_number":468,"context_line":"                os.utime(base, None)"},{"line_number":469,"context_line":"                if not os.path.exists(base):"},{"line_number":470,"context_line":"                    raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":471,"context_line":"        else:"},{"line_number":472,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":473,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_2ba10194","line":470,"updated":"2015-02-26 09:42:13.000000000","message":"Hi Dan.\nIs this matching your thought?","commit_id":"50e4d4e7ea42ae8495d18ffc2cd3b005055d7b98"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"607b00c524c049fd6cf27bf8455983ebc657f456","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            if os.access(base, os.W_OK):"},{"line_number":468,"context_line":"                os.utime(base, None)"},{"line_number":469,"context_line":"                if not os.path.exists(base):"},{"line_number":470,"context_line":"                    raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":471,"context_line":"        else:"},{"line_number":472,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":473,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_bf9ebd61","line":470,"in_reply_to":"ba7be1f8_2ba10194","updated":"2015-02-27 17:23:31.000000000","message":"That sounds correct, but I would then inverse the logic :\n\n        if not os.path.exists(base):\n            raise exception.InvalidDiskInfo(reason\u003dmsg)\n        libvirt_utils.chown(base, os.getuid())\n        if os.access(base, os.W_OK):\n            os.utime(base, None)\n        if not os.path.exists(base):\n            raise exception.InvalidDiskInfo(reason\u003dmsg)\n\nthat way, it sounds much more clear.","commit_id":"50e4d4e7ea42ae8495d18ffc2cd3b005055d7b98"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"1524ca9361cbabeb9e3da7872c48bec94c8c0af4","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            if os.access(base, os.W_OK):"},{"line_number":468,"context_line":"                os.utime(base, None)"},{"line_number":469,"context_line":"                if not os.path.exists(base):"},{"line_number":470,"context_line":"                    raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":471,"context_line":"        else:"},{"line_number":472,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":473,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_ac0cb63c","line":470,"in_reply_to":"ba7be1f8_bf9ebd61","updated":"2015-03-02 02:46:38.000000000","message":"I think your logic is easy to understand.\nThank you.","commit_id":"50e4d4e7ea42ae8495d18ffc2cd3b005055d7b98"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5fc5a0581dca44618b14e0825bb5c04de377a965","unresolved":false,"context_lines":[{"line_number":465,"context_line":"            msg \u003d _(\"Base file %s does not exist.\") % base"},{"line_number":466,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":467,"context_line":"        libvirt_utils.chown(base, os.getuid())"},{"line_number":468,"context_line":"        if os.access(base, os.W_OK):"},{"line_number":469,"context_line":"            os.utime(base, None)"},{"line_number":470,"context_line":"        if not os.path.exists(base):"},{"line_number":471,"context_line":"            msg \u003d _(\"Base file does not exist after updating \""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_d4ff5da9","line":468,"updated":"2015-03-03 15:05:40.000000000","message":"what if the os.access is False? that means that we are unable to access the file. Could that be an indication that it has been deleted?","commit_id":"4963586c942dd42e5889734715d70a382df328d6"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"b09883d7a25d239c98e9e4ea0e563fe04fd60348","unresolved":false,"context_lines":[{"line_number":465,"context_line":"            msg \u003d _(\"Base file %s does not exist.\") % base"},{"line_number":466,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":467,"context_line":"        libvirt_utils.chown(base, os.getuid())"},{"line_number":468,"context_line":"        if os.access(base, os.W_OK):"},{"line_number":469,"context_line":"            os.utime(base, None)"},{"line_number":470,"context_line":"        if not os.path.exists(base):"},{"line_number":471,"context_line":"            msg \u003d _(\"Base file does not exist after updating \""}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_a781cfc4","line":468,"in_reply_to":"ba7be1f8_d4ff5da9","updated":"2015-03-09 04:47:11.000000000","message":"Yes, I think so now.\nBut, yet I don\u0027t understand clearly about failing the jenkins check and gate in previous patch(patch set6).","commit_id":"4963586c942dd42e5889734715d70a382df328d6"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5fc5a0581dca44618b14e0825bb5c04de377a965","unresolved":false,"context_lines":[{"line_number":466,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":467,"context_line":"        libvirt_utils.chown(base, os.getuid())"},{"line_number":468,"context_line":"        if os.access(base, os.W_OK):"},{"line_number":469,"context_line":"            os.utime(base, None)"},{"line_number":470,"context_line":"        if not os.path.exists(base):"},{"line_number":471,"context_line":"            msg \u003d _(\"Base file does not exist after updating \""},{"line_number":472,"context_line":"                    \"the date time of the file %s.\") % base"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_74d311d5","line":469,"updated":"2015-03-03 15:05:40.000000000","message":"I still have yet to understand how touching the file can indicate that it has been deleted. Can you please elaborate.\nIn addition to this the touch should be locked from the aging (please see 478 - unless there is another bug here","commit_id":"4963586c942dd42e5889734715d70a382df328d6"},{"author":{"_account_id":12909,"name":"Mark Wu","email":"wudx05@gmail.com","username":"markw"},"change_message_id":"f6824eb2fae66520a87b55259c10399e05ae83ba","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        if not os.path.exists(base):"},{"line_number":471,"context_line":"            msg \u003d _(\"Base file does not exist after updating \""},{"line_number":472,"context_line":"                    \"the date time of the file %s.\") % base"},{"line_number":473,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def create_image(self, prepare_template, base, size, *args, **kwargs):"},{"line_number":476,"context_line":"        filename \u003d self._get_lock_name(base)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_aff101cf","line":473,"updated":"2015-03-02 09:18:10.000000000","message":"IIUC, it will cause a HTTPBadRequest to client side, but the request is not bad. IMHO,  it should tell the client hit a race and try again.  Or, it should trigger a re-schedule or fetching base image because the request should be performed.","commit_id":"4963586c942dd42e5889734715d70a382df328d6"},{"author":{"_account_id":12909,"name":"Mark Wu","email":"wudx05@gmail.com","username":"markw"},"change_message_id":"37824c06d89afd9888b0bb63d119c09bd4ad891e","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        if not os.path.exists(base):"},{"line_number":471,"context_line":"            msg \u003d _(\"Base file does not exist after updating \""},{"line_number":472,"context_line":"                    \"the date time of the file %s.\") % base"},{"line_number":473,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def create_image(self, prepare_template, base, size, *args, **kwargs):"},{"line_number":476,"context_line":"        filename \u003d self._get_lock_name(base)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_75008fab","line":473,"in_reply_to":"ba7be1f8_73db5c1b","updated":"2015-03-03 00:00:12.000000000","message":"But the problem is that this is a valid request.  From the POV of cloud admin,  the message is confusing and he can\u0027t get what really happens and how to resolve the problem. So I think it\u0027s not friendly to ops.","commit_id":"4963586c942dd42e5889734715d70a382df328d6"},{"author":{"_account_id":14021,"name":"Yasuaki Nagata","email":"yasuaki.nagata@intellilink.co.jp","username":"yasuaki_nagata"},"change_message_id":"b09883d7a25d239c98e9e4ea0e563fe04fd60348","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        if not os.path.exists(base):"},{"line_number":471,"context_line":"            msg \u003d _(\"Base file does not exist after updating \""},{"line_number":472,"context_line":"                    \"the date time of the file %s.\") % base"},{"line_number":473,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def create_image(self, prepare_template, base, size, *args, **kwargs):"},{"line_number":476,"context_line":"        filename \u003d self._get_lock_name(base)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_4772d311","line":473,"in_reply_to":"ba7be1f8_75008fab","updated":"2015-03-09 04:47:11.000000000","message":"Surely, in the case of code 400, there are sense of incongruity.\n\nSorry. Would you tell me your opinions about to use the DiskNotFound(NotFound)(code404).\nAnd about the error message, I am thinking something like this \"Failed to create instance(Reason\u003dNot found the basefile) Please try again.\", how do you think?","commit_id":"4963586c942dd42e5889734715d70a382df328d6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9886cbb56376b8d250b7d7be6ac127b9f8f05702","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        if not os.path.exists(base):"},{"line_number":471,"context_line":"            msg \u003d _(\"Base file does not exist after updating \""},{"line_number":472,"context_line":"                    \"the date time of the file %s.\") % base"},{"line_number":473,"context_line":"            raise exception.InvalidDiskInfo(reason\u003dmsg)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def create_image(self, prepare_template, base, size, *args, **kwargs):"},{"line_number":476,"context_line":"        filename \u003d self._get_lock_name(base)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_73db5c1b","line":473,"in_reply_to":"ba7be1f8_aff101cf","updated":"2015-03-02 16:56:57.000000000","message":"I don\u0027t think there is a problem, that\u0027s a natural behaviour to raise Exceptions when we want to abort a request...","commit_id":"4963586c942dd42e5889734715d70a382df328d6"}]}
