openapi-generator-cli: [BUG] Fails to download jars

⚠️ Important Notice

Please differentiate the bug


🐛 Bug Report:

Describe the bug

When we run the generator for the first time expecting to get resolved from the PATH (openapi-generator-cli version) it hangs and after a while gives the following error:

node_modules/@openapitools/openapi-generator-cli/main.js:1045
            error.response.data.on('data', data => this.logger.log(data.toString('utf8')));
                                ^
TypeError: error.response.data.on is not a function
    at VersionManagerService.printResponseError (/GMSS/node_modules/@openapitools/openapi-generator-cli/main.js:1045:33)
    at /GMSS/node_modules/@openapitools/openapi-generator-cli/main.js:924:18
    at /GMSS/node_modules/rxjs/dist/cjs/internal/operators/catchError.js:13:51
    at OperatorSubscriber._this._error (/GMSS/node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js:43:21)
    at Subscriber.error (/GMSS/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18)
    at Subscriber._error (/GMSS/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30)
    at Subscriber.error (/GMSS/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18)
    at Subscriber._error (/GMSS/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30)
    at Subscriber.error (/GMSS/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18)
    at Subscriber._error (/GMSS/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30)

Steps to Reproduce

Install like this

cd ~
mkdir testdir
cd ~/testdir/
npm install -g npm@latest
npm install @openapitools/openapi-generator-cli

sudo ln -s /home/$USER/testdir/node_modules/@openapitools/openapi-generator-cli/main.js /usr/bin/openapi-generator-cli

sudo chmod 755 node_modules/@openapitools/openapi-generator-cli/main.js

Now try running:

~/testdir/$ which openapi-generator-cli
/usr/bin/openapi-generator-cli
~/testdir$ openapi-generator-cli version
Unable to query repository, because of: "Request failed with status code 504"

Response:
date Thu, 12 Jan 2023 17:45:56 GMT
content-type text/html
content-length 160
connection keep-alive
server nginx

/home/user/testdir/node_modules/@openapitools/openapi-generator-cli/main.js:1045
            error.response.data.on('data', data => this.logger.log(data.toString('utf8')));
                                ^

TypeError: error.response.data.on is not a function
    at VersionManagerService.printResponseError (/home/user/testdir/node_modules/@openapitools/openapi-generator-cli/main.js:1045:33)
    at /home/user/testdir/node_modules/@openapitools/openapi-generator-cli/main.js:924:18
    at /home/user/testdir/node_modules/rxjs/dist/cjs/internal/operators/catchError.js:13:51
    at OperatorSubscriber._this._error (/home/user/testdir/node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js:43:21)
    at Subscriber.error (/home/user/testdir/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18)
    at Subscriber._error (/home/user/testdir/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30)
    at Subscriber.error (/home/user/testdir/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18)
    at Subscriber._error (/home/user/testdir/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30)
    at Subscriber.error (/home/user/testdir/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18)
    at Subscriber._error (/home/user/testdir/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30)

Strangely enough, changing the directory seems to work

cd ..
~$ openapi-generator-cli version
Download 6.2.1 ...
Downloaded 6.2.1
Did set selected version to 6.2.1
6.2.1

You can break it again:

cd testdir
rm -rf node_modules/@openapitools/openapi-generator-cli/versions/
openapi-generator-cli version

The above will give you the same error

Expected behavior

openapi-generator-cli version
Download 6.2.1 ...
Downloaded 6.2.1
Did set selected version to 6.2.1
6.2.1

Screenshots

If applicable, add screenshots to help explain your problem.

Operation System (please complete the following information):

  • OS: Ubuntu
  • Version: 22

Package System (please complete the following information):

  • Node.js v19.3.0
  • npm - 9.2.0

Additional context

Add any other context about the problem here.

About this issue

  • Original URL
  • State: open
  • Created a year ago
  • Reactions: 24
  • Comments: 22

Most upvoted comments

Seeing the same. Blocking deployments for my team.

For contrast, here’s the uptime of the CDN from where the openapi-generator jars are actually downloaded: image

It would be great if there was a way to specify the exact openapi-generator version to use, and skip the query step so your usage of the tool is decoupled from search.maven.org.

Creating an openapitools.json file in the current working directory with the following content seems to fix it for me:

{
  "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
  "spaces": 2,
  "generator-cli": {
    "version": "6.2.1"
  }
}

It appears that sometimes the file is not generated for some reason. When it is being generated everything works fine. I can’t find any obvious reason (permissions, etc) for the file not to be generated. Another strange thing is that the schema path is not valid from the current working directory - so I can’t see a reason why it would fix the issues, but it seems that it does. I tried 4 - 5 times and every time I added the file (different working dirs) it works like a charm.

This started happening in the last couple of days.

alanwguo yes, that is how I’m using it. I’m using this instead of calling npx openapi-generator-cli version-manager set 5.4 stable. The other solution, creating the openapitools.json tool, also worked for me. I use

openapiGeneratorVersion=5.4.0
cat <<EOF >| openapitools.json
{
  "\$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
  "spaces": 2,
  "generator-cli": {
    "version": "${openapiGeneratorVersion}"
  }
}
EOF
That is, I think the `openapi-generator-cli` will use the version in the `openapitools.json` file, 
but calling `openapi-generator-cli version-manager set 5.4 stable` will still force it to
lookup versions in Maven repo to verify it, so to fix this issue, you need to not use that command.

I looked into this a bit, and it seems related to the not-so-great uptime of search.maven.org: image image

This will cause failures when:

  1. Defaulting to using latest openapi-generator version, since that search.maven.org endpoint is called to figure out what the latest published version is.
  2. Explicitly specifying the openapi-generator version, since the set method on the version manager calls the search.maven.org endpoint to validate the version param.

In other words, you’re in trouble in all cases if search.maven.org is down.

It seems like validation via the search step while doing a openapi-generator-cli version-manager set <versionTags...> may be causing more problems than it solves, given the coupling to search.maven.org.

When going to https://search.maven.org, I get this:

image

It is probably related…

It is back.

openapi-generator-cli version-manager set 6.4.0 Unable to query repository, because of: “Request failed with status code 502” Response: date Tue, 27 Jun 2023 14:53:24 GMT content-type text/html content-length 150 connection close server nginx /usr/local/lib/node_modules/@openapitools/openapi-generator-cli/main.js:1036 error.response.data.on(‘data’, data => this.logger.log(data.toString(‘utf8’))); ^ TypeError: error.response.data.on is not a function at VersionManagerService.printResponseError (/usr/local/lib/node_modules/@openapitools/openapi-generator-cli/main.js:1036:33) at /usr/local/lib/node_modules/@openapitools/openapi-generator-cli/main.js:915:18 at /usr/local/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/operators/catchError.js:13:51 at OperatorSubscriber._this._error (/usr/local/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js:43:21) at OperatorSubscriber.Subscriber.error (/usr/local/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18) at OperatorSubscriber.Subscriber._error (/usr/local/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30) at OperatorSubscriber.Subscriber.error (/usr/local/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18) at OperatorSubscriber.Subscriber._error (/usr/local/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30) at OperatorSubscriber.Subscriber.error (/usr/local/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:60:18) at OperatorSubscriber.Subscriber._error (/usr/local/lib/node_modules/@openapitools/openapi-generator-cli/node_modules/rxjs/dist/cjs/internal/Subscriber.js:84:30)

We use

npx openapi-generator-cli version-manager set 5.4 stable

as there are bugs in openapi-generator 6 that affect us, but now we cannot download 5.4 due to this outage

Unable to query repository, because of: "Request failed with status code 502"

Response:

server awselb/2.0
date Fri, 13 Jan 2023 13:08:10 GMT
content-type text/html
content-length 122
connection close

and openapi-generator uses 6.2.1 instead of 5.4

As a workaround, use a static copy of the 5.4.0 openapi-generator jar and access that directly via

--custom-generator=/path/to/openapi-generator-5.4.0.jar

One can download the needed jar from maven, such as https://repo1.maven.org/maven2/org/openapitools/openapi-generator/5.4.0/openapi-generator-5.4.0.jar or https://repo1.maven.org/maven2/org/openapitools/openapi-generator/6.2.1/openapi-generator-6.2.1.jar