Hello, Peter
The blank panel should definitely be handled more gracefully in this situation - I'll work on that.
Have you noticed though, since your patch, any particular pattern to which metadata names are turning out to equal None (some obviously missing metadata field)? Is there a particular datatype?
Have you seen the assertion fail? C
On Wed, Jan 16, 2013 at 11:31 AM, Peter Cock p.j.a.cock@googlemail.comwrote:
Hello all,
I've noticed on my test setup (tracking galaxy-central) a problem with some histories not displaying. If I click on saved histories, I am show a list. Some will load (slower than I recall), but others result in a blank right hand pane - with the following error from run.sh
galaxy.webapps.galaxy.api.history_contents ERROR 2013-01-16 15:24:22,726 Error in history API at listing contents: <type 'exceptions.TypeError'>, cannot concatenate 'str' and 'NoneType' objects
The same error and blank pane happens if I click on the reload history icon. A screenshot is attached.
This error is coming from HistoryContentsController in file lib/galaxy/webapps/galaxy/api/history_contents.py - specifically in the call to get_hda_dict. I tried modifying this for loop so that any individual transaction with an error is ignored (but a debug message logged), and I could then load the rest of the problem histories.
The error from get_hda_dict is from the first line, which takes the galaxy.model.HistoryDatasetAssociation object and asks:
hda_dict = hda.get_api_value( view='element' )
That takes us to lib/galaxy/model/__init__.py and the root of the problem: I am seeing entries where both name and val are None, meaning this line fails with the TypeError above:
rval['metadata_' + name] = val
Clearly some of my histories now have some 'bad' data in them, and currently Galaxy is failing to cope. Based on the ID numbers this has been happening for a while, so not a recent regression.
Here is a patch which seems to help.
Peter
$ hg diff lib/galaxy/model/__init__.py diff -r 81c3b8a6a621 lib/galaxy/model/__init__.py --- a/lib/galaxy/model/__init__.py Wed Jan 16 15:14:04 2013 +0000 +++ b/lib/galaxy/model/__init__.py Wed Jan 16 16:26:28 2013 +0000 @@ -1530,7 +1530,11 @@ val = val.file_name elif isinstance( val, list ): val = ', '.join( [str(v) for v in val] )
rval['metadata_' + name] = val
if name is None:
log.debug("get_api_value(view=%r) : name %r, val %r"
% (view, name, val))
assert val is None, "get_api_value(view=%r) : name
%r, val %r" % (view, name, val)
else:
rval['metadata_' + name] = val return rval
class HistoryDatasetAssociationDisplayAtAuthorization( object ):
Please keep all replies on the list by using "reply all" in your mail client. To manage your subscriptions to this and other Galaxy lists, please use the interface at: