[hibernate-issues] [Hibernate-JIRA] Closed: (HHH-3234) Re-assembling entity from clustered JBoss Cache may fail with "argument type mismatch"

Max Rydahl Andersen (JIRA) noreply at atlassian.com
Mon Apr 14 11:39:33 EDT 2008


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-3234?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Max Rydahl Andersen closed HHH-3234.
------------------------------------

    Resolution: Duplicate

> Re-assembling entity from clustered JBoss Cache may fail with "argument type mismatch"
> --------------------------------------------------------------------------------------
>
>                 Key: HHH-3234
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3234
>             Project: Hibernate3
>          Issue Type: Bug
>    Affects Versions: 3.2.4.sp1
>         Environment: 3.2.4.sp1 in JBoss 4.2.2 GA, with MySQL 5.0.32 ( JBoss log also reports Hibernate EntityManager 3.2.1.GA, Hibernate Annotations 3.2.1.GA )
>            Reporter: Peter Johnson
>
> My application is configured for Hibernate to use the JBoss Cache TreeCache and I have the application deployed in a JBoss cluster.  For some reason, with the latest deployment of my software (probably coincidentally when I moved to JBoss Seam 2.0) I started running into a problem where I would get an IllegalArgumentException when Hibernate pulled entities out of the replicated instance of the cache.
> It looks like when Hibernate pulls values out of the cache and attempts to re-assemble an entity from a CacheEntry, it tries to put a value into the wrong property of the entity.  My entity has several int fields and a single String field.  The full stack trace is at the end of this description.  
> Looking briefly at the source for CacheEntry, it appears to store the entity's property values in an array, and when it later obtains the list of properties (from entity metadata) in order to re-assemble the entity, it assumes the order will match the order of the value array in the CacheEntry.  So in my case, either the property values must be in a different order in the second JVM's cache instance, or the list of properties in the entity metadata must be different.
> Looking at the printDetails of the EJB3EntityTreeCache MBean in both JBoss instances, the CacheEntries seem to have the values in the same order--at least it prints the values in the same order on each instance.  This leads me to believe that the entity metadata identifies the properties in a different order in the two JVMs.  (I don't have definitive proof, however).
> Setting hibernate.cache.use_structured_entries to "true" works around the problem.
> 2008-04-07 14:52:07,590 ERROR [org.hibernate.property.BasicPropertyAccessor] IllegalArgumentException in class: com.zattoo.channelserver.entity.permission.AbstractPermissionRule, setter method of property: rule 
> 2008-04-07 14:52:07,590 ERROR [org.hibernate.property.BasicPropertyAccessor] expected type: java.lang.String, actual value: java.lang.Integer 
> 2008-04-07 14:52:07,591 INFO [org.hibernate.event.def.DefaultLoadEventListener] Error performing load command 
> org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.zattoo.channelserver.entity.permission.AbstractPermissionRule.rule 
> at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104) 
> at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337) 
> at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:200) 
> at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3566) 
> at org.hibernate.cache.entry.CacheEntry.assemble(CacheEntry.java:116) 
> at org.hibernate.cache.entry.CacheEntry.assemble(CacheEntry.java:82) 
> at org.hibernate.event.def.DefaultLoadEventListener.assembleCacheEntry(DefaultLoadEventListener.java:553) 
> at org.hibernate.event.def.DefaultLoadEventListener.loadFromSecondLevelCache(DefaultLoadEventListener.java:508) 
> at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:357) 
> at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139) 
> at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195) 
> at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103) 
> at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878) 
> at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:846) 
> at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:557) 
> at org.hibernate.type.ManyToOneType.assemble(ManyToOneType.java:196) 
> at org.hibernate.collection.PersistentBag.initializeFromCache(PersistentBag.java:141) 
> at org.hibernate.cache.entry.CollectionCacheEntry.assemble(CollectionCacheEntry.java:35) 
> at org.hibernate.event.def.DefaultInitializeCollectionEventListener.initializeCollectionFromCache(DefaultInitializeCollectionEventListener.java:130) 
> at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:48) 
> at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1716) 
> at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:454) 
> at org.hibernate.engine.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:797) 
> at org.hibernate.event.def.DefaultLoadEventListener.assembleCacheEntry(DefaultLoadEventListener.java:580) 
> at org.hibernate.event.def.DefaultLoadEventListener.loadFromSecondLevelCache(DefaultLoadEventListener.java:508) 
> at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:357) 
> at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139) 
> at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195) 
> at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103) 
> at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878) 
> at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:846) 
> at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:557) 
> at org.hibernate.type.ManyToOneType.assemble(ManyToOneType.java:196) 
> at org.hibernate.collection.PersistentBag.initializeFromCache(PersistentBag.java:141) 
> at org.hibernate.cache.entry.CollectionCacheEntry.assemble(CollectionCacheEntry.java:35) 
> at org.hibernate.event.def.DefaultInitializeCollectionEventListener.initializeCollectionFromCache(DefaultInitializeCollectionEventListener.java:130) 
> at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:48) 
> at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1716) 
> at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:454) 
> at org.hibernate.Hibernate.initialize(Hibernate.java:309) 
> at com.zattoo.channelserver.session.ChannelProviderBean.getAllPartitions(ChannelProviderBean.java:127) 
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
> at java.lang.reflect.Method.invoke(Method.java:585) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112) 
> at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166) 
> at org.jboss.seam.intercept.EJBInvocationContext.proceed(EJBInvocationContext.java:44) 
> at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:101) 
> at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:50) 
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
> at java.lang.reflect.Method.invoke(Method.java:585) 
> at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118) 
> at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126) 
> at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) 
> at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:240) 
> at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:210) 
> at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:84) 
> at $Proxy161.getAllPartitions(Unknown Source) 
> at com.zattoo.channelserver.service.ChannelCacheService.loadPartitionCache(ChannelCacheService.java:136) 
> at com.zattoo.channelserver.service.ChannelCacheService.getAllPartitions(ChannelCacheService.java:155) 
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
> at java.lang.reflect.Method.invoke(Method.java:585) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112) 
> at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166) 
> at org.jboss.seam.intercept.EJBInvocationContext.proceed(EJBInvocationContext.java:44) 
> at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:101) 
> at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:50) 
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
> at java.lang.reflect.Method.invoke(Method.java:585) 
> at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118) 
> at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) 
> at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) 
> at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) 
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) 
> at org.jboss.ejb3.service.ServiceContainer.localInvoke(ServiceContainer.java:329) 
> at org.jboss.ejb3.service.ServiceContainer.localInvoke(ServiceContainer.java:294) 
> at org.jboss.ejb3.service.ServiceMBeanDelegate.getAttribute(ServiceMBeanDelegate.java:139) 
> at org.jboss.mx.server.RawDynamicInvoker.getAttribute(RawDynamicInvoker.java:117) 
> at org.jboss.mx.server.MBeanServerImpl.getAttribute(MBeanServerImpl.java:556) 
> at org.jboss.jmx.adaptor.control.Server.getMBeanAttributeResultInfo(Server.java:144) 
> at org.apache.jsp.inspectMBean_jsp._jspService(inspectMBean_jsp.java:185) 
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
> at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373) 
> at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) 
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
> at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654) 
> at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445) 
> at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379) 
> at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292) 
> at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet.inspectMBean(HtmlAdaptorServlet.java:204) 
> at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet.processRequest(HtmlAdaptorServlet.java:96) 
> at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet.doGet(HtmlAdaptorServlet.java:77) 
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
> at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
> at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524) 
> at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
> at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
> at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:856) 
> at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:566) 
> at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508) 
> at java.lang.Thread.run(Thread.java:595) 
> Caused by: java.lang.IllegalArgumentException: argument type mismatch 
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
> at java.lang.reflect.Method.invoke(Method.java:585) 
> at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42) 
> ... 155 more 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list