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 #11532 (new)

Opened 11 years ago

Last modified 8 years ago

Projected image: pixelsService.copyAndResizeImage() workaround — at Version 24

Reported by: jburel Owned by:
Priority: critical Milestone: 5.1.2
Component: Services Version: 4.4.8
Keywords: n.a. Cc: fs@…, ux@…, nikolaus.ehrenfeuchter@…
Resources: n.a. Referenced By: n.a.
References: n.a. Remaining Time: n.a.
Sprint: n.a.

Description (last modified by mtbcarroll)

Not possible to move source image/projected image due to channels linkage.

Current Workaround: Delete the projections manually or ask the other user to if not possible.

Until we have deep copy on demand (!), for new projections it could be good if pixelsService.copyAndResizeImage() did *not* share instrument, objective settings, etc. between images.

Change History (24)

comment:1 Changed 11 years ago by mtbcarroll

Is it clear what should be done about this? "Everything is in exactly one group" has all kinds of interesting linkage-caused implications.

comment:2 Changed 11 years ago by jamoore

@mtbc: not really. At the moment the projected image is in a different MIF, so to speak, though it re-uses some internal objects. So options include:

  1. make them part of the same MIF
  2. make them *not* re-use the same objects
  3. add extra handling for finding and removing the projected images on chgrp/delete
  4. like 3, but leave them orphaned.
  5. ???

comment:3 Changed 10 years ago by jburel

  • Milestone changed from 5.0.0-beta2 to 5.0.0-beta3

graph problem moved Beta3

comment:6 Changed 9 years ago by jburel

  • Cc nikolaus.ehrenfeuchter@… added

comment:7 Changed 9 years ago by jburel

  • Milestone changed from 5.1.0 to 5.1.0-m4

comment:8 Changed 9 years ago by mtbcarroll

The core problem is that images owned by different users have some model objects in common -- probably instrument, objective settings -- and those objects may be in only one group? We won't be creating a copy of the shared objects at chgrp time for 5.1.0. A difficulty is deciding which image is the original: without special ID-comparing logic, we'd not want the owner of the projection to move their image and cause the original to be deleted. Of course, it may be that we can have the projection script not re-use the objects, and OMERO does tend to be less permissive than the OME core object model, but people will already have legacy projections in their systems anyway. Not sure if we ought to try to fix this soon or simply bring it into a larger discussion of the way forward permissions-and-model-wise.

comment:9 Changed 9 years ago by jburel

Problem is not only related to projected image as discussed with Mark
Any "derive" image will lead to similar error e.g. images from ROis.

comment:10 Changed 9 years ago by jamoore

  • Owner set to pwalczysko

Petr: there's some question if the state of "move projected image" is sufficiently good for you at the moment. If yes, then we can push this to "5.x". Otherwise, someone can you let us know the steps to badness.

comment:11 Changed 9 years ago by pwalczysko

Yes, atm., I am kinda happy for it to move to 5x. Steps to badness:

  • create a Projection
  • move it somewhere where you forgot the place of
  • try to move the original image -> move fails, no explanation why, no idea where the projection is anyway -> badness

comment:12 Changed 9 years ago by mtbcarroll

If it would help clients to handle this, the container service could offer a getImagesBySplitInstruments or somesuch.

Last edited 9 years ago by mtbcarroll (previous) (diff)

comment:13 Changed 9 years ago by wmoore

I would like it if pixelsService.copyAndResizeImage() created new objects in the DB instead of linking the new image to existing objects.
That would solve this issue for new projected images, channel offsets script etc, although if we still wanted to fix existing images then we'd also need another approach.

comment:14 Changed 9 years ago by jamoore

wmoore: the DB upgrade could possibly handle existing images.

comment:15 Changed 9 years ago by jamoore

Referencing ticket #11752 has changed sprint.

comment:16 Changed 9 years ago by jamoore

Referencing ticket #11752 has changed sprint.

comment:17 Changed 9 years ago by jamoore

Are we attempting anything here?

comment:18 Changed 9 years ago by pwalczysko

  • Owner pwalczysko deleted

Not me. The satatus to my knowledge is as reported by me couple of comments above.

comment:19 Changed 9 years ago by pwalczysko

(I guess this is not something we will attempt for 5.1.0)

