diff options
author | Lars Wirzenius <liw@liw.fi> | 2013-03-02 17:32:34 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2013-03-02 17:32:34 +0000 |
commit | 446a065e1de42ae45ddc28784f9325f89bcf6820 (patch) | |
tree | c39d49bdbc310b6a52207b1eb8a98b5a7a42554a | |
parent | 97c2bb8472c20f925207b9339e135679aa088572 (diff) | |
download | obnam-446a065e1de42ae45ddc28784f9325f89bcf6820.tar.gz |
If packing fails, log all values to see what caused the failure
-rw-r--r-- | obnamlib/metadata.py | 57 |
1 files changed, 39 insertions, 18 deletions
diff --git a/obnamlib/metadata.py b/obnamlib/metadata.py index a3c1bea0..bba229fe 100644 --- a/obnamlib/metadata.py +++ b/obnamlib/metadata.py @@ -286,24 +286,45 @@ def encode_metadata(metadata): if getattr(metadata, name) is not None: flags |= (1 << i) - packed = metadata_format.pack(flags, - metadata.st_mode or 0, - metadata.st_mtime_sec or 0, - metadata.st_mtime_nsec or 0, - metadata.st_atime_sec or 0, - metadata.st_atime_nsec or 0, - metadata.st_nlink or 0, - metadata.st_size or 0, - metadata.st_uid or 0, - metadata.st_gid or 0, - metadata.st_dev or 0, - metadata.st_ino or 0, - metadata.st_blocks or 0, - len(metadata.groupname or ''), - len(metadata.username or ''), - len(metadata.target or ''), - len(metadata.md5 or ''), - len(metadata.xattr or '')) + try: + packed = metadata_format.pack(flags, + metadata.st_mode or 0, + metadata.st_mtime_sec or 0, + metadata.st_mtime_nsec or 0, + metadata.st_atime_sec or 0, + metadata.st_atime_nsec or 0, + metadata.st_nlink or 0, + metadata.st_size or 0, + metadata.st_uid or 0, + metadata.st_gid or 0, + metadata.st_dev or 0, + metadata.st_ino or 0, + metadata.st_blocks or 0, + len(metadata.groupname or ''), + len(metadata.username or ''), + len(metadata.target or ''), + len(metadata.md5 or ''), + len(metadata.xattr or '')) + except TypeError, e: # pragma: no cover + logging.error('ERROR: Packing error due to %s' % str(e)) + logging.error('ERROR: st_mode=%s' % repr(metadata.st_mode)) + logging.error('ERROR: st_mtime_sec=%s' % repr(metadata.st_mtime_sec)) + logging.error('ERROR: st_mtime_nsec=%s' % repr(metadata.st_mtime_nsec)) + logging.error('ERROR: st_atime_sec=%s' % repr(metadata.st_atime_sec)) + logging.error('ERROR: st_atime_nsec=%s' % repr(metadata.st_atime_nsec)) + logging.error('ERROR: st_nlink=%s' % repr(metadata.st_nlink)) + logging.error('ERROR: st_size=%s' % repr(metadata.st_size)) + logging.error('ERROR: st_uid=%s' % repr(metadata.st_uid)) + logging.error('ERROR: st_gid=%s' % repr(metadata.st_gid)) + logging.error('ERROR: st_dev=%s' % repr(metadata.st_dev)) + logging.error('ERROR: st_ino=%s' % repr(metadata.st_ino)) + logging.error('ERROR: st_blocks=%s' % repr(metadata.st_blocks)) + logging.error('ERROR: groupname=%s' % repr(metadata.groupname)) + logging.error('ERROR: username=%s' % repr(metadata.username)) + logging.error('ERROR: target=%s' % repr(metadata.target)) + logging.error('ERROR: md5=%s' % repr(metadata.md5)) + logging.error('ERROR: xattr=%s' % repr(metadata.xattr)) + raise return (packed + (metadata.groupname or '') + (metadata.username or '') + |