Bug #1183 (closed)
Opened 14 years ago
Closed 14 years ago
Save And Return
Reported by: | jburel | Owned by: | jamoore |
---|---|---|---|
Priority: | blocker | Cc: | atarkowska |
Sprint: | n.a. | ||
Total Remaining Time: | n.a. |
Description
I modify the description of Project p.
The project has one comment linked to it.
When I do SaveAndReturn(p), the following error is returned.
The same code used to work.
omero.InternalException serverStackTrace = "ome.conditions.InternalException: Wrapped Exception: (java.lang.RuntimeException): Failed to instantiate class ome.model.annotations.Annotation. This may be caused by an abstract class not being properly "join fetch"'d. Please review your query or contact your server administrator. at ome.util.Utils.trueInstance(Utils.java:89) at ome.tools.hibernate.ProxyCleanupFilter.filter(ProxyCleanupFilter.java:65) at ome.model.annotations.ProjectAnnotationLink.acceptFilter(ProjectAnnotationLink.java:287) at ome.util.ContextFilter.doFilter(ContextFilter.java:77) at ome.util.ContextFilter.filter(ContextFilter.java:103) at ome.tools.hibernate.ProxyCleanupFilter.filter(ProxyCleanupFilter.java:83) at ome.util.ContextFilter.filter(ContextFilter.java:158) at ome.util.ContextFilter.doFilter(ContextFilter.java:84) at ome.util.ContextFilter.filter(ContextFilter.java:119) at ome.tools.hibernate.ProxyCleanupFilter.filter(ProxyCleanupFilter.java:97) at ome.model.containers.Project.acceptFilter(Project.java:999) at ome.util.ContextFilter.doFilter(ContextFilter.java:77) at ome.util.ContextFilter.filter(ContextFilter.java:103) at ome.tools.hibernate.ProxyCleanupFilter.filter(ProxyCleanupFilter.java:83) at ome.util.ContextFilter.filter(ContextFilter.java:158) at ome.tools.hibernate.ProxyCleanupFilter$Interceptor.invoke(ProxyCleanupFilter.java:172) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at ome.services.util.ServiceHandler.invoke(ServiceHandler.java:93) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy63.saveAndReturnObject(Unknown Source) 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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at ome.security.basic.BasicSecurityWiring.invoke(BasicSecurityWiring.java:78) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at ome.services.blitz.fire.AopContextInitializer.invoke(AopContextInitializer.java:35) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy63.saveAndReturnObject(Unknown Source) 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 ome.services.blitz.util.IceMethodInvoker.callOrClose(IceMethodInvoker.java:257) at ome.services.blitz.util.IceMethodInvoker.invoke(IceMethodInvoker.java:179) at ome.services.throttling.Callback.run(Callback.java:55) at ome.services.throttling.InThreadThrottlingStrategy.callInvokerOnRawArgs(InThreadThrottlingStrategy.java:37) at ome.services.blitz.impl.AbstractAmdServant.callInvokerOnRawArgs(AbstractAmdServant.java:114) at ome.services.blitz.impl.UpdateI.saveAndReturnObject_async(UpdateI.java:63) at omero.api._IUpdateTie.saveAndReturnObject_async(_IUpdateTie.java:85) at omero.api._IUpdateDisp.___saveAndReturnObject(_IUpdateDisp.java:178) at omero.api._IUpdateDisp.__dispatch(_IUpdateDisp.java:331) at IceInternal.Incoming.invoke(Incoming.java:166) at Ice.ConnectionI.invokeAll(ConnectionI.java:2045) at Ice.ConnectionI.message(ConnectionI.java:977) at IceInternal.ThreadPool.run(ThreadPool.java:575) at IceInternal.ThreadPool.access$100(ThreadPool.java:12) at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:951) " serverExceptionClass = "ome.conditions.InternalException" message = " Wrapped Exception: (java.lang.RuntimeException): Failed to instantiate class ome.model.annotations.Annotation. This may be caused by an abstract class not being properly "join fetch"'d. Please review your query or contact your server administrator." at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at java.lang.Class.newInstance0(Class.java:350) at java.lang.Class.newInstance(Class.java:303) at IceInternal.BasicStream$DynamicUserExceptionFactory.createAndThrow(BasicStream.java:2127) at IceInternal.BasicStream.throwException(BasicStream.java:1541) at IceInternal.Outgoing.throwUserException(Outgoing.java:442) at omero.api._IUpdateDelM.saveAndReturnObject(_IUpdateDelM.java:198) at omero.api.IUpdatePrxHelper.saveAndReturnObject(IUpdatePrxHelper.java:254) at omero.api.IUpdatePrxHelper.saveAndReturnObject(IUpdatePrxHelper.java:233) at org.openmicroscopy.shoola.env.data.OMEROGateway.saveAndReturnObject(OMEROGateway.java:1696)
Change History (6)
comment:1 Changed 14 years ago by atarkowska
- Cc atarkowska added
comment:2 Changed 14 years ago by jmoore
J-M, can you tell me more about how you got the Projects graph back? This simple test can't reproduce:
def test1183(self): p = omero.model.ProjectI() p.linkAnnotation( omero.model.CommentAnnotationI() ) p.name = rstring("ticket1183") p = self.update.saveAndReturnObject(p) p.description = rstring("desc") p = self.update.saveAndReturnObject(p) p = omero.model.ProjectI() p.name = rstring("ticket1183") p = self.update.saveAndReturnObject(p) p.description = rstring("desc") p.linkAnnotation( omero.model.CommentAnnotationI() ) p = self.update.saveAndReturnObject(p)
comment:3 Changed 14 years ago by jburel
The annotation is not loaded in my case
comment:4 Changed 14 years ago by jmoore
These versions pass also. Any other differences to what insight is doing?
# Unloading annotation after save p = omero.model.ProjectI() p.name = rstring("ticket1183") p.linkAnnotation( omero.model.CommentAnnotationI() ) p = self.update.saveAndReturnObject(p) for l in p.copyAnnotationLinks(): l.child.unload() p.description = rstring("desc") p = self.update.saveAndReturnObject(p) # Unloaded annotation to save (before) c = omero.model.CommentAnnotationI() c = self.update.saveAndReturnObject( c ) c.unload() p = omero.model.ProjectI() p.name = rstring("ticket1183") p.linkAnnotation( c ) p = self.update.saveAndReturnObject(p) p.description = rstring("desc") p = self.update.saveAndReturnObject(p) # Unloaded annotation to save (after) c = omero.model.CommentAnnotationI() c = self.update.saveAndReturnObject( c ) c.unload() p = omero.model.ProjectI() p.name = rstring("ticket1183") p = self.update.saveAndReturnObject(p) p.description = rstring("desc") p.linkAnnotation( c ) p = self.update.saveAndReturnObject(p)
comment:5 Changed 14 years ago by jburel
I don't use the linkAnnotation method, that the only thing I can see
comment:6 Changed 14 years ago by jmoore
- Resolution set to fixed
- Status changed from new to closed
r3629 should fix this. This does not directly solve the problem of not being able to instantiate an Annotation when it is not loaded (no discriminator). That could only be done by introducing some kind of marker class which can be instantiated (NullAnnotation, etc.)
What this does is unloads an object if the acceptFilter method throws an RuntimeException(InstantiationException). This may be a surprise to some users that a fetched link is not loaded, but we will deal with that later.
Note: attempting to force a load (which has peroformance issues anyway) via Hibernate.initialize() did not work.
I got another exception when I was trying to use saveAndReturnObject (for saveObjects is fine)