comment:20 Changed 9 years ago by jamoore

  • Milestone changed from 5.1.0 to 5.1.1
  • Owner set to mtbcarroll
  • Priority changed from blocker to critical

Think this will have to go along with the "Graphs clean" (roughly with "Permissions" and "Export", followed by "Deep Copy").

Timing to be discussed.

comment:21 Changed 9 years ago by mtbcarroll

Naturally, timing depends on the chosen solution. For 5.1.1 we can at least provide some kind of getImagesBySplitObjects (looks at instruments, channels, objective settings) that is like checking if the images are in the same fileset, though ownership within the set may vary. For anything more like deep copy, even 5.1.x is optimistic, especially if we also have to duplicate annotations on the instrument, etc. You're right, definitely needs discussion.

comment:22 Changed 9 years ago by wmoore

Just found another bug associated with this issue:

  • I create a share and put image into it.
  • Other members of the share can view image OK etc.
  • Then I create a new image ('Channel Offset script OR Projection etc)
  • Now, other members of the share try to view the image that I previously added to the share:
Traceback:
File "/Users/wmoore/Desktop/OMERO/dist/lib/python/django/core/handlers/base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/wmoore/Desktop/OMERO/components/tools/OmeroWeb/omeroweb/decorators.py" in wrapped
  469.             retval = f(request, *args, **kwargs)
File "/Users/wmoore/Desktop/OMERO/components/tools/OmeroWeb/omeroweb/decorators.py" in wrapper
  519.             context = f(request, *args, **kwargs)
File "/Users/wmoore/Desktop/OMERO/components/tools/OmeroWeb/omeroweb/webclient/views.py" in load_metadata_preview
  967.     rdefId = manager.image.getRenderingDefId()
File "/Users/wmoore/Desktop/OMERO/dist/lib/python/omero/gateway/__init__.py" in wrapped
  6695.                 if not self._prepareRenderingEngine() \
File "/Users/wmoore/Desktop/OMERO/dist/lib/python/omero/gateway/__init__.py" in _prepareRenderingEngine
  6920.                 self._re = self._prepareRE(rdid=rdid)
File "/Users/wmoore/Desktop/OMERO/dist/lib/python/omero/gateway/__init__.py" in _prepareRE
  6889.         re.lookupPixels(pid, ctx)
File "/Users/wmoore/Desktop/OMERO/dist/lib/python/omero/gateway/__init__.py" in __call__
  4120.             return self.handle_exception(e, *args, **kwargs)
File "/Users/wmoore/Desktop/OMERO/components/tools/OmeroWeb/omeroweb/webclient/webclient_gateway.py" in handle_exception
  2069.                 e, *args, **kwargs)
File "/Users/wmoore/Desktop/OMERO/dist/lib/python/omero/gateway/__init__.py" in __call__
  4117.             return self.f(*args, **kwargs)
File "/Users/wmoore/Desktop/OMERO/dist/lib/python/omero_api_RenderingEngine_ice.py" in lookupPixels
  337.             return _M_omero.api.RenderingEngine._op_lookupPixels.invoke(self, ((pixelsId, ), _ctx))

Exception Type: SecurityViolation at /webclient/metadata_preview/image/8102/57579/
Exception Value: exception ::omero::SecurityViolation
{
    serverStackTrace = ome.conditions.SecurityViolation: ome.model.core.Channel:Id_8813 not contained in share
	at ome.security.sharing.SharingACLVoter.throwLoadViolation(SharingACLVoter.java:79)
	at ome.security.CompositeACLVoter.throwLoadViolation(CompositeACLVoter.java:92)
	at ome.security.ACLEventListener.onPostLoad(ACLEventListener.java:104)
	at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:250)
	at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:898)
	at org.hibernate.loader.Loader.doQuery(Loader.java:773)

comment:23 Changed 9 years ago by mtbcarroll

This ticket is largely superseded by https://trello.com/c/muXgN0XR/213-deep-copy but is there some other ticket regarding the other share permissions issues we've been seeing that covers Will's latest?

comment:24 Changed 9 years ago by mtbcarroll

  • Description modified (diff)
  • Milestone changed from 5.1.1 to 5.1.2
  • Owner mtbcarroll deleted
  • Summary changed from Projected image. to Projected image: pixelsService.copyAndResizeImage() workaround

Will move deep copy issues to the Trello card: this ticket becomes devoted to the API behavior workaround.

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

We're Hiring!