Warning: Can't synchronize with repository "(default)" (/home/git/ome.git does not appear to be a Git repository.). Look in the Trac log for more information.
Notice: In order to edit this ticket you need to be either: a Product Owner, The owner or the reporter of the ticket, or, in case of a Task not yet assigned, a team_member"

Bug #1183 (closed)

Opened 15 years ago

Closed 15 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 15 years ago by atarkowska

  • Cc atarkowska added

I got another exception when I was trying to use saveAndReturnObject (for saveObjects is fine)

exception ::omero::SecurityViolation
{
    serverStackTrace = ome.conditions.SecurityViolation: You are not authorized to change the update event for ome.model.containers.Project:Id_50 from ome.model.meta.Event:Id_15679 to ome.model.meta.Event:Id_15660
	at ome.security.basic.OmeroInterceptor.managedEvent(OmeroInterceptor.java:937)
	at ome.security.basic.OmeroInterceptor.checkManagedDetails(OmeroInterceptor.java:586)
	at ome.security.basic.OmeroInterceptor.resetDetails(OmeroInterceptor.java:296)
	at ome.security.basic.OmeroInterceptor.onFlushDirty(OmeroInterceptor.java:171)
	at org.hibernate.event.def.DefaultFlushEntityEventListener.invokeInterceptor(DefaultFlushEntityEventListener.java:331)
	at org.hibernate.event.def.DefaultFlushEntityEventListener.handleInterception(DefaultFlushEntityEventListener.java:308)
	at org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:248)
	at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:128)
	at ome.security.basic.FlushEntityEventListener.onFlushEntity(FlushEntityEventListener.java:52)
	at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
	at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
	at org.springframework.orm.hibernate3.HibernateTemplate$28.doInHibernate(HibernateTemplate.java:888)
	at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
	at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
	at org.springframework.orm.hibernate3.HibernateTemplate.flush(HibernateTemplate.java:886)
	at ome.logic.UpdateImpl.afterUpdate(UpdateImpl.java:256)
	at ome.logic.UpdateImpl.doAction(UpdateImpl.java:267)
	at ome.logic.UpdateImpl.saveAndReturnObject(UpdateImpl.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.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.EventHandler.invoke(EventHandler.java:107)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:111)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at ome.tools.hibernate.ProxyCleanupFilter$Interceptor.invoke(ProxyCleanupFilter.java:169)
	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 $Proxy65.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 $Proxy65.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.SecurityViolation
    message = You are not authorized to change the update event for ome.model.containers.Project:Id_50 from ome.model.meta.Event:Id_15679 to ome.model.meta.Event:Id_15660
}

comment:2 Changed 15 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 15 years ago by jburel

The annotation is not loaded in my case

comment:4 Changed 15 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 15 years ago by jburel

I don't use the linkAnnotation method, that the only thing I can see

comment:6 Changed 15 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.

Note: See TracTickets for help on using tickets. You may also have a look at Agilo extensions to the ticket.

1.3.13-PRO © 2008-2011 Agilo Software all rights reserved (this page was served in: 0.64072 sec.)

We're Hiring!