Hi all,

I just got a nasty recursion error when trying to run the functional
tests for my TMHMM and
SignalP wrappers - tools which produce tabular output.

galaxy.jobs.runners.local: ERROR: Job wrapper finish method failed
Traceback (most recent call last):
  File 
"/home/pjcock/repositories/galaxy-central/lib/galaxy/jobs/runners/local.py",
line 125, in run_job
    job_wrapper.finish( stdout, stderr )
  File "/home/pjcock/repositories/galaxy-central/lib/galaxy/jobs/__init__.py",
line 578, in finish
    dataset.set_peek()
  File "/home/pjcock/repositories/galaxy-central/lib/galaxy/model/__init__.py",
line 690, in set_peek
    return self.datatype.set_peek( self, is_multi_byte=is_multi_byte )
  File 
"/home/pjcock/repositories/galaxy-central/lib/galaxy/datatypes/tabular.py",
line 227, in set_peek
    data.Text.set_peek( self, dataset, line_count=line_count,
is_multi_byte=is_multi_byte )
  File "/home/pjcock/repositories/galaxy-central/lib/galaxy/datatypes/data.py",
line 431, in set_peek
    self.set_peek(dataset)
...
  File 
"/home/pjcock/repositories/galaxy-central/lib/galaxy/datatypes/tabular.py",
line 227, in set_peek
    data.Text.set_peek( self, dataset, line_count=line_count,
is_multi_byte=is_multi_byte )
  File "/home/pjcock/repositories/galaxy-central/lib/galaxy/datatypes/data.py",
line 431, in set_peek
    self.set_peek(dataset)
...
  File 
"/home/pjcock/repositories/galaxy-central/lib/galaxy/datatypes/tabular.py",
line 227, in set_peek
    data.Text.set_peek( self, dataset, line_count=line_count,
is_multi_byte=is_multi_byte )
  File "/home/pjcock/repositories/galaxy-central/lib/galaxy/datatypes/data.py",
line 419, in set_peek
    dataset.peek = get_file_peek( dataset.file_name,
is_multi_byte=is_multi_byte )
  File "/home/pjcock/repositories/galaxy-central/lib/galaxy/model/__init__.py",
line 628, in get_file_name
    return self.dataset.get_file_name()
  File "/home/pjcock/repositories/galaxy-central/lib/galaxy/model/__init__.py",
line 515, in get_file_name
    return os.path.abspath( os.path.join( dir, "dataset_%d.dat" % self.id ) )
  File "/usr/local/lib/python2.6/posixpath.py", line 348, in abspath
    return normpath(path)
  File "/usr/local/lib/python2.6/posixpath.py", line 314, in normpath
    slash, dot = (u'/', u'.') if isinstance(path, unicode) else ('/', '.')
RuntimeError: maximum recursion depth exceeded while calling a Python object


>From the trace, two set_peek methods are calling each other in a loop. I 
>deduced
the problem was an empty tabular files, where
dataset.metadata.data_lines is zero,
but the test should really have been for None. Please review and apply
this patch
which appears to correctly resolve the issue:


diff -r 9fae539215be lib/galaxy/datatypes/data.py
--- a/lib/galaxy/datatypes/data.py      Fri Mar 18 11:46:48 2011 +0000
+++ b/lib/galaxy/datatypes/data.py      Fri Mar 18 11:49:05 2011 +0000
@@ -422,7 +422,7 @@
             dataset.peek = get_file_peek( dataset.file_name,
is_multi_byte=is_multi_byte )
             if line_count is None:
                 # See if line_count is stored in the metadata
-                if dataset.metadata.data_lines:
+                if dataset.metadata.data_lines is not None:
                     dataset.blurb = "%s %s" % ( util.commaify(
str(dataset.metadata.data_lines) ),
inflector.cond_plural(dataset.metadata.data_lines, "line") )
                 else:
                     # Number of lines is not known ( this should not
happen ), and auto-detect is



Thanks,

Peter
___________________________________________________________
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:

  http://lists.bx.psu.edu/

Reply via email to