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"

Task #2443 (closed)

Opened 9 years ago

Closed 9 years ago

BUG: Deleted Image breaks share

Reported by: atarkowska Owned by: atarkowska
Priority: blocker Milestone: OMERO-Beta4.2
Component: Services Version: n.a.
Keywords: n.a. Cc: jamoore
Resources: n.a. Referenced By: n.a.
References: n.a. Remaining Time: 0.0d
Sprint: 2010-06-24 (12)

Description

If Image is being deleted permanently from the system, this object should also be deleted from the share, otherwise there is a problem with loading content:

exception ::omero::ValidationException
{
    serverStackTrace = ome.conditions.ValidationException: No row with the given identifier exists: [ome.model.core.Image#1]; nested exception is org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [ome.model.core.Image#1]
	at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:663)
	at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
	at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
	at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:339)
	at ome.logic.QueryImpl.get(QueryImpl.java:156)
	at sun.reflect.GeneratedMethodAccessor586.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:592)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
	at ome.security.basic.EventHandler.invoke(EventHandler.java:144)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:111)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:108)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at ome.tools.hibernate.ProxyCleanupFilter$Interceptor.invoke(ProxyCleanupFilter.java:175)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at ome.services.util.ServiceHandler.invoke(ServiceHandler.java:111)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
	at $Proxy51.get(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor586.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:592)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
	at ome.security.basic.BasicSecurityWiring.invoke(BasicSecurityWiring.java:83)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at ome.services.blitz.fire.AopContextInitializer.invoke(AopContextInitializer.java:40)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
	at $Proxy51.get(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor588.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:592)
	at ome.services.blitz.util.IceMethodInvoker.invoke(IceMethodInvoker.java:179)
	at ome.services.throttling.Callback.run(Callback.java:56)
	at ome.services.throttling.InThreadThrottlingStrategy.callInvokerOnRawArgs(InThreadThrottlingStrategy.java:56)
	at ome.services.blitz.impl.AbstractAmdServant.callInvokerOnRawArgs(AbstractAmdServant.java:132)
	at ome.services.blitz.impl.QueryI.get_async(QueryI.java:110)
	at omero.api._IQueryTie.get_async(_IQueryTie.java:127)
	at omero.api._IQueryDisp.___get(_IQueryDisp.java:170)
	at omero.api._IQueryDisp.__dispatch(_IQueryDisp.java:516)
	at IceInternal.Incoming.invoke(Incoming.java:159)
	at Ice.ConnectionI.invokeAll(ConnectionI.java:2037)
	at Ice.ConnectionI.message(ConnectionI.java:972)
	at IceInternal.ThreadPool.run(ThreadPool.java:577)
	at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
	at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:971)

    serverExceptionClass = ome.conditions.ValidationException
    message = No row with the given identifier exists: [ome.model.core.Image#1]; nested exception is org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [ome.model.core.Image#1]
}

Change History (8)

comment:1 Changed 9 years ago by atarkowska

  • Summary changed from BUG: Deleteed Image breaks share to BUG: Deleted Image breaks share

comment:2 Changed 9 years ago by cxallan

  • Sprint changed from 2010-05-13 (9) to 2010-05-27 (10)

comment:3 Changed 9 years ago by jmoore

  • Cc jmoore added
  • Owner changed from jmoore to atarkowska

Ola, there are several ways of handling this:

  • on IDelete.deleteImage, but that wouldn't work for cases where IUpdate.deleteObject is used
  • on delete Events, but I'm a bit unsure about the performance issues (also for the above)
  • on share activation, but a user would then have no way of being told that something's been remove (also for the above)
  • on query. Basically, when loading the images for the share, if the exception you got is thrown, warn the user and remove from share.

Let's discuss when you have time.

comment:4 Changed 9 years ago by cxallan

  • Sprint changed from 2010-05-27 (10) to 2010-06-10 (11)

comment:5 Changed 9 years ago by atarkowska

The other solution might be keeping the image object in share and just display the "no image" thumbnail. I will try to implement it.

comment:6 Changed 9 years ago by jburel

  • Sprint changed from 2010-06-10 (11) to 2010-06-24 (12)

comment:7 Changed 9 years ago by atarkowska

  • Status changed from new to assigned

comment:8 Changed 9 years ago by atarkowska

  • Remaining Time set to 0
  • Resolution set to fixed
  • Status changed from assigned to closed

(In [7414]) this fixes #2443

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.75723 sec.)

We're Hiring!