Project

General

Profile

Bug #15594

FTS traceback when file size in extracted metadata is the wrong type

Added by Marc Mengel over 2 years ago. Updated over 2 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
02/20/2017
Due date:
% Done:

100%

Estimated time:
Duration:

Description

error received:

2017-02-20 11:07:42-0600 [-] [Failure instance: Traceback: <type 'exceptions.TypeError'>: %d format: a number is required, not unicode
    /grid/fermiapp/products/common/prd/twisted/v15_2_1/Linux64bit-2-6-2-12/lib/python/twisted/internet/defer.py:434:errback
    /grid/fermiapp/products/common/prd/twisted/v15_2_1/Linux64bit-2-6-2-12/lib/python/twisted/internet/defer.py:501:_startRunCallbacks
    /grid/fermiapp/products/common/prd/twisted/v15_2_1/Linux64bit-2-6-2-12/lib/python/twisted/internet/defer.py:588:_runCallbacks
    /grid/fermiapp/products/common/prd/twisted/v15_2_1/Linux64bit-2-6-2-12/lib/python/twisted/internet/defer.py:1184:gotResult
    --- <exception caught here> ---
    /grid/fermiapp/products/common/prd/twisted/v15_2_1/Linux64bit-2-6-2-12/lib/python/twisted/internet/defer.py:1126:_inlineCallbacks
    /grid/fermiapp/products/common/prd/twisted/v15_2_1/Linux64bit-2-6-2-12/lib/python/twisted/python/failure.py:389:throwExceptionIntoGenerator
    /grid/fermiapp/products/common/prd/FileTransferService/v5_0_1/NULL/python/fts/filestate.py:931:_noMD
    /grid/fermiapp/products/common/prd/twisted/v15_2_1/Linux64bit-2-6-2-12/lib/python/twisted/internet/defer.py:1128:_inlineCallbacks
    /grid/fermiapp/products/common/prd/FileTransferService/v5_0_1/NULL/python/fts/metadata.py:52:extractMetadata
    ]

Looks like this is probably triggering fts/metadata.py:51

    if 'file_size' in md:
        if md['file_size'] != filestate.getFileSize():
            raise InvalidMetadata("Metadata for '%s' says size is %d, but actual size is %d" %( filestate.getFileName(), md['file_size'], filestate.getFileSize()))

'cause the md['file_size'] is a string, not an int..

Associated revisions

Revision 909203d3 (diff)
Added by Robert Illingworth over 2 years ago

Allow file_size in metadata to be a string; provide a proper error message if it's not convertable to a number - resolves #15594

History

#1 Updated by Robert Illingworth over 2 years ago

  • Subject changed from FTS raises an exception when trying to raise an exception... to FTS traceback when file size in extracted metadata is the wrong type

md['file_size'] is supposed to be a int or long, so I blame the user. But I think an explicit type check is a more user-friendly way of enforcing this. Or maybe we should just accept anything convertible to a long (I think samweb does this when you give it the metadata).

(It's not really raising an exception while raising an exception - that's just how twisted reports exceptions from deferred object invocation. Exceptions aren't really compatible with asynchronous callback style.)

#2 Updated by Robert Illingworth over 2 years ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 100


Also available in: Atom PDF