antlr4-tools icon indicating copy to clipboard operation
antlr4-tools copied to clipboard

antlr4 isn't robust with slow links.

Open kaby76 opened this issue 1 year ago • 5 comments

I've noticed this on my machines and now over in github actions build for grammars-v4. When the link is bad, the antlr4 tool fails.

Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/antlr4_tool_runner.py", line 26, in latest_version
    with urlopen(f"https://search.maven.org/solrsearch/select?q=a:antlr4-master+g:org.antlr") as response:
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 525, in open
    response = meth(req, response)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 634, in http_response
    response = self.parent.error(
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 563, in error
    return self._call_chain(*args)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 496, in _call_chain
    result = func(*args)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 643, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 504: Gateway Time-out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.10.11/x64/bin/antlr4", line 8, in <module>
    sys.exit(tool())
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/antlr4_tool_runner.py", line 131, in tool
    args, version = get_version_arg(args)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/antlr4_tool_runner.py", line 123, in get_version_arg
    version = latest_version()
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/antlr4_tool_runner.py", line 36, in latest_version
    version_dirs = list(filter(lambda directory: re.match(r"[0-9]+\.[0-9]+\.[0-9]+", directory), os.listdir(mvn_repo)))
FileNotFoundError: [Errno 2] No such file or directory: '/home/runner/.m2/repository/org/antlr/antlr4'
Could not get latest version number, attempting to fall back to latest downloaded version...
Build failed
Build completed, time: 00:01:02.4911135
./fortran/fortran90 failed
finished in 00:01:02.5069344
Write-Error: /home/runner/work/grammars-v4/grammars-v4/_scripts/test.ps1:384
Line |
 384 |      Test-AllGrammars -Target $target -PreviousCommit $pc -CurrentComm …
     |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | Failed grammars: ./fortran/fortran90

This is happening because it is trying to get the latest version of the Antlr tool. https://github.com/antlr/antlr4-tools/blob/787e7a500e56d17566086b5d5c04eeea84a387e8/antlr4_tool_runner.py#L26

I can program around this by looking at the output of the tool and grep'ing for some string that says the link is bad. But, the better way would be to loop over the call (maybe 5 times) and catching link errors.

kaby76 avatar Jun 05 '23 16:06 kaby76