)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"91a2cf31b6118dc77926d6fd45faa6028e2cd086","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Seeing as this change is sending back a 507, it also catches and logs"},{"line_number":18,"context_line":"the out of disk space errors (ENOSPC and EDQUOT)."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This patch also adds the six module to swift\u0027s requirements.txt as it"},{"line_number":21,"context_line":"is being used when logging the xattr exceptions. Looking at openstack\u0027s"},{"line_number":22,"context_line":"requirements project they pin six to \u003e\u003d1.7.0, so I have followed suit."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1abeadc6_22dce272","line":20,"updated":"2014-08-21 15:39:39.000000000","message":"Looks like this paragraph can be removed.","commit_id":"568d1cd34504828445153959d8f89d90bfff9426"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"f0876dc2c1804fa3e60a332ea135179cfeb23915","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Seeing as this change is sending back a 507, it also catches and logs"},{"line_number":18,"context_line":"the out of disk space errors (ENOSPC and EDQUOT)."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This patch also adds the six module to swift\u0027s requirements.txt as it"},{"line_number":21,"context_line":"is being used when logging the xattr exceptions. Looking at openstack\u0027s"},{"line_number":22,"context_line":"requirements project they pin six to \u003e\u003d1.7.0, so I have followed suit."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"9aa7fdbe_b33e25b6","line":20,"in_reply_to":"1abeadc6_22dce272","updated":"2014-10-28 21:35:38.000000000","message":"Ahh yeah, good spot, thanks!.. it used to use the six module and I obviously failed at re-reading the commit message :)","commit_id":"568d1cd34504828445153959d8f89d90bfff9426"}],"swift/obj/diskfile.py":[{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"4b2a0b2434d7319ac6e05c4cc4b3ca488d21f8d8","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                                    (key or \u0027\u0027)))"},{"line_number":88,"context_line":"            key +\u003d 1"},{"line_number":89,"context_line":"    except IOError as e:"},{"line_number":90,"context_line":"        logging.exception(_(\"Filesystem does not support xattr\"))"},{"line_number":91,"context_line":"        raise DiskFileXattrNotSupported(e)"},{"line_number":92,"context_line":"    return pickle.loads(metadata)"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_21a7530c","line":90,"updated":"2014-06-13 09:42:40.000000000","message":"Is it a good idea to raise this exception only when errno is set to ENOTSUP ? There are other cases where (get/set)xattr can raise IOError. For example - If the named attribute does not exist, ENOATTR is raised.","commit_id":"3fe091fa3927b07475d61c69b5f8a6f16274e37e"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"330a5f6f4257a5615dfa56ef8b696b59667d317d","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                                    (key or \u0027\u0027)))"},{"line_number":88,"context_line":"            key +\u003d 1"},{"line_number":89,"context_line":"    except IOError as e:"},{"line_number":90,"context_line":"        logging.exception(_(\"Filesystem does not support xattr\"))"},{"line_number":91,"context_line":"        raise DiskFileXattrNotSupported(e)"},{"line_number":92,"context_line":"    return pickle.loads(metadata)"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_a1233a05","line":90,"in_reply_to":"1ae5cdf2_21a7530c","updated":"2014-06-15 22:34:07.000000000","message":"Good call. If the xattr keys doesn\u0027t exist, it still raises an IOError, but I can check content of the strerror in the exception.\n\nI\u0027ll make a new patchset now :)","commit_id":"3fe091fa3927b07475d61c69b5f8a6f16274e37e"},{"author":{"_account_id":7680,"name":"Alex Gaynor","email":"alex.gaynor@gmail.com","username":"alex_gaynor"},"change_message_id":"9defa3fb507ecf5f630b804425e8635569a495fc","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                                    (key or \u0027\u0027)))"},{"line_number":88,"context_line":"            key +\u003d 1"},{"line_number":89,"context_line":"    except IOError as e:"},{"line_number":90,"context_line":"        if \u0027Operation not supported\u0027 in e:"},{"line_number":91,"context_line":"            logging.exception(_(\"Filesystem does not support xattr\"))"},{"line_number":92,"context_line":"            raise DiskFileXattrNotSupported(e)"},{"line_number":93,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_24e73848","line":90,"updated":"2014-06-16 00:52:37.000000000","message":"It should be better to check e.errno against errno.ENOTSUP, rather than looking for the string.","commit_id":"39d48a5cd865c18ff19f08e03d896fce13854de3"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"c6972b7f44e67005debb2960ee409b1a9775ed1b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                                    (key or \u0027\u0027)))"},{"line_number":88,"context_line":"            key +\u003d 1"},{"line_number":89,"context_line":"    except IOError as e:"},{"line_number":90,"context_line":"        if \u0027Operation not supported\u0027 in e:"},{"line_number":91,"context_line":"            logging.exception(_(\"Filesystem does not support xattr\"))"},{"line_number":92,"context_line":"            raise DiskFileXattrNotSupported(e)"},{"line_number":93,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_04e23c2f","line":90,"in_reply_to":"1ae5cdf2_24e73848","updated":"2014-06-16 00:57:42.000000000","message":"Right, thanks :)\n\nNew patchset on its way (after some coffee)!","commit_id":"39d48a5cd865c18ff19f08e03d896fce13854de3"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"c6a57ce0bb802870fefa4a61f9f4cefba02ccda0","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                                    (key or \u0027\u0027)))"},{"line_number":88,"context_line":"            key +\u003d 1"},{"line_number":89,"context_line":"    except IOError as e:"},{"line_number":90,"context_line":"        if e.errno \u003d\u003d errno.ENOTSUP:"},{"line_number":91,"context_line":"            logging.exception(_(\"Filesystem does not support xattr\"))"},{"line_number":92,"context_line":"            raise DiskFileXattrNotSupported(e)"},{"line_number":93,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_9038423f","line":90,"updated":"2014-06-16 05:52:40.000000000","message":"I looked at the failed test logs. ENOTSUP supposedly is not defined in errno module. Strange. There\u0027s a similar one though : https://docs.python.org/2/library/errno.html#errno.EOPNOTSUPP\n\nI would check if things work with this:\n\n    try:\n        xattr.getxattr(....)\n    except IOError as e:\n        for err in \u0027ENOTSUP\u0027, \u0027EOPNOTSUPP\u0027:\n            if hasattr (errno, err) and e.errno \u003d\u003d getattr(errno, err):\n                \u003clog xattr not supported\u003e\n                \u003craise\u003e\n        if e.errno in (errno.ENOSPC, errno.EDQUOT):\n            \u003clog no space exists\u003e\n            \u003craise\u003e\n        pass","commit_id":"20fe05b4f0f0502a432ef78b531383f73f2e8512"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"a0f7fc80d4424c651c6358aff07296d03b45622a","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                                    (key or \u0027\u0027)))"},{"line_number":88,"context_line":"            key +\u003d 1"},{"line_number":89,"context_line":"    except IOError as e:"},{"line_number":90,"context_line":"        if e.errno \u003d\u003d errno.ENOTSUP:"},{"line_number":91,"context_line":"            logging.exception(_(\"Filesystem does not support xattr\"))"},{"line_number":92,"context_line":"            raise DiskFileXattrNotSupported(e)"},{"line_number":93,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_f4d6b0f0","line":90,"in_reply_to":"1ae5cdf2_9038423f","updated":"2014-06-16 23:42:51.000000000","message":"Yeah, it is really strange! \nThanks Prashanth,  I\u0027ll add the code and submit another patch set, lets see if it fixes it. If not, I know the error number, we may have to fail back to that if the EOPNOTSUPP doesn\u0027t exist either!","commit_id":"20fe05b4f0f0502a432ef78b531383f73f2e8512"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"38275d21bb504bf0634930e2f84ff67e0d4ef6c2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            if hasattr(errno, err) and e.errno \u003d\u003d getattr(errno, err):"},{"line_number":92,"context_line":"                logging.exception(_(\"Filesystem does not support xattr\"))"},{"line_number":93,"context_line":"                raise DiskFileXattrNotSupported(e)"},{"line_number":94,"context_line":"        if e.errno in (errno.ENOSPC, errno.EDQUOT):"},{"line_number":95,"context_line":"            logging.exception(_(\"No space left on device\"))"},{"line_number":96,"context_line":"            raise DiskFileNoSpace()"},{"line_number":97,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_3a6c7a08","line":94,"updated":"2014-06-17 04:57:34.000000000","message":"AFAICT, getxattr sys call wouldn\u0027t raise ENOSPC or EDQUOT. I guess, it is safe to remove this code in read_metadata BUT is required for write_metadata.","commit_id":"538a0d04cc97a534c6c40b4c23f83e03e1fb2aee"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"1d91957615e892d8f0279f432f03deb1fea337d2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            if hasattr(errno, err) and e.errno \u003d\u003d getattr(errno, err):"},{"line_number":92,"context_line":"                logging.exception(_(\"Filesystem does not support xattr\"))"},{"line_number":93,"context_line":"                raise DiskFileXattrNotSupported(e)"},{"line_number":94,"context_line":"        if e.errno in (errno.ENOSPC, errno.EDQUOT):"},{"line_number":95,"context_line":"            logging.exception(_(\"No space left on device\"))"},{"line_number":96,"context_line":"            raise DiskFileNoSpace()"},{"line_number":97,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_bd75e4fb","line":94,"in_reply_to":"1ae5cdf2_3a6c7a08","updated":"2014-06-17 05:43:14.000000000","message":"Cool, will do.","commit_id":"538a0d04cc97a534c6c40b4c23f83e03e1fb2aee"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"2bf88d47f5f843aeb31dfc019d953155f9074c53","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    except IOError as e:"},{"line_number":95,"context_line":"        for err in \u0027ENOTSUP\u0027, \u0027EOPNOTSUPP\u0027:"},{"line_number":96,"context_line":"            if hasattr(errno, err) and e.errno \u003d\u003d getattr(errno, err):"},{"line_number":97,"context_line":"                logging.exception(_(\"Filesystem does not support xattr\"))"},{"line_number":98,"context_line":"                raise DiskFileXattrNotSupported(e)"},{"line_number":99,"context_line":"        pass"},{"line_number":100,"context_line":"    return pickle.loads(metadata)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_e2d597e6","line":97,"updated":"2014-06-26 23:06:12.000000000","message":"I would like to see something like\n\n    if isinstance(fd, six.text):\n        msg \u003d \"Filesystem at %s does not support xattr\" % fd\n    else:\n        msg \u003d \"Filesystem does not support xattr\"\n    logging.exception(msg)","commit_id":"cf0c426e51b27edb129ccab5f91e66af05786246"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"a0b6ec64d11fd22f8bae0906c2c17f7ab0a625b5","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    except IOError as e:"},{"line_number":95,"context_line":"        for err in \u0027ENOTSUP\u0027, \u0027EOPNOTSUPP\u0027:"},{"line_number":96,"context_line":"            if hasattr(errno, err) and e.errno \u003d\u003d getattr(errno, err):"},{"line_number":97,"context_line":"                logging.exception(_(\"Filesystem does not support xattr\"))"},{"line_number":98,"context_line":"                raise DiskFileXattrNotSupported(e)"},{"line_number":99,"context_line":"        pass"},{"line_number":100,"context_line":"    return pickle.loads(metadata)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_d0a5bc03","line":97,"in_reply_to":"1ae5cdf2_e2d597e6","updated":"2014-06-27 05:16:05.000000000","message":"This will involve importing the six module and adding it to swift\u0027s requirements.txt.\n\nI\u0027ll do it, but I think I\u0027d like to get other swift devs ok on adding to requirements.txt (which I guess gerrit and voting is all about) :)","commit_id":"cf0c426e51b27edb129ccab5f91e66af05786246"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"2bf88d47f5f843aeb31dfc019d953155f9074c53","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            if e.errno in (errno.ENOSPC, errno.EDQUOT):"},{"line_number":124,"context_line":"                logging.exception(_(\"No space left on device\"))"},{"line_number":125,"context_line":"                raise DiskFileNoSpace()"},{"line_number":126,"context_line":"            pass"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def extract_policy_index(obj_path):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_820cd394","line":126,"updated":"2014-06-26 23:06:12.000000000","message":"really?! a pass on unknown error where original code did no such thing?","commit_id":"cf0c426e51b27edb129ccab5f91e66af05786246"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"a0b6ec64d11fd22f8bae0906c2c17f7ab0a625b5","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            if e.errno in (errno.ENOSPC, errno.EDQUOT):"},{"line_number":124,"context_line":"                logging.exception(_(\"No space left on device\"))"},{"line_number":125,"context_line":"                raise DiskFileNoSpace()"},{"line_number":126,"context_line":"            pass"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def extract_policy_index(obj_path):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_d5d12ecd","line":126,"in_reply_to":"1ae5cdf2_820cd394","updated":"2014-06-27 05:16:05.000000000","message":"Wow, yeah, oops! Glad you spotted that, sorry my bad! \nCopy and paste error from read_metadata.","commit_id":"cf0c426e51b27edb129ccab5f91e66af05786246"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"ba95206b462e838e18d2f8cdc719bc86c51589b3","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    :returns: the filename."},{"line_number":86,"context_line":"    \"\"\""},{"line_number":87,"context_line":"    if hasattr(fd, \u0027name\u0027):"},{"line_number":88,"context_line":"        # fd object"},{"line_number":89,"context_line":"        return fd.name"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_9c774e02","line":87,"updated":"2014-08-19 05:57:53.000000000","message":"Hmmm. Will this ever work on a fd ? Is it getting filename from fd _that_ important ? If you really want that, you can have a look at this implementation here:\n\nhttps://github.com/swiftonfile/swiftonfile/blob/master/swiftonfile/swift/common/fs_utils.py#L346-L377","commit_id":"568d1cd34504828445153959d8f89d90bfff9426"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"f0876dc2c1804fa3e60a332ea135179cfeb23915","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    :returns: the filename."},{"line_number":86,"context_line":"    \"\"\""},{"line_number":87,"context_line":"    if hasattr(fd, \u0027name\u0027):"},{"line_number":88,"context_line":"        # fd object"},{"line_number":89,"context_line":"        return fd.name"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa7fdbe_33531518","line":87,"in_reply_to":"1abeadc6_9c774e02","updated":"2014-10-28 21:35:38.000000000","message":"A file like object has a name attribute, so there this should work depending on what is passed in.\n\nI like the swift on file approach, but think it might be a bit of over kill for this.. only because it involves potentially looking through proc.. where this using only python which will make it run on no posix systems... if we ever want to truly support that :P","commit_id":"568d1cd34504828445153959d8f89d90bfff9426"}],"swift/obj/server.py":[{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"38275d21bb504bf0634930e2f84ff67e0d4ef6c2","unresolved":false,"context_lines":[{"line_number":392,"context_line":"            return HTTPInsufficientStorage(drive\u003ddevice, request\u003drequest)"},{"line_number":393,"context_line":"        try:"},{"line_number":394,"context_line":"            orig_metadata \u003d disk_file.read_metadata()"},{"line_number":395,"context_line":"        except (DiskFileXattrNotSupported, DiskFileNoSpace):"},{"line_number":396,"context_line":"            return HTTPInsufficientStorage(drive\u003ddevice, request\u003drequest)"},{"line_number":397,"context_line":"        except (DiskFileNotExist, DiskFileQuarantined):"},{"line_number":398,"context_line":"            orig_metadata \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_1a997e1f","line":395,"updated":"2014-06-17 04:57:34.000000000","message":"DiskFileNoSpace doesn\u0027t make sense for read_metadata() calls. Here and elsewhere.","commit_id":"538a0d04cc97a534c6c40b4c23f83e03e1fb2aee"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"1d91957615e892d8f0279f432f03deb1fea337d2","unresolved":false,"context_lines":[{"line_number":392,"context_line":"            return HTTPInsufficientStorage(drive\u003ddevice, request\u003drequest)"},{"line_number":393,"context_line":"        try:"},{"line_number":394,"context_line":"            orig_metadata \u003d disk_file.read_metadata()"},{"line_number":395,"context_line":"        except (DiskFileXattrNotSupported, DiskFileNoSpace):"},{"line_number":396,"context_line":"            return HTTPInsufficientStorage(drive\u003ddevice, request\u003drequest)"},{"line_number":397,"context_line":"        except (DiskFileNotExist, DiskFileQuarantined):"},{"line_number":398,"context_line":"            orig_metadata \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_bd040419","line":395,"in_reply_to":"1ae5cdf2_1a997e1f","updated":"2014-06-17 05:43:14.000000000","message":"Thanks, will remove the others that are just calling read_metadata too (Like in GET).","commit_id":"538a0d04cc97a534c6c40b4c23f83e03e1fb2aee"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"3d627f531c277185b074eaf527be3aa45ff6b60d","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        try:"},{"line_number":341,"context_line":"            orig_metadata \u003d disk_file.read_metadata()"},{"line_number":342,"context_line":"        except DiskFileXattrNotSupported:"},{"line_number":343,"context_line":"            return HTTPInsufficientStorage(drive\u003ddevice, request\u003drequest)"},{"line_number":344,"context_line":"        except (DiskFileNotExist, DiskFileQuarantined):"},{"line_number":345,"context_line":"            return HTTPNotFound(request\u003drequest)"},{"line_number":346,"context_line":"        orig_timestamp \u003d Timestamp(orig_metadata.get(\u0027X-Timestamp\u0027, 0))"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_069c690e","line":343,"updated":"2014-07-11 21:07:27.000000000","message":"curious, code coverage shows missing for a bunch of these but looking at the test code I\u0027m not really clear why - do you know?","commit_id":"aad2ef3e4b72f3d4ec641a6fdffb28a789c9dfd6"}],"test/unit/obj/test_diskfile.py":[{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"38275d21bb504bf0634930e2f84ff67e0d4ef6c2","unresolved":false,"context_lines":[{"line_number":912,"context_line":"                DiskFileXattrNotSupported,"},{"line_number":913,"context_line":"                diskfile.read_metadata, \u0027n/a\u0027)"},{"line_number":914,"context_line":""},{"line_number":915,"context_line":"    def test_read_metadata_disk_full(self):"},{"line_number":916,"context_line":"        def mock_getxattr_ENOSPC(*args, **kargs):"},{"line_number":917,"context_line":"            raise IOError(errno.ENOSPC, \"No space left on device\")"},{"line_number":918,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_7a2362be","line":915,"updated":"2014-06-17 04:57:34.000000000","message":"Can remove these as getxattr probably won\u0027t raise ENOSPC/EDQUOT.","commit_id":"538a0d04cc97a534c6c40b4c23f83e03e1fb2aee"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"1d91957615e892d8f0279f432f03deb1fea337d2","unresolved":false,"context_lines":[{"line_number":912,"context_line":"                DiskFileXattrNotSupported,"},{"line_number":913,"context_line":"                diskfile.read_metadata, \u0027n/a\u0027)"},{"line_number":914,"context_line":""},{"line_number":915,"context_line":"    def test_read_metadata_disk_full(self):"},{"line_number":916,"context_line":"        def mock_getxattr_ENOSPC(*args, **kargs):"},{"line_number":917,"context_line":"            raise IOError(errno.ENOSPC, \"No space left on device\")"},{"line_number":918,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_5d5ea077","line":915,"in_reply_to":"1ae5cdf2_7a2362be","updated":"2014-06-17 05:43:14.000000000","message":"Right, thanks :)","commit_id":"538a0d04cc97a534c6c40b4c23f83e03e1fb2aee"}]}
