gravitee-io / issues

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

Gravitee 1.22 Migration to new infrastructure #6225

Closed AndreRog closed 2 years ago

AndreRog commented 2 years ago

My company is currently using gravitee APIM 1.22, running on rancher which they want to shut down, a mongodb and ES running on EC2 machines. The challenge is to migrate the gravitee apim to a new k8s environment in AWS and use managed services.

So got the docker-compose file from gravitee repo, I changed the image to the 1.22 version. Checked for compatibility versions on ES (6.4) and launched DocumentDB from AWS with version 3.6. I changed the URIs to these new services and everything seems to work fine when the DocumentDB has no data.

Now the next step was to do a mongodump from the EC2 instance, and a mongorestore to DocumentDB. I even ran AWS compatibility tool to check if everything was ok, and the result was no incompatibility found. ES we did not migrate any data.

Expected Behavior

The expected behaviour is when using the DocumentDB and ES managed AWS services with exactly the same database that is currently being used in the staging environment we should have a replica, which is not the case.

Current Behavior

Although I can launch gravitee, and log in with the admin account. When I try to search for APIs gravitee breaks. Even when initializing gravitee I can see some errors being logged. These errors only started appearing after I restored the mongoDB.

Error iniatilizing gravitee.

08:39:19.405 [sync-1] INFO i.g.m.s.d.DynamicPropertiesService - Dynamic properties service is disabled for: IoT Portal [2.0] 08:39:19.545 [sync-1] INFO i.g.m.services.sync.ApiManager - Deployment of ApiEntity{id='f4e135ac-77ac-47e3-a135-ac77acc7e366', name='Hello world', version='1.0.0', description='hello world', proxy=io.gravitee.definition.model.Proxy@7bf837e5, paths={/hello-world=io.gravitee.definition.model.Path@7ec68c6c}, createdAt=Thu Jan 14 14:30:12 UTC 2021, updatedAt=Fri Jan 15 17:30:17 UTC 2021, visibility=PUBLIC, state=STARTED, primaryOwner=io.gravitee.management.model.PrimaryOwnerEntity@506e8a36, tags=[], view=[infrastructure-security], groups=null, pathMappings=[/hello-world, /]} 08:39:19.548 [sync-1] INFO i.g.m.s.d.DynamicPropertiesService - Dynamic properties service is disabled for: Hello world [1.0.0] Sep 21, 2021 8:39:19 AM freemarker.log._JULLoggerFactory$JULLogger error SEVERE: Error executing FreeMarker template FreeMarker template error: The following has evaluated to null or missing: ==> ENVIRONMENT_HOST [in template "1db7f762-5305-42df-b7f7-62530552df3e" at line 18, column 172]


Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??


FTL stack trace ("~" means nesting-related):

Java stack trace (for programmers):

freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) at freemarker.core.EvalUtil.coerceModelToTextualCommon(EvalUtil.java:467) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:389) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:358) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100) at freemarker.core.DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:330) at freemarker.core.Environment.visit(Environment.java:336) at freemarker.core.Environment.process(Environment.java:309) at freemarker.template.Template.process(Template.java:384) at org.springframework.ui.freemarker.FreeMarkerTemplateUtils.processTemplateIntoString(FreeMarkerTemplateUtils.java:50) at io.gravitee.management.service.impl.PageServiceImpl.transformWithTemplate(PageServiceImpl.java:172) at io.gravitee.management.service.impl.PageServiceImpl.transformSwagger(PageServiceImpl.java:141) at sun.reflect.GeneratedMethodAccessor264.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) at com.sun.proxy.$Proxy55.transformSwagger(Unknown Source) at io.gravitee.management.service.impl.upgrade.SearchIndexUpgrader.lambda$null$0(SearchIndexUpgrader.java:68) at java.util.ArrayList.forEach(ArrayList.java:1257) at io.gravitee.management.service.impl.upgrade.SearchIndexUpgrader.lambda$upgrade$1(SearchIndexUpgrader.java:66) at java.lang.Iterable.forEach(Iterable.java:75) at io.gravitee.management.service.impl.upgrade.SearchIndexUpgrader.upgrade(SearchIndexUpgrader.java:60) at io.gravitee.management.service.impl.UpgraderServiceImpl.lambda$doStart$0(UpgraderServiceImpl.java:53) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:352) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at io.gravitee.management.service.impl.UpgraderServiceImpl.doStart(UpgraderServiceImpl.java:51) at io.gravitee.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:32) at io.gravitee.node.container.AbstractNode.doStart(AbstractNode.java:74) at io.gravitee.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:32) at io.gravitee.node.container.AbstractContainer.doStart(AbstractContainer.java:89) at io.gravitee.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:32) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at io.gravitee.management.standalone.boostrap.Bootstrap.start(Bootstrap.java:162) at io.gravitee.management.standalone.boostrap.Bootstrap.main(Bootstrap.java:171)

