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"

Task #9070 (closed)

Opened 12 years ago

Closed 12 years ago

Bug: thumbnail figure script does not produce output on other's data

Reported by: bpindelski Owned by: sbesson
Priority: major Milestone: OMERO-4.4
Component: Scripting Version: n.a.
Keywords: n.a. Cc: ux@…, jamoore
Resources: n.a. Referenced By: n.a.
References: n.a. Remaining Time: n.a.
Sprint: 2012-06-19 (17)

Description

Logged in as user-1/private-1. Using any figure script on other's data produces an image that user-1 can view.

Exception: thumbnail figure script. The output image is blank.

see 4.4 Testing Screenshots/Blazej?/12-06-04/insight-thumbnailfigure.mov

Change History (6)

comment:1 Changed 12 years ago by jburel

  • Sprint changed from 2012-06-05 (16) to 2012-06-19 (17)

Moved from sprint 2012-06-05 (16)

comment:2 Changed 12 years ago by sbesson

If member of private group user-2 successfully runs Thumbnail Figure script on his own image/dataset, private group owner user-1 can then successfully run Thumbnail Figure script on user-2's image/dataset (no blank output).


Origin of the bug seems to be related to the way thumbnails are retrieved in script.

comment:3 Changed 12 years ago by jburel

Sebastien could you track that down?

comment:4 Changed 12 years ago by sbesson

If thumbnails have not been generated the data owner, they can not be accessed by another user.

In thumbnailPerms.py, if self.getThumbnail(owner_client.sf, privateImageId) is called before calling self.getThumbnail(client_share1.sf, privateImageId)`

thumbnailStore.setPixelsId(pId)
t = thumbnailStore.getThumbnail(rint(16),rint(16))

fails with

Traceback (most recent call last):
  File "/Users/sebastien/code/openmicroscopy/components/tools/OmeroPy/test/integration/thumbnailPerms.py", line 124, in testThumbs
    self.getThumbnail(owner_client.sf, privateImageId)
  File "/Users/sebastien/code/openmicroscopy/components/tools/OmeroPy/test/integration/thumbnailPerms.py", line 231, in getThumbnail
    t = thumbnailStore.getThumbnail(rint(16),rint(16))
  File "/Users/sebastien/code/openmicroscopy/components/tools/OmeroPy/target/omero_api_ThumbnailStore_ice.py", line 119, in getThumbnail
    return _M_omero.api.ThumbnailStore._op_getThumbnail.invoke(self, ((sizeX, sizeY), _ctx))
ResourceError: exception ::omero::ResourceError
{
    serverStackTrace = ome.conditions.ResourceError: The user id:3603 may not be the owner id:3604. The owner has not viewed the Pixels set id:5101 and thumbnail metadata is missing.
	at ome.services.ThumbnailCtx.getMetadata(ThumbnailCtx.java:435)
	at ome.services.ThumbnailBean.getThumbnail(ThumbnailBean.java:995)
	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 ome.security.basic.EventHandler.invoke(EventHandler.java:154)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at ome.tools.hibernate.SessionHandler.doStateful(SessionHandler.java:182)
	at ome.tools.hibernate.SessionHandler.invoke(SessionHandler.java:166)
	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:241)
	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 $Proxy93.getThumbnail(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: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.security.basic.BasicSecurityWiring.invoke(BasicSecurityWiring.java:98)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at ome.services.blitz.fire.AopContextInitializer.invoke(AopContextInitializer.java:43)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
	at $Proxy93.getThumbnail(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:597)
	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:137)
	at ome.services.blitz.impl.ThumbnailStoreI.getThumbnail_async(ThumbnailStoreI.java:130)
	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 $Proxy94.getThumbnail_async(Unknown Source)
	at omero.api._ThumbnailStoreTie.getThumbnail_async(_ThumbnailStoreTie.java:120)
	at omero.api._ThumbnailStoreDisp.___getThumbnail(_ThumbnailStoreDisp.java:311)
	at omero.api._ThumbnailStoreDisp.__dispatch(_ThumbnailStoreDisp.java:668)
	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.ResourceError
    message = The user id:3603 may not be the owner id:3604. The owner has not viewed the Pixels set id:5101 and thumbnail metadata is missing.
}

and

s = thumbnailStore.getThumbnailByLongestSideSet(rint(16), pixelsIds)

returns dictionary with empty value {5102L: ''} which is the source of the blank figure in thumbnail script.

comment:5 Changed 12 years ago by jmoore

  • Cc jmoore added

comment:6 Changed 12 years ago by sbesson

  • Resolution set to fixed
  • Status changed from new to closed

Current workaround: when creating an image, create thumbnails as well.

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

We're Hiring!