[MAGNOLIA-6337] Upgrade to Google Guice 4.0 Created: 10/Aug/15 Updated: 04/Mar/19 Resolved: 24/May/16 |
|
| Status: | Closed |
| Project: | Magnolia |
| Component/s: | None |
| Affects Version/s: | 5.4 |
| Fix Version/s: | 5.5 |
| Type: | Improvement | Priority: | Neutral |
| Reporter: | Richard Gange | Assignee: | Espen Jervidalo |
| Resolution: | Fixed | Votes: | 3 |
| Labels: | support | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||
| Template: |
|
||||||||||||||||||||
| Acceptance criteria: |
Empty
|
||||||||||||||||||||
| Task DoD: |
[ ]*
Doc/release notes changes? Comment present?
[ ]*
Downstream builds green?
[ ]*
Solution information and context easily available?
[ ]*
Tests
[ ]*
FixVersion filled and not yet released
[ ] 
Architecture Decision Record (ADR)
|
||||||||||||||||||||
| Date of First Response: | |||||||||||||||||||||
| Epic Link: | Update 3rd-party libraries for 5.5 | ||||||||||||||||||||
| Sprint: | Basel 45 | ||||||||||||||||||||
| Story Points: | 8 | ||||||||||||||||||||
| Description |
|
Currently we use Guice 3.0. Google Guice 4.0 brings in the following improvements: https://github.com/google/guice/wiki/Guice40 Apart from that we obviously should stick to the most actual versions of the used libraries, such upgrade is essential for further adopting of Java 8 (see http://tinyurl.com/njayy4c for further details) |
| Comments |
| Comment by Jan Haderka [ 27/Dec/15 ] |
|
Following our policy of not making upgrades of major libraries in minor releases, this ticket can be resolved earliest for Magnolia 5.5. |
| Comment by Nils Breunese [ 14/Mar/16 ] |
|
When using Java 8 lambdas with Guice 3 you get some pretty useless error messages from Guice. Upgrading to Guice 4 seems to solve this issue. |
| Comment by Rico Jansen [ 14/Mar/16 ] |
|
It is especially helpful since we occasionely get stacktraces like these: WARN info.magnolia.jcr.node2bean.impl.Node2BeanProcessorImpl 14.03.2016 15:46:17 -- Can't instantiate bean for /server/filters/cinemaRedirects com.google.inject.internal.util.$ComputationException: java.lang.ArrayIndexOutOfBoundsException: 52264 at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:553) at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:419) at com.google.inject.internal.util.$CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041) at com.google.inject.internal.util.$StackTraceElements.forMember(StackTraceElements.java:53) at com.google.inject.internal.Errors.formatSource(Errors.java:690) at com.google.inject.internal.Errors.formatInjectionPoint(Errors.java:720) at com.google.inject.internal.Errors.formatSource(Errors.java:684) at com.google.inject.internal.Errors.format(Errors.java:555) at com.google.inject.ProvisionException.getMessage(ProvisionException.java:59) at java.lang.Throwable.getLocalizedMessage(Throwable.java:391) at java.lang.Throwable.toString(Throwable.java:480) at java.lang.Throwable.<init>(Throwable.java:311) at java.lang.Exception.<init>(Exception.java:102) at info.magnolia.exception.MgnlException.<init>(MgnlException.java:55) at info.magnolia.jcr.node2bean.Node2BeanException.<init>(Node2BeanException.java:51) at info.magnolia.jcr.node2bean.impl.Node2BeanTransformerImpl.newBeanInstance(Node2BeanTransformerImpl.java:248) at info.magnolia.jcr.node2bean.impl.Node2BeanProcessorImpl.toBean(Node2BeanProcessorImpl.java:135) at info.magnolia.jcr.node2bean.impl.Node2BeanProcessorImpl.toMap(Node2BeanProcessorImpl.java:227) at info.magnolia.jcr.node2bean.impl.Node2BeanProcessorImpl.toBean(Node2BeanProcessorImpl.java:132) at info.magnolia.jcr.node2bean.impl.Node2BeanProcessorImpl.toBean(Node2BeanProcessorImpl.java:94) at info.magnolia.cms.filters.FilterManagerImpl.createConfiguredFilters(FilterManagerImpl.java:189) at info.magnolia.cms.filters.FilterManagerImpl.createRootFilter(FilterManagerImpl.java:167) at info.magnolia.cms.filters.FilterManagerImpl$2.doExec(FilterManagerImpl.java:108) at info.magnolia.context.MgnlContext$VoidOp.exec(MgnlContext.java:421) at info.magnolia.context.MgnlContext$VoidOp.exec(MgnlContext.java:418) at info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:392) at info.magnolia.cms.filters.FilterManagerImpl.init(FilterManagerImpl.java:104) at info.magnolia.cms.filters.MgnlMainFilter.init(MgnlMainFilter.java:82) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4809) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5485) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632) at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1763) 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:497) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618) at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565) 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:497) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1471) at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1312) at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1404) at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:832) 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:497) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323) at sun.rmi.transport.Transport$1.run(Transport.java:200) at sun.rmi.transport.Transport$1.run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:196) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$256(TCPTransport.java:683) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ArrayIndexOutOfBoundsException: 52264 at com.google.inject.internal.asm.$ClassReader.readClass(Unknown Source) at com.google.inject.internal.asm.$ClassReader.accept(Unknown Source) at com.google.inject.internal.asm.$ClassReader.accept(Unknown Source) at com.google.inject.internal.util.$LineNumbers.<init>(LineNumbers.java:62) at com.google.inject.internal.util.$StackTraceElements$1.apply(StackTraceElements.java:36) at com.google.inject.internal.util.$StackTraceElements$1.apply(StackTraceElements.java:33) at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:549) ... 75 more WARN info.magnolia.jcr.node2bean.impl.Node2BeanProcessorImpl 14.03.2016 15:46:17 -- can't instantiate bean of type nl.vpro.magnolia.cinema.filter.CinemaRedirectFilter for node /server/filters/cinemaRedirects Those get turned into real exceptions in Guice 4.0 so you actually know what is going wrong. |
| Comment by Richard Gange [ 26/May/16 ] |
|
As far as I know this upgrade should fix |