I`m very confused about the high memory consumption of my simple Vaadin 14 sample app. I created a Polymer Template to display this achievement box:
http://files.tobsefritz.de/persistent/vaadin-forum/polymer-temlate.png
The template contains three fields (title, experience, skills):
<div id="achievement">
<div id="title">[[title]
]</div>
<div id="footer">
<div id="experience">
<div id="xp">[[experience]
]</div>
<div id="skill-points">[[skills]
]</div>
</div>
<div id="actions">
<iron-icon class="action" icon="vaadin:star"></iron-icon>
<iron-icon class="action" icon="vaadin:comment"></iron-icon>
<iron-icon class="action" icon="vaadin:pencil"></iron-icon></div>
</div>
</div>
</div>`;
Now I added 37 of these lines in a HorizonalLayout
View:
AchievementComponent achievementLine = new AchievementComponent();
achievementLine.getModel().setTitle("Invide a friend");
achievementLine.getModel().setExperience("+200 XP");
achievementLine.getModel().setSkills("CHA 7");
add(achievementLine);
Opening a page with this achievement lines drains 385 MB during TemplateDataAnalyzer.parseTemplate
. Is this a normal behavior for using 37 HTML templates on a page? The space will be freed after that, but is so high, that my 512MB Heroku pod gets killed immediately.
The fields will be filled with very short texts. All model data was already present in memory. No database is used to load it. The server runs in production mode on Java 8.
You can crash it by yourself by opening:
https://clean-code-journal.herokuapp.com/achievements
Full source code: https://github.com/TobseF/CleanCodeDeveloperJournal/blob/dev/src/main/java/org/cleancode/journal/view/AchievementsView.java
Any idea what I`m doing wrong? Or do I really need so much heap for one page with polymer template? This is the only reason why I booked a root server to deploy my demo. I was naive and thought 512 MB should be enough.
Full Stacktrace:
2019-12-25 09:39:48.075 ERROR 4 --- [tp1368594774-18]
c.v.flow.router.InternalServerError : There was an exception while trying to navigate to 'achievements'
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.cleancode.journal.view.AchievementsView': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.cleancode.journal.view.AchievementsView]
: Constructor threw exception; nested exception is java.lang.OutOfMemoryError: Java heap space
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:314) ~[spring-beans-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:295) ~[spring-beans-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1358) ~[spring-beans-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
2019-12-25T09:39:48.078652+00:00 app[web.1]
: at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1204) ~[spring-beans-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:307) ~[spring-beans-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at com.vaadin.flow.spring.SpringInstantiator.getOrCreate(SpringInstantiator.java:117) ~[vaadin-spring-12.1.2.jar!/:na]
at com.vaadin.flow.di.Instantiator.createRouteTarget(Instantiator.java:158) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.router.internal.AbstractNavigationStateRenderer.lambda$getRouteTarget$1(AbstractNavigationStateRenderer.java:127) ~[flow-server-2.1.2.jar!/:2.1.2]
at java.util.Optional.orElseGet(Optional.java:267) ~[na:1.8.0_232-heroku]
at com.vaadin.flow.router.internal.AbstractNavigationStateRenderer.getRouteTarget(AbstractNavigationStateRenderer.java:126) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.router.internal.AbstractNavigationStateRenderer.createChain(AbstractNavigationStateRenderer.java:314) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.router.internal.AbstractNavigationStateRenderer.handle(AbstractNavigationStateRenderer.java:195) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.router.Router.handleNavigation(Router.java:223) [flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.router.Router.navigate(Router.java:194) [flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.router.Router.lambda$initializeUI$caa7783a$1(Router.java:90) [flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.server.communication.rpc.NavigationRpcHandler.handle(NavigationRpcHandler.java:66) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocationData(ServerRpcHandler.java:400) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.server.communication.ServerRpcHandler.lambda$handleInvocations$1(ServerRpcHandler.java:381) ~[flow-server-2.1.2.jar!/:2.1.2]
at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_232-heroku]
at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:381) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:316) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:89) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1540) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:247) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.spring.SpringServlet.service(SpringServlet.java:95) ~[vaadin-spring-12.1.2.jar!/:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[jakarta.servlet-api-4.0.3.jar!/:4.0.3]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:760) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:547) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:608) ~[jetty-security-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:161) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:79) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.springframework.web.servlet.mvc.ServletForwardingController.handleRequestInternal(ServletForwardingController.java:141) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:52) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:523) ~[jakarta.servlet-api-4.0.3.jar!/:4.0.3]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[jakarta.servlet-api-4.0.3.jar!/:4.0.3]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:760) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:226) ~[websocket-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:590) ~[jetty-security-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485) ~[jetty-servlet-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.Server.handle(Server.java:500) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270) ~[jetty-server-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[jetty-io-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) ~[jetty-io-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) ~[jetty-io-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[jetty-util-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[jetty-util-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[jetty-util-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) ~[jetty-util-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388) ~[jetty-util-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806) ~[jetty-util-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938) ~[jetty-util-9.4.24.v20191120.jar!/:9.4.24.v20191120]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_232-heroku]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.cleancode.journal.view.AchievementsView]
: Constructor threw exception; nested exception is java.lang.OutOfMemoryError: Java heap space
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:213) ~[spring-beans-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:117) ~[spring-beans-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:310) ~[spring-beans-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
... 99 common frames omitted
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3332) ~[na:1.8.0_232-heroku]
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124) ~[na:1.8.0_232-heroku]
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:596) ~[na:1.8.0_232-heroku]
at java.lang.StringBuilder.append(StringBuilder.java:190) ~[na:1.8.0_232-heroku]
at org.apache.commons.io.output.StringBuilderWriter.write(StringBuilderWriter.java:143) ~[commons-io-2.5.jar!/:2.5]
2019-12-25T09:39:48.078829+00:00 app[web.1]
: at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2370) ~[commons-io-2.5.jar!/:2.5]
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2348) ~[commons-io-2.5.jar!/:2.5]
at org.apache.commons.io.IOUtils.copy(IOUtils.java:2325) ~[commons-io-2.5.jar!/:2.5]
at org.apache.commons.io.IOUtils.copy(IOUtils.java:2273) ~[commons-io-2.5.jar!/:2.5]
at org.apache.commons.io.IOUtils.toString(IOUtils.java:1041) ~[commons-io-2.5.jar!/:2.5]
at com.vaadin.flow.server.frontend.FrontendUtils.getStatsContent(FrontendUtils.java:450) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.component.polymertemplate.NpmTemplateParser.getSourcesFromStats(NpmTemplateParser.java:176) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.component.polymertemplate.NpmTemplateParser.getTemplateContent(NpmTemplateParser.java:107) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.component.polymertemplate.TemplateDataAnalyzer.parseTemplate(TemplateDataAnalyzer.java:200) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.component.polymertemplate.TemplateInitializer.lambda$null$23ee5b4f$1(TemplateInitializer.java:86) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.component.polymertemplate.TemplateInitializer$$Lambda$986/1704384918.apply(Unknown Source) ~[na:na]
at com.vaadin.flow.internal.ReflectionCache.lambda$wrapValueProvider$d0062d93$1(ReflectionCache.java:84) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.internal.ReflectionCache$$Lambda$627/1880015697.apply(Unknown Source) ~[na:na]
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[na:1.8.0_232-heroku]
at com.vaadin.flow.internal.ReflectionCache.get(ReflectionCache.java:101) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.component.polymertemplate.TemplateInitializer.<init>(TemplateInitializer.java:87) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.component.polymertemplate.PolymerTemplate.<init>(PolymerTemplate.java:88) ~[flow-server-2.1.2.jar!/:2.1.2]
at com.vaadin.flow.component.polymertemplate.PolymerTemplate.<init>(PolymerTemplate.java:103) ~[flow-server-2.1.2.jar!/:2.1.2]
at org.cleancode.journal.component.AchievementComponent.<init>(AchievementComponent.java:11) ~[classes!/:0.0.0-SNAPSHOT]
at org.cleancode.journal.view.AchievementsView.addAchievement(AchievementsView.java:37) ~[classes!/:0.0.0-SNAPSHOT]
2019-12-25T09:39:48.078859+00:00 app[web.1]
: at org.cleancode.journal.view.AchievementsView$$Lambda$983/1492732314.accept(Unknown Source) ~[na:na]
at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_232-heroku]
at org.cleancode.journal.view.AchievementsView.addAchievements(AchievementsView.java:32) ~[classes!/:0.0.0-SNAPSHOT]
at org.cleancode.journal.view.AchievementsView$$Lambda$982/2018400767.accept(Unknown Source) ~[na:na]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[na:1.8.0_232-heroku]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_232-heroku]
at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:1.8.0_232-heroku]