Skip to content

antlr4 isn't robust with slow links. #13

@kaby76

Description

@kaby76

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.

with urlopen(f"https://search.maven.org/solrsearch/select?q=a:antlr4-master+g:org.antlr") as response:

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions