Task #8794 (closed)
BUG:Export as OME-Tiff other user's data
Reported by: | omero-qa | Owned by: | jamoore |
---|---|---|---|
Priority: | critical | Milestone: | OMERO-4.4 |
Component: | Services | Version: | n.a. |
Keywords: | n.a. | Cc: | ajpatterson@…, cxallan, jamoore |
Resources: | n.a. | Referenced By: | n.a. |
References: | n.a. | Remaining Time: | 0.0d |
Sprint: | n.a. |
Description
http://qa.openmicroscopy.org.uk/qa/feedback/4335/
Comment: Exporting image beloging to another user in read annotate group.
java.lang.Exception: org.openmicroscopy.shoola.env.data.DSAccessException: Cannot export the image as an OME-TIFF at org.openmicroscopy.shoola.env.data.OMEROGateway.exportImageAsOMEObject(OMEROGateway.java:6885) at org.openmicroscopy.shoola.env.data.OmeroImageServiceImpl.exportImageAsOMEFormat(OmeroImageServiceImpl.java:1501) at org.openmicroscopy.shoola.env.data.views.calls.ExportLoader$1.doCall(ExportLoader.java:87) at org.openmicroscopy.shoola.env.data.views.BatchCall.doStep(BatchCall.java:144) at org.openmicroscopy.shoola.util.concur.tasks.CompositeTask.doStep(CompositeTask.java:226) at org.openmicroscopy.shoola.env.data.views.CompositeBatchCall.doStep(CompositeBatchCall.java:126) at org.openmicroscopy.shoola.util.concur.tasks.ExecCommand.exec(ExecCommand.java:165) at org.openmicroscopy.shoola.util.concur.tasks.ExecCommand.run(ExecCommand.java:276) at org.openmicroscopy.shoola.util.concur.tasks.AsyncProcessor$Runner.run(AsyncProcessor.java:91) at java.lang.Thread.run(Thread.java:680) Caused by: org.openmicroscopy.shoola.env.data.DSAccessException: Cannot export the image as an OME-formats at org.openmicroscopy.shoola.env.data.OMEROGateway.exportImageAsOMEObject(OMEROGateway.java:6873) ... 9 more Caused by: omero.InternalException serverStackTrace = "ome.conditions.InternalException: Wrapped Exception: (java.lang.NullPointerException): null at ome.tools.hibernate.ProxyCleanupFilter.filter(ProxyCleanupFilter.java:115) at ome.services.blitz.impl.OmeroMetadata.initialize(OmeroMetadata.java:271) at ome.services.blitz.impl.ExporterI$2.doWork(ExporterI.java:346) at sun.reflect.GeneratedMethodAccessor253.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) 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.services.util.Executor$Impl$Interceptor.invoke(Executor.java:498) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at ome.security.basic.EventHandler.invoke(EventHandler.java:165) 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:236) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at ome.services.util.ServiceHandler.invoke(ServiceHandler.java:116) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) at $Proxy65.doWork(Unknown Source) at ome.services.util.Executor$Impl.execute(Executor.java:402) at ome.services.util.Executor$Impl.execute(Executor.java:346) at ome.services.blitz.impl.ExporterI.do_tiff(ExporterI.java:342) at ome.services.blitz.impl.ExporterI.generateTiff_async(ExporterI.java:212) 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:597) 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 omero.cmd.CallContext.invoke(CallContext.java:59) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) at $Proxy113.generateTiff_async(Unknown Source) at omero.api._ExporterTie.generateTiff_async(_ExporterTie.java:71) at omero.api._ExporterDisp.___generateTiff(_ExporterDisp.java:175) at omero.api._ExporterDisp.__dispatch(_ExporterDisp.java:248) 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.InternalException" message = " Wrapped Exception: (java.lang.NullPointerException): null" 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:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at IceInternal.BasicStream$DynamicUserExceptionFactory.createAndThrow(BasicStream.java:2243) at IceInternal.BasicStream.throwException(BasicStream.java:1632) at IceInternal.Outgoing.throwUserException(Outgoing.java:442) at omero.api._ExporterDelM.generateTiff(_ExporterDelM.java:79) at omero.api.ExporterPrxHelper.generateTiff(ExporterPrxHelper.java:117) at omero.api.ExporterPrxHelper.generateTiff(ExporterPrxHelper.java:89) at org.openmicroscopy.shoola.env.data.OMEROGateway.exportImageAsOMEObject(OMEROGateway.java:6859) ... 9 more at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.showErrorDialog(UserNotifierImpl.java:190) at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.notifyError(UserNotifierImpl.java:288) at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.notifyError(UserNotifierImpl.java:258) at org.openmicroscopy.shoola.env.ui.ActivityComponent.showException(ActivityComponent.java:416) at org.openmicroscopy.shoola.env.ui.ActivityComponent.actionPerformed(ActivityComponent.java:915) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6375) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6140) at java.awt.Container.processEvent(Container.java:2083) at java.awt.Component.dispatchEventImpl(Component.java:4737) at java.awt.Container.dispatchEventImpl(Container.java:2141) at java.awt.Component.dispatchEvent(Component.java:4565) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210) at java.awt.Container.dispatchEventImpl(Container.java:2127) at java.awt.Window.dispatchEventImpl(Window.java:2482) at java.awt.Component.dispatchEvent(Component.java:4565) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:643) at java.awt.EventQueue$1.run(EventQueue.java:641) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:657) at java.awt.EventQueue$2.run(EventQueue.java:655) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:654) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Change History (6)
comment:1 Changed 12 years ago by jburel
- Component changed from from QA to Insight
- Milestone changed from Unscheduled to OMERO-Beta4.4
- Priority changed from minor to major
comment:2 Changed 12 years ago by jburel
- Cc cxallan jmoore added
- Component changed from Insight to Services
- Priority changed from major to critical
comment:3 Changed 12 years ago by jburel
- Owner jburel deleted
comment:4 Changed 12 years ago by jmoore
- Owner set to jmoore
- Remaining Time set to 0.25
- Status changed from new to accepted
comment:5 Changed 12 years ago by jmoore
- Remaining Time changed from 0.25 to 0
- Resolution set to fixed
- Status changed from accepted to closed
Fixed and pushing:
commit 0f5d15827bf2777472cc83b6d79040f92eb76b65 Author: jmoore <josh@glencoesoftware.com> Date: Thu May 17 14:18:31 2012 +0200 Fix OmeroMetadata's use of ProxyCleanupFilter (Fix #8794) The missing BasicACLVoter was causing NPEs on cleanup. Here we assume that if the "acl" field is null, then no post processing is needed. This is valid in this case since the permissions of the object will not be exported. diff --git a/components/server/src/ome/tools/hibernate/ProxyCleanupFilter.java b/components/server/src/ome/tools/hibernate/ProxyCleanupFilter.java index 8052bda..19097c2 100644 --- a/components/server/src/ome/tools/hibernate/ProxyCleanupFilter.java +++ b/components/server/src/ome/tools/hibernate/ProxyCleanupFilter.java @@ -112,7 +112,12 @@ public class ProxyCleanupFilter extends ContextFilter { } else { if (f instanceof IObject) { - acl.postProcess((IObject) f); + if (acl != null) { + // When acl is null, assume this is for internal use + // and therefore the object will not be passed out. + // See ticket:8794 and OmeroMetadata.java + acl.postProcess((IObject) f); + } } // Also for security reasons, we're now checking ownership
One test is still failing, but I'll leave that for someone else. See testExportAsOMETIFFDowngrade
java.lang.IllegalArgumentException sun.net.www.ParseUtil.decode(ParseUtil.java:185) sun.net.www.protocol.file.Handler.openConnection(Handler.java:63) sun.net.www.protocol.file.Handler.openConnection(Handler.java:55) java.net.URL.openConnection(URL.java:945) org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
comment:6 Changed 12 years ago by jmoore <josh@…>
(In [fdc54e079b54cea886eb01bb1c72087ac5a516fe/ome.git] on branch develop) Fix OmeroMetadata?'s use of ProxyCleanupFilter? (Fix #8794)
The missing BasicACLVoter was causing NPEs on cleanup.
Here we assume that if the "acl" field is null, then
no post processing is needed. This is valid in this
case since the permissions of the object will not
be exported.
No longer possible to export as ome-tiff. Under OmeroJava, tests in integration/Exporter now failed.