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 #9632 (closed)

Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

Bug: Root cannot view data

Reported by: cxallan Owned by: jamoore
Priority: blocker Milestone: OMERO-4.4.4
Component: Web Version: n.a.
Keywords: n.a. Cc: web-team@…
Resources: n.a. Referenced By: n.a.
References: n.a. Remaining Time: 0.0d
Sprint: 2012-09-25 (5)

Description

When attempting to expand Project nodes in OMERO.web as the root user, the following exception is thrown:

Traceback (most recent call last):

  File "/home/omero/slave/workspace/OMERO-merge-green/src/dist/lib/python/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)

  File "/home/omero/slave/workspace/OMERO-merge-green/src/dist/lib/python/omeroweb/decorators.py", line 377, in wrapped
    retval = f(request, *args, **kwargs)

  File "/home/omero/slave/workspace/OMERO-merge-green/src/dist/lib/python/omeroweb/decorators.py", line 414, in wrapper
    context = f(request, *args, **kwargs)

  File "/home/omero/slave/workspace/OMERO-merge-green/src/dist/lib/python/omeroweb/webclient/views.py", line 762, in load_metadata_details
    projects = c_type == "project" and list(conn.getObjects("Project", [c_id])) or list()

  File "/home/omero/slave/workspace/OMERO-merge-green/src/dist/lib/python/omero/gateway/__init__.py", line 2537, in getObjects
    result = self.getQueryService().findAllByQuery(query, params, self.SERVICE_OPTS)

  File "/home/omero/slave/workspace/OMERO-merge-green/src/dist/lib/python/omero/gateway/__init__.py", line 3327, in __call__
    return self.handle_exception(e, *args, **kwargs)

  File "/home/omero/slave/workspace/OMERO-merge-green/src/dist/lib/python/omeroweb/webclient/webclient_gateway.py", line 1876, in handle_exception
    e, *args, **kwargs)

  File "/home/omero/slave/workspace/OMERO-merge-green/src/dist/lib/python/omero/gateway/__init__.py", line 3324, in __call__
    return self.f(*args, **kwargs)

  File "/home/omero/slave/workspace/OMERO-merge-green/src/dist/lib/python/omero_api_IQuery_ice.py", line 139, in findAllByQuery
    return _M_omero.api.IQuery._op_findAllByQuery.invoke(self, ((query, params), _ctx))

InternalException: exception ::omero::InternalException
{
    serverStackTrace = ome.conditions.InternalException: No permissions: Details:{;perm=rw----user=0;group=0;create=27045;update=27045}
	at ome.security.basic.CurrentDetails.applyContext(CurrentDetails.java:413)
	at ome.security.basic.BasicACLVoter.postProcess(BasicACLVoter.java:361)
	at ome.tools.hibernate.ProxyCleanupFilter.filter(ProxyCleanupFilter.java:119)
	at ome.util.ContextFilter.filter(ContextFilter.java:160)
	at ome.util.ContextFilter.doFilter(ContextFilter.java:84)
	at ome.util.ContextFilter.filter(ContextFilter.java:121)
	at ome.tools.hibernate.ProxyCleanupFilter.filter(ProxyCleanupFilter.java:166)
	at ome.util.ContextFilter.filter(ContextFilter.java:162)
	at ome.tools.hibernate.ProxyCleanupFilter$Interceptor.invoke(ProxyCleanupFilter.java:244)
	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 $Proxy75.findAllByQuery(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor428.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.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 $Proxy75.findAllByQuery(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor440.invoke(Unknown Source)
	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:150)
	at ome.services.blitz.impl.QueryI.findAllByQuery_async(QueryI.java:66)
	at sun.reflect.GeneratedMethodAccessor439.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 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 $Proxy76.findAllByQuery_async(Unknown Source)
	at omero.api._IQueryTie.findAllByQuery_async(_IQueryTie.java:92)
	at omero.api._IQueryDisp.___findAllByQuery(_IQueryDisp.java:366)
	at omero.api._IQueryDisp.__dispatch(_IQueryDisp.java:496)
	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 = No permissions: Details:{;perm=rw----user=0;group=0;create=27045;update=27045}
}

There is no problem expanding or interacting with the data in OMERO.insight.

Change History (8)

comment:1 Changed 12 years ago by cxallan

  • Cc web-team@… added
  • Owner changed from web-team@… to cxallan
  • Remaining Time set to 0.5
  • Sprint set to 2012-09-25 (5)
  • Status changed from new to accepted

comment:2 Changed 12 years ago by cxallan

  • Owner changed from cxallan to jmoore

Test case up on my 9632_root_cannot_view branch:

Passing to Josh for review to see if this is an issue we can resolve in the services stack or if we need to be making changes to OMERO.web.

comment:3 Changed 12 years ago by jmoore

This reproduces easily against gretzky, but not my local server. I've found at least one bug which may be the cause. Just rebuilding and dropping my DB to try to reproduce. (May be caused by the default group, etc. of the root user)

comment:4 Changed 12 years ago by jmoore

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

comment:5 Changed 12 years ago by jmoore <josh@…>

(In [1b0fef7d98348bd29773a5cb9b7fab296883e069/ome.git] on branch develop) Test case for admin querying with "omero.group = -1". (See #9632)

comment:6 Changed 12 years ago by jmoore <josh@…>

(In [1cbf3b9c5a3b8433de2b02896ea9190be63ca6a6/ome.git] on branch develop) Fix bad comparison of getCurrentGroupId (See #9632)

comment:7 Changed 12 years ago by jmoore <josh@…>

(In [e88ec6c878bf977c71f8528aaa679f45e1c7cc19/ome.git] on branch develop) Load perms for system groups as well (Fix #9632)

Data that was 1) in the system group and 2) queried via omero.group=-1
was causing an internal exception. The short-circuit block at the top of
allowLoad was failing to cache permissions for core groups.

comment:8 Changed 12 years ago by jmoore <josh@…>

(In [4ce9217a38e610aa10e266253c4bc8eb812591d0/ome.git] on branch develop) Handle systypes and null details separately (See #9632)

Neither of these types will have a group so
short-circuiting the if/else will prevent a
WARN statement.

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

We're Hiring!