08:39:19.577 [graviteeio-node] ERROR i.g.m.service.impl.PageServiceImpl - An error occurs while transforming page content for 1db7f762-5305-42df-b7f7-62530552df3e freemarker.core.InvalidReferenceException: The following has evaluated to null or missing: ==> ENVIRONMENT_HOST [in template "1db7f762-5305-42df-b7f7-62530552df3e" at line 18, column 172]


Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??


FTL stack trace ("~" means nesting-related):

Error when using the UI to search for apis and sometimes applications:

gio_apim_management_api | 17:44:01.810 [graviteeio-node] INFO i.g.m.standalone.node.ManagementNode - Gravitee.io - Management API id[c8fa378a-7644-4ddf-ba37-8a7644fddf20] version[1.22.2] pid[1] build[292#${env.GIT_COMMIT}] jvm[Oracle Corporation/OpenJDK 64-Bit Server VM/25.181-b13] started in 112118 ms. gio_apim_management_api | Sep 20, 2021 5:45:05 PM org.glassfish.jersey.server.ServerRuntime$Responder writeResponse gio_apim_management_api | SEVERE: An I/O error has occurred while writing a response message entity to the container output stream. gio_apim_management_api | org.glassfish.jersey.server.internal.process.MappableException: org.eclipse.jetty.io.EofException gio_apim_management_api | at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:91) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163) gio_apim_management_api | at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1135) gio_apim_management_api | at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:662) gio_apim_management_api | at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:395) gio_apim_management_api | at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:385) gio_apim_management_api | at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:280) gio_apim_management_api | at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272) gio_apim_management_api | at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268) gio_apim_management_api | at org.glassfish.jersey.internal.Errors.process(Errors.java:316) gio_apim_management_api | at org.glassfish.jersey.internal.Errors.process(Errors.java:298) gio_apim_management_api | at org.glassfish.jersey.internal.Errors.process(Errors.java:268) gio_apim_management_api | at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289) gio_apim_management_api | at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256) gio_apim_management_api | at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703) gio_apim_management_api | at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416) gio_apim_management_api | at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370) gio_apim_management_api | at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389) gio_apim_management_api | at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342) gio_apim_management_api | at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229) gio_apim_management_api | at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) gio_apim_management_api | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) gio_apim_management_api | at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) gio_apim_management_api | at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158) gio_apim_management_api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at io.gravitee.management.security.filter.JWTAuthenticationFilter.doFilter(JWTAuthenticationFilter.java:123) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96) gio_apim_management_api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66) gio_apim_management_api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) gio_apim_management_api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) gio_apim_management_api | at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) gio_apim_management_api | at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) gio_apim_management_api | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) gio_apim_management_api | at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) gio_apim_management_api | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) gio_apim_management_api | at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) gio_apim_management_api | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) gio_apim_management_api | at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) gio_apim_management_api | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) gio_apim_management_api | at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) gio_apim_management_api | at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) gio_apim_management_api | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) gio_apim_management_api | at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) gio_apim_management_api | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) gio_apim_management_api | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) gio_apim_management_api | at org.eclipse.jetty.server.Server.handle(Server.java:531) gio_apim_management_api | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) gio_apim_management_api | at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) gio_apim_management_api | at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) gio_apim_management_api | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) gio_apim_management_api | at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) gio_apim_management_api | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) gio_apim_management_api | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) gio_apim_management_api | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) gio_apim_management_api | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) gio_apim_management_api | at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) gio_apim_management_api | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762) gio_apim_management_api | at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680) gio_apim_management_api | at java.lang.Thread.run(Thread.java:748) gio_apim_management_api | Caused by: org.eclipse.jetty.io.EofException gio_apim_management_api | at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:286) gio_apim_management_api | at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:429) gio_apim_management_api | at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:323) gio_apim_management_api | at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:380) gio_apim_management_api | at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:804) gio_apim_management_api | at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) gio_apim_management_api | at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) gio_apim_management_api | at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:538) gio_apim_management_api | at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:795) gio_apim_management_api | at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:846) gio_apim_management_api | at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:240) gio_apim_management_api | at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:216) gio_apim_management_api | at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:541) gio_apim_management_api | at org.springframework.security.web.util.OnCommittedResponseWrapper$SaveContextServletOutputStream.write(OnCommittedResponseWrapper.java:639) gio_apim_management_api | at org.glassfish.jersey.servlet.internal.ResponseWriter$NonCloseableOutputStreamWrapper.write(ResponseWriter.java:325) gio_apim_management_api | at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:224) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$UnCloseableOutputStream.write(WriterInterceptorExecutor.java:300) gio_apim_management_api | at com.fasterxml.jackson.core.json.UTF8JsonGenerator._flushBuffer(UTF8JsonGenerator.java:2085) gio_apim_management_api | at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeString(UTF8JsonGenerator.java:457) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.std.StringSerializer.serialize(StringSerializer.java:41) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:400) gio_apim_management_api | at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1392) gio_apim_management_api | at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:913) gio_apim_management_api | at org.glassfish.jersey.jackson.internal.jackson.jaxrs.base.ProviderBase.writeTo(ProviderBase.java:648) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:266) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:251) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163) gio_apim_management_api | at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:109) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163) gio_apim_management_api | at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:85) gio_apim_management_api | ... 84 more gio_apim_management_api | Caused by: java.io.IOException: Broken pipe gio_apim_management_api | at sun.nio.ch.FileDispatcherImpl.writev0(Native Method) gio_apim_management_api | at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:51) gio_apim_management_api | at sun.nio.ch.IOUtil.write(IOUtil.java:148) gio_apim_management_api | at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:504) gio_apim_management_api | at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:266) gio_apim_management_api |

Possible Solution

I have tried to fix this but I can't seem to find a solution.

Steps to Reproduce (for bugs)

  1. Change the docker-compose from version 1.x to use version graviteeio/gateway:1.22.2, graviteeio/management-api:1.22.2 and graviteeio/management-ui:1.22.2.
  2. Setup ES and DocumentDB on AWS
  3. Change the URIs on docker-compose.
  4. Restore mongodb to the DocumentDB on AWS
  5. Can consult application but not the API, and errors are being logged when launching gravitee.
brasseld commented 2 years ago

I think that one of your page is probably containing something wrong. This is from where the ${ENVIRONMENT_HOST} is coming...

AndreRog commented 2 years ago

I found this variable so, we have an API which on the pages sections contains something like this:

Environments

XX provides both Production and Staging environments for the XX Service:

Authentication

The XX Connect API uses OAuth2 Client Credentials authentication type to authenticate request. You can get authentication tokens using the following url: https://${ENVIRONMENT_HOST}/auth/realms/X-X/protocol/openid-connect/token. Please be aware that these tokens have a limited duration so you need to include refresh logic in the client code, so that the token gets refreshed automatically without breaking the user experience.

And when loading this page it seems it is trying to evaluate this expression? Why is it giving an error when I try to launch gravitee but it is running well on the live environments?

brasseld commented 2 years ago

Can you disable sanitization and try again ?

https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-standalone/gravitee-apim-rest-api-standalone-distribution/src/main/resources/config/gravitee.yml#L435

AndreRog commented 2 years ago

Can you disable sanitization and try again ?

https://github.com/gravitee-io/gravitee-api-management/blob/master/gravitee-apim-rest-api/gravitee-apim-rest-api-standalone/gravitee-apim-rest-api-standalone-distribution/src/main/resources/config/gravitee.yml#L435

I am running from your docker compose, and I don't know how I would do that, I would need to search. I went do my staging env simply deleted the {} and it does evaluate the expression anymore, i.e, no more errors when launching gravitee it seems ok.

But I still get the other error... When I go to the UI and then press the administration or API I got this error:

gio_apim_management_api | Sep 21, 2021 3:26:22 PM org.glassfish.jersey.server.ServerRuntime$Responder writeResponse gio_apim_management_api | SEVERE: An I/O error has occurred while writing a response message entity to the container output stream. gio_apim_management_api | org.glassfish.jersey.server.internal.process.MappableException: org.eclipse.jetty.io.EofException gio_apim_management_api | at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:91) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163) gio_apim_management_api | at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1135) gio_apim_management_api | at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:662) gio_apim_management_api | at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:395) gio_apim_management_api | at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:385) gio_apim_management_api | at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:280) gio_apim_management_api | at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272) gio_apim_management_api | at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268) gio_apim_management_api | at org.glassfish.jersey.internal.Errors.process(Errors.java:316) gio_apim_management_api | at org.glassfish.jersey.internal.Errors.process(Errors.java:298) gio_apim_management_api | at org.glassfish.jersey.internal.Errors.process(Errors.java:268) gio_apim_management_api | at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289) gio_apim_management_api | at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256) gio_apim_management_api | at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703) gio_apim_management_api | at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416) gio_apim_management_api | at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370) gio_apim_management_api | at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389) gio_apim_management_api | at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342) gio_apim_management_api | at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229) gio_apim_management_api | at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) gio_apim_management_api | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) gio_apim_management_api | at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) gio_apim_management_api | at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158) gio_apim_management_api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at io.gravitee.management.security.filter.JWTAuthenticationFilter.doFilter(JWTAuthenticationFilter.java:123) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96) gio_apim_management_api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66) gio_apim_management_api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) gio_apim_management_api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) gio_apim_management_api | at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) gio_apim_management_api | at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) gio_apim_management_api | at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) gio_apim_management_api | at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) gio_apim_management_api | at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) gio_apim_management_api | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) gio_apim_management_api | at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) gio_apim_management_api | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) gio_apim_management_api | at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) gio_apim_management_api | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) gio_apim_management_api | at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) gio_apim_management_api | at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) gio_apim_management_api | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) gio_apim_management_api | at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) gio_apim_management_api | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) gio_apim_management_api | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) gio_apim_management_api | at org.eclipse.jetty.server.Server.handle(Server.java:531) gio_apim_management_api | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) gio_apim_management_api | at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) gio_apim_management_api | at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) gio_apim_management_api | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) gio_apim_management_api | at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) gio_apim_management_api | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) gio_apim_management_api | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) gio_apim_management_api | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) gio_apim_management_api | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) gio_apim_management_api | at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) gio_apim_management_api | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762) gio_apim_management_api | at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680) gio_apim_management_api | at java.lang.Thread.run(Thread.java:748) gio_apim_management_api | Caused by: org.eclipse.jetty.io.EofException gio_apim_management_api | at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:286) gio_apim_management_api | at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:429) gio_apim_management_api | at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:323) gio_apim_management_api | at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:380) gio_apim_management_api | at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:804) gio_apim_management_api | at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) gio_apim_management_api | at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) gio_apim_management_api | at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:538) gio_apim_management_api | at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:795) gio_apim_management_api | at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:846) gio_apim_management_api | at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:240) gio_apim_management_api | at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:216) gio_apim_management_api | at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:541) gio_apim_management_api | at org.springframework.security.web.util.OnCommittedResponseWrapper$SaveContextServletOutputStream.write(OnCommittedResponseWrapper.java:639) gio_apim_management_api | at org.glassfish.jersey.servlet.internal.ResponseWriter$NonCloseableOutputStreamWrapper.write(ResponseWriter.java:325) gio_apim_management_api | at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:224) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$UnCloseableOutputStream.write(WriterInterceptorExecutor.java:300) gio_apim_management_api | at com.fasterxml.jackson.core.json.UTF8JsonGenerator._flushBuffer(UTF8JsonGenerator.java:2085) gio_apim_management_api | at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeString(UTF8JsonGenerator.java:457) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.std.StringSerializer.serialize(StringSerializer.java:41) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) gio_apim_management_api | at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:400) gio_apim_management_api | at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1392) gio_apim_management_api | at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:913) gio_apim_management_api | at org.glassfish.jersey.jackson.internal.jackson.jaxrs.base.ProviderBase.writeTo(ProviderBase.java:648) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:266) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:251) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163) gio_apim_management_api | at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:109) gio_apim_management_api | at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163) gio_apim_management_api | at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:85) gio_apim_management_api | ... 84 more gio_apim_management_api | Caused by: java.io.IOException: Broken pipe gio_apim_management_api | at sun.nio.ch.FileDispatcherImpl.writev0(Native Method) gio_apim_management_api | at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:51) gio_apim_management_api | at sun.nio.ch.IOUtil.write(IOUtil.java:148) gio_apim_management_api | at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:504) gio_apim_management_api | at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:266) gio_apim_management_api | ... 120 more