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
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:
- make them part of the same MIF
- make them *not* re-use the same objects
- add extra handling for finding and removing the projected images on chgrp/delete
- like 3, but leave them orphaned.
- ???
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:4 Changed 9 years ago by jburel
comment:5 Changed 9 years ago by jburel
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.
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.
Is it clear what should be done about this? "Everything is in exactly one group" has all kinds of interesting linkage-caused implications.