common-workflow-language / common-workflow-language/cwltool

--skip-schemas isn't stopping cwltool from trying to connect to the schema server

Open
#1,425 4 comments 0 reactions 0 assignees View on GitHub
help wanted
Dominant language
Python
Stars
376
Forks
255
Avg merge
2d 7h
Merged PRs (30d)
12

Description

## Expected Behavior
When I use `cwltool --skip-schemas` on a system with no internet access, the workflow should still be runnable.

## Actual Behavior
When I use `cwltool --skip-schemas` the process hangs at the `Resolved [workflow] to [path to workflow]` step. I have to hard-kill the process to stop it. When I delete all the schema information in my script though (`$schemas` and the `format` instructions which depend on these), the script works as expected.

The code below (provided by @mr-c) replicates this problem for systems which have internet access.

## Workflow Code
```
wget https://github.com/bioexcel/biobb_adapters/raw/master/biobb_adapters/cwl/biobb_md/mdrun.cwl
HTTPS_PROXY=http://127.0.0.5 cwltool --debug --skip-schemas --validate mdrun.cwl

```

## Full Traceback
```
(cwl) 192:test mbessdl2$ HTTPS_PROXY=http://127.0.0.5 cwltool --debug --skip-schemas --validate mdrun.cwl
INFO /Users/mbessdl2/anaconda3/envs/cwl/bin/cwltool 3.0.20200807132242
INFO Resolved 'mdrun.cwl' to 'file:///Users/mbessdl2/work/manchester/BioExcel/workflows_to_adapt/biobb_hpc_cwl_md_list/test/mdrun.cwl'
^CTraceback (most recent call last):
File "/Users/mbessdl2/anaconda3/envs/cwl/bin/cwltool", line 11, in
sys.exit(run())
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/cwltool/main.py", line 1267, in run
sys.exit(main(*args, **kwargs))
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/cwltool/main.py", line 939, in main
loadingContext, uri = resolve_and_validate_document(
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/cwltool/load_tool.py", line 378, in resolve_and_validate_document
document_loader.resolve_all(workflowobj, fileuri)
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/schema_salad/ref_resolver.py", line 957, in resolve_all
loader.validate_links(
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/schema_salad/ref_resolver.py", line 1107, in validate_links
document[d] = self.validate_link(
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/schema_salad/ref_resolver.py", line 1063, in validate_link
link[n] = self.validate_link(field, i, docid, all_doc_ids)
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/schema_salad/ref_resolver.py", line 1053, in validate_link
elif not self.check_exists(link):
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/schema_salad/fetcher.py", line 93, in check_exists
resp = self.session.head(url)
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/requests/sessions.py", line 565, in head
return self.request('HEAD', url, **kwargs)
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/requests/sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/requests/sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/cachecontrol/adapter.py", line 47, in send
resp = super(CacheControlAdapter, self).send(request, **kw)
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/urllib3/connectionpool.py", line 667, in urlopen
self._prepare_proxy(conn)
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/urllib3/connectionpool.py", line 932, in _prepare_proxy
conn.connect()
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/urllib3/connection.py", line 309, in connect
conn = self._new_conn()
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/urllib3/connection.py", line 159, in _new_conn
conn = connection.create_connection(
File "/Users/mbessdl2/anaconda3/envs/cwl/lib/python3.8/site-packages/urllib3/util/connection.py", line 74, in create_connection
sock.connect(sa)
KeyboardInterrupt
```

## Your Environment
* cwltool version: 3.0.20200807132242
(however @mr-c has checked this on more recent versions of cwltool, and it is still an issue for these too)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.