[mod_cluster-dev] ClastCastException on redeployment of mod-cluster.sar

Brian Stansberry brian.stansberry at redhat.com
Wed Aug 5 10:35:13 EDT 2009


Sorry; Paul and I chatted about this Friday but I didn't see this thread 
so didn't comment here.

The problem is HAModClusterService is storing items in the 
DistributedReplicantManager whose classes can get redeployed. When that 
happens, items previously replicated from other nodes can no longer be 
accessed. This is the first DRM usage that does this; all previous DRM 
usages stored String or some class from server/all/lib. So... well, 
pioneers get arrows in their backs.

A workaround would be to move the mod-cluster.jar from the 
mod-cluster.sar and place it in the $JBOSS_HOME/common/lib directory.

A real solution is likely going to be something like:

HAModClusterService stores in the DRM a SimpleCachableMarshalledValue[1] 
wrapping the real value. We then add a utility function 
HAModClusterService calls to work with objects from  the DRM/sanitize 
them for use. It can catch any CCE, call toByteArray() on the marshalled 
value, and then re-read. The CCE would be rare as this is not something 
likely to be re-deployed.

[1] 
http://anonsvn.jboss.org/repos/jbossas/projects/cluster/ha-server-api/trunk/src/main/java/org/jboss/ha/framework/server/SimpleCachableMarshalledValue.java

