Foros de discusión
Problemas cluster tras actualización a GA6
Alberto de Francisco Martín, modificado hace 7 años.
Problemas cluster tras actualización a GA6
New Member Mensajes: 17 Fecha de incorporación: 1/02/10 Mensajes recientes
Muy buenas a todos.
Os comento mi caso a ver si podeis arrojarme algo de luz.
Disponía de un cluster configurado y funcionando correctamente bajo la GA4.
Actualmente me encuentro migrando de GA4 a GA6, actualización realizada mediante el proceso llamado "de bundle"; ya sabeis, bajando bundle, configurando y apuntando a BBDD; etc.
El proceso de actualización no me funcionaba con la configuración de cluster, por lo que decidí comentar ésta, actualizar y reconfigurar cluster.
Ya realicé el proceso de actualización pero el cluster sigue sin ser funcional.
Me arroja el siguiente error:
Mi configuración, antes funcional, era la siguiente:
Configuro mediante archivo de configuración de jgroups (tcp.xml):
Y mi configuración en relación a cluster en el portal-ext-properties es la siguiente:
Además, le doy valor a las variables de jgroups mediante, bien el fichero setenv o en las propiedades de servicio si lo levanto como tal:
Como es decía, ésta configuración hasta el momento de la actualización era totalmente válida.
¿Qué creeis que puede estar pasando?
¿Me arrojais algo de luz?
Os comento mi caso a ver si podeis arrojarme algo de luz.
Disponía de un cluster configurado y funcionando correctamente bajo la GA4.
Actualmente me encuentro migrando de GA4 a GA6, actualización realizada mediante el proceso llamado "de bundle"; ya sabeis, bajando bundle, configurando y apuntando a BBDD; etc.
El proceso de actualización no me funcionaba con la configuración de cluster, por lo que decidí comentar ésta, actualizar y reconfigurar cluster.
Ya realicé el proceso de actualización pero el cluster sigue sin ser funcional.
Me arroja el siguiente error:
04:01:58,998 INFO [localhost-startStop-1][LiferayCacheManagerPeerProviderFactory:72] portalPropertyKey ehcache.multi.vm.config.location.peerProviderProperties has value [file=/custom_jgroups/tcp_new.xml]
04:01:59,014 ERROR [localhost-startStop-1][ContextLoader:206] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.liferay.portal.kernel.cache.MultiVMPool' defined in class path resource [META-INF/util-spring.xml]: Cannot resolve reference to bean 'com.liferay.portal.kernel.cache.MultiVMPortalCacheManager' while setting bean property 'portalCacheManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.liferay.portal.kernel.cache.MultiVMPortalCacheManager' defined in class path resource [META-INF/util-spring.xml]: Cannot create inner bean 'com.liferay.portal.cache.ehcache.EhcachePortalCacheManager#7c909f39' of type [com.liferay.portal.cache.ehcache.EhcachePortalCacheManager] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.liferay.portal.cache.ehcache.EhcachePortalCacheManager#7c909f39' defined in class path resource [META-INF/util-spring.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: java.lang.NoSuchMethodError: net.sf.ehcache.util.ClassLoaderUtil.getStandardClassLoader()Ljava/lang/ClassLoader;
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1327)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1085)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:516)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at com.liferay.portal.spring.context.PortalContextLoaderListener.contextInitialized(PortalContextLoaderListener.java:246)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528)
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:652)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1912)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.liferay.portal.kernel.cache.MultiVMPortalCacheManager' defined in class path resource [META-INF/util-spring.xml]: Cannot create inner bean 'com.liferay.portal.cache.ehcache.EhcachePortalCacheManager#7c909f39' of type [com.liferay.portal.cache.ehcache.EhcachePortalCacheManager] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.liferay.portal.cache.ehcache.EhcachePortalCacheManager#7c909f39' defined in class path resource [META-INF/util-spring.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: java.lang.NoSuchMethodError: net.sf.ehcache.util.ClassLoaderUtil.getStandardClassLoader()Ljava/lang/ClassLoader;
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:281)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:120)
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:630)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:441)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:982)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:878)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:484)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
... 29 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.liferay.portal.cache.ehcache.EhcachePortalCacheManager#7c909f39' defined in class path resource [META-INF/util-spring.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: java.lang.NoSuchMethodError: net.sf.ehcache.util.ClassLoaderUtil.getStandardClassLoader()Ljava/lang/ClassLoader;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1422)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:518)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:270)
... 41 more
Caused by: net.sf.ehcache.CacheException: java.lang.NoSuchMethodError: net.sf.ehcache.util.ClassLoaderUtil.getStandardClassLoader()Ljava/lang/ClassLoader;
at net.sf.ehcache.CacheManager.init(CacheManager.java:419)
at net.sf.ehcache.CacheManager.<init>(CacheManager.java:264)
at com.liferay.portal.cache.ehcache.CacheManagerUtil.createCacheManager(CacheManagerUtil.java:38)
at com.liferay.portal.cache.ehcache.EhcachePortalCacheManager.afterPropertiesSet(EhcachePortalCacheManager.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1546)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1487)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1419)
... 44 more
Caused by: java.lang.NoSuchMethodError: net.sf.ehcache.util.ClassLoaderUtil.getStandardClassLoader()Ljava/lang/ClassLoader;
at net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory.createCachePeerProvider(JGroupsCacheManagerPeerProviderFactory.java:61)
at com.liferay.portal.cache.ehcache.LiferayCacheManagerPeerProviderFactory.createCachePeerProvider(LiferayCacheManagerPeerProviderFactory.java:96)
at net.sf.ehcache.config.ConfigurationHelper.createCachePeerProviders(ConfigurationHelper.java:136)
at net.sf.ehcache.CacheManager.configure(CacheManager.java:758)
at net.sf.ehcache.CacheManager.doInit(CacheManager.java:464)
at net.sf.ehcache.CacheManager.init(CacheManager.java:388)
... 54 more</init>
Mi configuración, antes funcional, era la siguiente:
Configuro mediante archivo de configuración de jgroups (tcp.xml):
<config xmlns="urn:org:jgroups" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="urn:org:jgroups http://www.jgroups.org/schema/JGroups-3.1.xsd">
<tcp singleton_name="liferay" bind_port="7800" loopback="false" recv_buf_size="${tcp.recv_buf_size:5M}" send_buf_size="${tcp.send_buf_size:640K}" max_bundle_size="64K" max_bundle_timeout="30" enable_bundling="true" use_send_queues="true" sock_conn_timeout="300" timer_type="old" timer.min_threads="4" timer.max_threads="10" timer.keep_alive_time="3000" timer.queue_max_size="500" thread_pool.enabled="true" thread_pool.min_threads="1" thread_pool.max_threads="10" thread_pool.keep_alive_time="5000" thread_pool.queue_enabled="false" thread_pool.queue_max_size="100" thread_pool.rejection_policy="discard" oob_thread_pool.enabled="true" oob_thread_pool.min_threads="1" oob_thread_pool.max_threads="8" oob_thread_pool.keep_alive_time="5000" oob_thread_pool.queue_enabled="false" oob_thread_pool.queue_max_size="100" oob_thread_pool.rejection_policy="discard" />
<tcpping timeout="5000" initial_hosts="${jgroups.tcpping.initial_hosts:localhost[7800],localhost[7801]}" port_range="1" num_initial_members="10" />
<merge2 min_interval="10000" max_interval="30000" />
<fd_sock />
<fd timeout="3000" max_tries="3" />
<verify_suspect timeout="1500" />
<barrier />
<pbcast.nakack2 use_mcast_xmit="false" discard_delivered_msgs="true" />
<unicast />
<pbcast.stable stability_delay="1000" desired_avg_gossip="50000" max_bytes="4M" />
<pbcast.gms print_local_addr="true" join_timeout="3000" view_bundling="true" />
<ufc max_credits="2M" min_threshold="0.4" />
<mfc max_credits="2M" min_threshold="0.4" />
<frag2 frag_size="60K" />
<!--RSVP resend_interval="2000" timeout="10000"/-->
<pbcast.state_transfer />
</config>
Y mi configuración en relación a cluster en el portal-ext-properties es la siguiente:
cluster.link.channel.properties.control=/custom_jgroups/tcp_new.xml
cluster.link.channel.properties.transport.0=/custom_jgroups/tcp_new.xml
cluster.link.enabled=true
cluster.link.autodetect.address=MAQAPP40:3306
ehcache.bootstrap.cache.loader.factory=com.liferay.portal.cache.ehcache.JGroupsBootstrapCacheLoaderFactory
ehcache.cache.event.listener.factory=net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory
ehcache.cache.manager.peer.provider.factory=net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory
ehcache.multi.vm.config.location.peerProviderProperties=file=/custom_jgroups/tcp_new.xml
lucene.replicate.write=true
lucene.dir=D:/liferay-portal-6.2-ce-ga6/lucene/
net.sf.ehcache.configurationResourceName.peerProviderProperties=file=/custom_jgroups/tcp_new.xml
cluster.executor.debug.enabled=true
Además, le doy valor a las variables de jgroups mediante, bien el fichero setenv o en las propiedades de servicio si lo levanto como tal:
set "CATALINA_OPTS=%CATALINA_OPTS% -Dfile.encoding=UTF8 -Djava.net.preferIPv4Stack=true -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false -Duser.timezone=GMT -Xmx8096m -XX:MaxPermSize=512m"
set "CATALINA_OPTS=%CATALINA_OPTS% -Djgroups.bind_addr=MAQAPP08 -Djgroups.bind_port=7800"
set "CATALINA_OPTS=%CATALINA_OPTS% -Djgroups.tcpping.initial_hosts=172.15.32.64[7800],172.15.32.65[7800]"
Como es decía, ésta configuración hasta el momento de la actualización era totalmente válida.
¿Qué creeis que puede estar pasando?
¿Me arrojais algo de luz?
Miguel Ángel Júlvez, modificado hace 7 años.
RE: Problemas cluster tras actualización a GA6
Junior Member Mensajes: 63 Fecha de incorporación: 29/03/11 Mensajes recientes
Juan Gonzalez, modificado hace 7 años.
RE: Problemas cluster tras actualización a GA6
Liferay Legend Mensajes: 3089 Fecha de incorporación: 28/10/08 Mensajes recientes
Hola Alberto.
Como ha dicho Miguel Júlvez, en ese LPS tienes la solución. Adjunté un ehcache-jgroupsreplication.jar para que lo reemplaces y ya debería funcionar.
Como ha dicho Miguel Júlvez, en ese LPS tienes la solución. Adjunté un ehcache-jgroupsreplication.jar para que lo reemplaces y ya debería funcionar.
Alberto de Francisco Martín, modificado hace 7 años.
RE: Problemas cluster tras actualización a GA6
New Member Mensajes: 17 Fecha de incorporación: 1/02/10 Mensajes recientes
Sois grandes !
Me dió la pista @Miguel Angel y, a falta de realizar pruebas exhaustivas, el proceso ya arranca y traslada bien las propiedades de jGroups; lo cual es un paso teniendo en cuenta que me estaba volviendo ya un poco loco.
En cuanto realice pruebas os doy el ok 100%; pero tiene muy buena pinta.
Gracias por el fix @Juan. Por otra parte, Miguel Angel tambien me ha advertido que la librería adjuntada fue compilada con JDK8, tal y como indicas en la issue. ¿Crees que es necesario que la compile para JDK7 en mi caso?
Un saludo y gracias a ambos.
Me dió la pista @Miguel Angel y, a falta de realizar pruebas exhaustivas, el proceso ya arranca y traslada bien las propiedades de jGroups; lo cual es un paso teniendo en cuenta que me estaba volviendo ya un poco loco.
En cuanto realice pruebas os doy el ok 100%; pero tiene muy buena pinta.
Gracias por el fix @Juan. Por otra parte, Miguel Angel tambien me ha advertido que la librería adjuntada fue compilada con JDK8, tal y como indicas en la issue. ¿Crees que es necesario que la compile para JDK7 en mi caso?
Un saludo y gracias a ambos.
Juan Gonzalez, modificado hace 7 años.
RE: Problemas cluster tras actualización a GA6
Liferay Legend Mensajes: 3089 Fecha de incorporación: 28/10/08 Mensajes recientesAlberto de Francisco Martín:
Sois grandes !
Me dió la pista @Miguel Angel y, a falta de realizar pruebas exhaustivas, el proceso ya arranca y traslada bien las propiedades de jGroups; lo cual es un paso teniendo en cuenta que me estaba volviendo ya un poco loco.
En cuanto realice pruebas os doy el ok 100%; pero tiene muy buena pinta.
Gracias por el fix @Juan. Por otra parte, Miguel Angel tambien me ha advertido que la librería adjuntada fue compilada con JDK8, tal y como indicas en la issue. ¿Crees que es necesario que la compile para JDK7 en mi caso?
Un saludo y gracias a ambos.
Me temo que si usas JDK 7 tendrás que compilarlo en esa versión. Simplemente bájate el código de este repositorio Subversion: http://svn.terracotta.org/svn/ehcache/trunk/jgroupsreplication/ y ejecuta mvn install.
Un saludo.