Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expression tool input wrapping can fail with None values #17960

Open
mvdbeek opened this issue Apr 11, 2024 · 2 comments
Open

Expression tool input wrapping can fail with None values #17960

mvdbeek opened this issue Apr 11, 2024 · 2 comments

Comments

@mvdbeek
Copy link
Member

mvdbeek commented Apr 11, 2024

TypeError: 'NoneType' object does not support item assignment
  File "galaxy/jobs/runners/__init__.py", line 297, in prepare_job
    job_wrapper.prepare()
  File "galaxy/jobs/__init__.py", line 1249, in prepare
    tool_evaluator.set_compute_environment(compute_environment, get_special=get_special)
  File "galaxy/tools/evaluation.py", line 171, in set_compute_environment
    self.execute_tool_hooks(inp_data=inp_data, out_data=out_data, incoming=incoming)
  File "galaxy/tools/evaluation.py", line 176, in execute_tool_hooks
    self.tool.exec_before_job(self.app, inp_data, out_data, self.param_dict)
  File "galaxy/tools/__init__.py", line 2849, in exec_before_job
    json_wrap(self.inputs, param_dict, self.profile, job, handle_files="OBJECT")
  File "galaxy/tools/parameters/wrapped_json.py", line 31, in json_wrap
    json_value = _json_wrap_input(input, value_wrapper, profile, handle_files=handle_files)
  File "galaxy/tools/parameters/wrapped_json.py", line 141, in _json_wrap_input
    json_value["contents"] = fh.read(input.load_contents).decode("utf-8", errors="replace")

from https://sentry.galaxyproject.org/share/issue/021c4d3c646149eab718d9ceea5487ea/.

json_value here is None, which I think is a valid input, but it looks like a this was part of a workflow that failed early on, including a proper workflow invocation error message, so this might not be a high-priority bug.

@mvdbeek
Copy link
Member Author

mvdbeek commented Apr 11, 2024

The tool in question is param_value_from_file

@davelopez
Copy link
Contributor

davelopez commented Apr 19, 2024

I investigated a bit this issue, but I need some hints.

If we allow json_value to be None, what would be the expected output in param_value_from_file?:

Would this be the desired output?:

{"output": null}

If that is the case, this leads to a different error down the road:

galaxy.tool_util.output_checker INFO 2024-04-19 18:07:59,295 [pN:main.1,p:583932,tN:LocalRunner.work_thread-1] Job failed because of contents in the standard error stream: [Traceback (most recent call last):
  File "/home/dlopez/sandbox/data-gx/24.0/jobs_directory/000/416/_evaluate_expression_.py", line 1, in <module>
    from galaxy_ext.expressions.handle_job import run; run()
                                                       ^^^^^
  File "/home/dlopez/dev/gx-version/24.0/lib/galaxy_ext/expressions/handle_job.py", line 54, in run
    output_value = expression.interpolate(from_expression, result)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dlopez/dev/gx-version/24.0/.venv/lib/python3.11/site-packages/cwl_utils/expression.py", line 215, in interpolate
    e = evaluator(
        ^^^^^^^^^^
  File "/home/dlopez/dev/gx-version/24.0/.venv/lib/python3.11/site-packages/cwl_utils/expression.py", line 164, in evaluator
    raise JavascriptException(
cwl_utils.errors.JavascriptException: Syntax error in parameter reference 'output': output is not defined. This could be due to using Javascript code without specifying InlineJavascriptRequirement.
]
galaxy.jobs DEBUG 2024-04-19 18:07:59,337 [pN:main.1,p:583932,tN:LocalRunner.work_thread-1] (416) setting dataset 417 state to ERROR

So I guess we need to return something else as output, right? 🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants