gravitee-io / issues

Gravitee.io - API Platform - Issues
64 stars 26 forks source link

Open Source Edition license issue when deploying Gravitee on Kubernetes using helm charts #8659

Closed lmrc1981getronics closed 1 year ago

lmrc1981getronics commented 1 year ago

Describe the bug

I am installing gravitee.io (Open Source Edition) in a Kubernetes platform by using the official [helm charts](https://www.gravitee.io/downloads) and following the helm documentation (in values.yaml it is pointed the following:

1\. For enterprise plugin only, you will need a license
 license:
 name: licensekey
 2\. key: 

 ``` ******_Please note that the gravitee version that I am installing is the Open Source Edition (free)._****** When I am deploying the platform, no license is being configured (following the helm chart documentation), and it works fine... for a couple of days or less. Then the component gateway and api fail showing in the log an exception regarding to the license which is null (******java.lang.NullPointerException: Cannot invoke "javax0.license3j.License.isOK(byte[])" because "this.license" is null*******). As it can be seen in the stack trace: ```java 16:44:30.441 
 [vert.x-worker-thread-11] ERROR i.g.r.e.a.query.CountQueryCommand - Impossible to perform CountQuery java.lang.RuntimeException: io.netty.resolver.dns.DnsResolveContext$SearchDomainUnknownHostException: Failed to resolve 'graviteeio-apim3x-elasticsearch-client.graviteeio.svc.cluster.local' and search domain query for configured domains failed as well: 
 [graviteeio.svc.cluster.local, svc.cluster.local, cluster.local, pcis-prep.getronics.local] at io.reactivex.internal.util.ExceptionHelper.wrapOrThrow(ExceptionHelper.java:46) at io.reactivex.internal.observers.BlockingMultiObserver.blockingGet(BlockingMultiObserver.java:93) at io.reactivex.Single.blockingGet(Single.java:2870) at io.gravitee.repository.elasticsearch.analytics.query.CountQueryCommand.executeQuery(CountQueryCommand.java:46) at io.gravitee.repository.elasticsearch.analytics.query.CountQueryCommand.executeQuery(CountQueryCommand.java:31) at io.gravitee.repository.elasticsearch.analytics.ElasticsearchAnalyticsRepository.query(ElasticsearchAnalyticsRepository.java:70) at io.gravitee.rest.api.repository.proxy.AnalyticsRepositoryProxy.query(AnalyticsRepositoryProxy.java:33) at io.gravitee.rest.api.repository.healthcheck.AnalyticsRepositoryProbe$1.handle(AnalyticsRepositoryProbe.java:55) at io.gravitee.rest.api.repository.healthcheck.AnalyticsRepositoryProbe$1.handle(AnalyticsRepositoryProbe.java:51) at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:159) at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:100) at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$1(ContextImpl.java:157) at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Unknown Source) Caused by: io.netty.resolver.dns.DnsResolveContext$SearchDomainUnknownHostException: Failed to resolve 'graviteeio-apim3x-elasticsearch-client.graviteeio.svc.cluster.local' and search domain query for configured domains failed as well: 
 [graviteeio.svc.cluster.local, svc.cluster.local, cluster.local, pcis-prep.getronics.local] at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1047) at io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(DnsResolveContext.java:1000) at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:418) at io.netty.resolver.dns.DnsResolveContext.access$600(DnsResolveContext.java:66) at io.netty.resolver.dns.DnsResolveContext$2.operationComplete(DnsResolveContext.java:467) at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578) at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571) at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550) at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491) at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616) at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:609) at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:117) at io.netty.resolver.dns.DnsQueryContext.tryFailure(DnsQueryContext.java:240) at io.netty.resolver.dns.DnsQueryContext$4.run(DnsQueryContext.java:192) at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:170) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ... 2 common frames omitted Caused by: io.netty.resolver.dns.DnsNameResolverTimeoutException: 
 [/172.30.0.10:53|/172.30.0.10:53] query via UDP timed out after 5000 milliseconds (no stack trace available) java.lang.NullPointerException: Cannot invoke "javax0.license3j.License.isOK(byte[])" because "this.license" is null at io.gravitee.node.license.LicenseService.verify(LicenseService.java:226) at io.gravitee.node.license.LicenseService$LicenseChecker.run(LicenseService.java:268) at java.base/java.util.TimerThread.mainLoop(Unknown Source) at java.base/java.util.TimerThread.run(Unknown Source) *****java.lang.NullPointerException: Cannot invoke "javax0.license3j.License.isOK(byte[])" because "this.license" is null****** at io.gravitee.node.license.LicenseService.verify(LicenseService.java:226) at io.gravitee.node.license.LicenseService$LicenseChecker.run(LicenseService.java:268) at java.base/java.util.TimerThread.mainLoop(Unknown Source) at java.base/java.util.TimerThread.run(Unknown Source) java.lang.NullPointerException: Cannot invoke "javax0.license3j.License.isOK(byte[])" because "this.license" is null at io.gravitee.node.license.LicenseService.verify(LicenseService.java:226) at io.gravitee.node.license.LicenseService$LicenseChecker.run(LicenseService.java:268) at java.base/java.util.TimerThread.mainLoop(Unknown Source) at java.base/java.util.TimerThread.run(Unknown Source) java.lang.NullPointerException: Cannot invoke "javax0.license3j.License.isOK(byte[])" because "this.license" is null at io.gravitee.node.license.LicenseService.verify(LicenseService.java:226) at io.gravitee.node.license.LicenseService$LicenseChecker.run(LicenseService.java:268) at java.base/java.util.TimerThread.mainLoop(Unknown Source) at java.base/java.util.TimerThread.run(Unknown Source) ```

According to the gravitee source code of the class: 
 [LicenseService]([https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java](https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java)([https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java)([https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java)([https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java](https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java](https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java)([https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java](https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java](https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java)([https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java)([https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java](https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java](https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java)([https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java](https://github.com/gravitee-io/gravitee-node/blob/master/gravitee-node-license/src/main/java/io/gravitee/node/license/LicenseService.java))))) which manages the license, it seems that a license must be provided: (line 226 -> boolean valid = license.isOK(key)😉, but the Open Source Edition doesn't require any license, being contradictory because the product is expecting a license (in string object) but the free version does not have any. 

1\. To Reproduce

Deploy the platform by following the helm chart documentation and leaving in blank the license - Wait for some days until the license validator tries to validate the license. 

1\. Expected behaviour

Run the gravitee (Open Source Edition) without any license issue. 

1\. Current behaviour

Once the gravitee platform (Open Source Edition) is installed, it works properly for a few days. Then the platform breaks due to the license issue.
 
albgarcon commented 1 year ago

Hi all,

I am having the same issue: the gravitee apim (OpenSource edition, without any license) is failing in my Kubernetes due to it is trying to validate a license which is null (because no license is provided as it is pointed in the helm chart). @mouligno , is there any estimation about when (in which release) is it planned to be solved (if it is a bug)?

Thank you in advance!.

meveno commented 1 year ago

Hi,

We're facing the same issue for Gravitee Gateway version: 3.18.20. Here the associated stacktrace that comes regularly into the logs :

java.lang.NullPointerException: Cannot invoke "javax0.license3j.License.isOK(byte[])" because "this.license" is null
    at io.gravitee.node.license.LicenseService.verify(LicenseService.java:226)
    at io.gravitee.node.license.LicenseService$LicenseChecker.run(LicenseService.java:268)
    at java.base/java.util.TimerThread.mainLoop(Unknown Source)
    at java.base/java.util.TimerThread.run(Unknown Source)
vijaychandranimmakuri commented 1 year ago

same issue here, I Deployed APIM on docker using images with latest versions 3.20.4 its not a EE its open source even i didn't attached any empty volume for license key to the docker container, I am little bit bit confused then, Why i am getting this warning error as license key null. (opened this issue on November 2022 still opened not at resolved) can you guys please confirm is this bug? and when we expect to resolve that issue.

gaetanmaisse commented 1 year ago

Hey! I'm late to the party, but we're looking at it right now. Which version of the Helm charts are you using?

vijaychandranimmakuri commented 1 year ago

@gaetanmaisse i deployed on docker using images (versions 3.20.4)

vijaychandranimmakuri commented 1 year ago

Hi @gaetanmaisse 2 days back I deployed gravitee APIM by using docker images but, that error still showing that license error as null. can you please support me is their any other option to overcome that issue.

ThibaudAV commented 1 year ago

@vijaychandranimmakuri which version are you using? This problem is fixed for the version >= (3.18.24|3.19.13|3.20.8) Each of these versions includes a new version of gravitee-node (2.0.8 for gravitee 3.20.x) containing the fix.