Paul Ferraro wrote:
> https://jira.jboss.org/jira/browse/MODCLUSTER-88
> 
> I'll have to get our classloader-guru (aka Brian) to look at this one.
> 
> On Fri, 2009-07-31 at 15:54 +0200, Bela Ban wrote:
>> When I touched mod-cluster.sar/META-INF/mod-cluster-jboss-beans.xml, I 
>> got the exception below.
>>
>> Can someone look into this ?
>>
>>
>> 2009-07-31 09:52:40,084 INFO  
>> [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) 
>> undeploy, ctxPath=/invoker
>> 2009-07-31 09:52:40,168 INFO  
>> [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) 
>> undeploy, ctxPath=/juddi
>> 2009-07-31 09:52:40,170 INFO  
>> [org.apache.juddi.registry.RegistryServlet] (HDScanner) jUDDI Stopping: 
>> Cleaning up existing resources.
>> 2009-07-31 09:52:40,172 INFO  
>> [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) 
>> undeploy, ctxPath=/jbossws
>> 2009-07-31 09:52:40,176 INFO  
>> [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) 
>> undeploy, ctxPath=/web-console
>> 2009-07-31 09:52:40,182 INFO  
>> [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) 
>> undeploy, ctxPath=/admin-console
>> 2009-07-31 09:52:40,186 INFO  
>> [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) 
>> undeploy, ctxPath=/jmx-console
>> 2009-07-31 09:52:40,225 INFO  [org.apache.coyote.http11.Http11Protocol] 
>> (HDScanner) Pausing Coyote HTTP/1.1 on http-10.254.203.178-8080
>> 2009-07-31 09:52:40,230 INFO  [org.apache.coyote.http11.Http11Protocol] 
>> (HDScanner) Stopping Coyote HTTP/1.1 on http-10.254.203.178-8080
>> 2009-07-31 09:52:40,231 INFO  [org.apache.coyote.ajp.AjpProtocol] 
>> (HDScanner) Pausing Coyote AJP/1.3 on ajp-10.254.203.178-8009
>> 2009-07-31 09:52:40,236 INFO  [org.apache.coyote.ajp.AjpProtocol] 
>> (HDScanner) Stopping Coyote AJP/1.3 on ajp-10.254.203.178-8009
>> 2009-07-31 09:52:40,292 INFO  [org.apache.catalina.core.StandardService] 
>> (HDScanner) Stopping service jboss.web
>> 2009-07-31 09:52:41,506 ERROR 
>> [org.jboss.kernel.plugins.dependency.AbstractKernelController] 
>> (HDScanner) Error installing to Start: name=HAModClusterService 
>> state=Create mode=On Demand requiredState=Installed
>> java.lang.ClassCastException: 
>> org.jboss.modcluster.ha.ModClusterServiceDRMEntry cannot be cast to 
>> org.jboss.modcluster.ha.ModClusterServiceDRMEntry
>>         at 
>> org.jboss.modcluster.ha.HAModClusterService.narrowCandidateList(HAModClusterService.java:496)
>>         at 
>> org.jboss.modcluster.ha.HAModClusterService.getElectionCandidates(HAModClusterService.java:477)
>>         at 
>> org.jboss.ha.framework.server.HASingletonImpl.election(HASingletonImpl.java:206)
>>         at 
>> org.jboss.ha.framework.server.HASingletonImpl.elected(HASingletonImpl.java:199)
>>         at 
>> org.jboss.ha.framework.server.HASingletonImpl.partitionTopologyChanged(HASingletonImpl.java:162)
>>         at 
>> org.jboss.ha.framework.server.HASingletonImpl.registerDRMListener(HASingletonImpl.java:124)
>>         at 
>> org.jboss.ha.framework.server.HAServiceImpl.start(HAServiceImpl.java:180)
>>         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:616)
>>         at 
>> org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
>>         at 
>> org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
>>         at 
>> org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
>>         at 
>> org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
>>         at 
>> org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
>>         at 
>> org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
>>         at 
>> org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
>>         at 
>> org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
>>         at 
>> org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
>>         at 
>> org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
>>         at 
>> org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
>>         at 
>> org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
>>         at 
>> org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
>>         at 
>> org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
>>         at 
>> org.jboss.system.ServiceController.doChange(ServiceController.java:688)
>>         at 
>> org.jboss.system.ServiceController.start(ServiceController.java:460)
>>         at 
>> org.jboss.system.microcontainer.jmx.ServiceControllerStartStopLifecycleCallback.install(ServiceControllerStartStopLifecycleCallback.java:44)
>>         at sun.reflect.GeneratedMethodAccessor252.invoke(Unknown Source)
>>         at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>         at java.lang.reflect.Method.invoke(Method.java:616)
>>         at 
>> org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
>>         at 
>> org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
>>         at 
>> org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
>>         at 
>> org.jboss.beans.info.plugins.AbstractBeanInfo.invoke(AbstractBeanInfo.java:300)
>>         at 
>> org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext.invoke(AbstractKernelControllerContext.java:286)
>>         at 
>> org.jboss.dependency.plugins.AbstractLifecycleCallbackItem.install(AbstractLifecycleCallbackItem.java:87)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.handleLifecycleCallbacks(AbstractController.java:1568)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.handleInstallLifecycleCallbacks(AbstractController.java:1533)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:943)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
>>         at 
>> org.jboss.system.ServiceController.doChange(ServiceController.java:688)
>>         at 
>> org.jboss.system.ServiceController.start(ServiceController.java:460)
>>         at 
>> org.jboss.system.microcontainer.jmx.ServiceControllerStartStopLifecycleCallback.install(ServiceControllerStartStopLifecycleCallback.java:44)
>>         at sun.reflect.GeneratedMethodAccessor252.invoke(Unknown Source)
>>         at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>         at java.lang.reflect.Method.invoke(Method.java:616)
>>         at 
>> org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
>>         at 
>> org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
>>         at 
>> org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
>>         at 
>> org.jboss.beans.info.plugins.AbstractBeanInfo.invoke(AbstractBeanInfo.java:300)
>>         at 
>> org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext.invoke(AbstractKernelControllerContext.java:286)
>>         at 
>> org.jboss.dependency.plugins.AbstractLifecycleCallbackItem.install(AbstractLifecycleCallbackItem.java:87)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.handleLifecycleCallbacks(AbstractController.java:1568)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.handleInstallLifecycleCallbacks(AbstractController.java:1533)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:943)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
>>         at 
>> org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:121)
>>         at 
>> org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:51)
>>         at 
>> org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
>>         at 
>> org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
>>         at 
>> org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
>>         at 
>> org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
>>         at 
>> org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
>>         at 
>> org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
>>         at 
>> org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
>>         at 
>> org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
>>         at 
>> org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
>>         at 
>> org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
>>         at 
>> org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
>>         at 
>> org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
>>         at 
>> org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:362)
>>         at 
>> org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:255)
>>         at 
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>         at 
>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
>>         at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
>>         at 
>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165)
>>         at 
>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
>>         at 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>         at 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>         at java.lang.Thread.run(Thread.java:636)
>> 2009-07-31 09:52:41,530 WARN  
>> [org.jboss.system.server.profileservice.hotdeploy.HDScanner] (HDScanner) 
>> Failed to process changes
>> org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of 
>> incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
>>
>> DEPLOYMENTS IN ERROR:
>>   Deployment "HAModClusterService" is in error due to the following 
>> reason(s): java.lang.ClassCastException: 
>> org.jboss.modcluster.ha.ModClusterServiceDRMEntry cannot be cast to 
>> org.jboss.modcluster.ha.ModClusterServiceDRMEntry
>>
>>         at 
>> org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:993)
>>         at 
>> org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:939)
>>         at 
>> org.jboss.deployers.plugins.main.MainDeployerImpl.checkComplete(MainDeployerImpl.java:873)
>>         at 
>> org.jboss.system.server.profileservice.repository.MainDeployerAdapter.checkComplete(MainDeployerAdapter.java:128)
>>         at 
>> org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:369)
>>         at 
>> org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:255)
>>         at 
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>         at 
>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
>>         at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
>>         at 
>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165)
>>         at 
>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
>>         at 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>         at 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>         at java.lang.Thread.run(Thread.java:636)
>>
> 
> 
> _______________________________________________
> mod_cluster-dev mailing list
> mod_cluster-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/mod_cluster-dev


-- 
Brian Stansberry
Lead, AS Clustering
JBoss by Red Hat


More information about the mod_cluster-dev mailing list