Task #5742 (closed)
Opened 13 years ago
Closed 13 years ago
BUG:Feedback 3791:Model not loaded
Reported by: | ajpatterson | Owned by: | wmoore |
---|---|---|---|
Priority: | major | Milestone: | OMERO-Beta4.3 |
Component: | Services | Version: | n.a. |
Keywords: | n.a. | Cc: | jamoore, jburel, wmoore |
Resources: | n.a. | Referenced By: | n.a. |
References: | n.a. | Remaining Time: | 0.0d |
Sprint: | 2011-06-16 (14) |
Description (last modified by ajpatterson)
Crash generated by importing file 6x4y1z1t1c8b-swatch-instrument.ome, opening main viewer, showing right panel, picking aqusition, then trying to expand the channel tab.
http://qa.openmicroscopy.org.uk/qa/feedback/3791/
Comment: expanding channel info
java.lang.Exception: Abnormal termination due to an uncaught exception. omero.UnloadedEntityException: Object unloaded:omero.model.LaserI@326a40d6 at omero.model.LaserI.errorIfUnloaded(LaserI.java:32) at omero.model.LaserI.getModel(LaserI.java:430) at omero.model.LightSource.getModel(LightSource.java:105) at pojos.LightSourceData.getLightSourceModel(LightSourceData.java:143) at org.openmicroscopy.shoola.agents.util.EditorUtil.transformLightSource(EditorUtil.java:1656) at org.openmicroscopy.shoola.agents.util.EditorUtil.transformLightSourceAndSetting(EditorUtil.java:1592) at org.openmicroscopy.shoola.agents.metadata.editor.ChannelAcquisitionComponent.setChannelAcquisitionData(ChannelAcquisitionComponent.java:451) at org.openmicroscopy.shoola.agents.metadata.editor.AcquisitionDataUI.setChannelAcquisitionData(AcquisitionDataUI.java:485) at org.openmicroscopy.shoola.agents.metadata.editor.EditorUI.setChannelAcquisitionData(EditorUI.java:643) at org.openmicroscopy.shoola.agents.metadata.editor.EditorComponent.setChannelAcquisitionData(EditorComponent.java:522) at org.openmicroscopy.shoola.agents.metadata.AcquisitionDataLoader.handleResult(AcquisitionDataLoader.java:101) at org.openmicroscopy.shoola.env.data.events.DSCallAdapter.eventFired(DSCallAdapter.java:90) at org.openmicroscopy.shoola.env.data.views.BatchCallMonitor$1.run(BatchCallMonitor.java:124) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:678) at java.awt.EventQueue.access$000(EventQueue.java:86) at java.awt.EventQueue$1.run(EventQueue.java:639) at java.awt.EventQueue$1.run(EventQueue.java:637) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:648) 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) Abnormal termination due to an uncaught exception. omero.UnloadedEntityException: Object unloaded:omero.model.LaserI@326a40d6 at omero.model.LaserI.errorIfUnloaded(LaserI.java:32) at omero.model.LaserI.getModel(LaserI.java:430) at omero.model.LightSource.getModel(LightSource.java:105) at pojos.LightSourceData.getLightSourceModel(LightSourceData.java:143) at org.openmicroscopy.shoola.agents.util.EditorUtil.transformLightSource(EditorUtil.java:1656) at org.openmicroscopy.shoola.agents.util.EditorUtil.transformLightSourceAndSetting(EditorUtil.java:1592) at org.openmicroscopy.shoola.agents.metadata.editor.ChannelAcquisitionComponent.setChannelAcquisitionData(ChannelAcquisitionComponent.java:451) at org.openmicroscopy.shoola.agents.metadata.editor.AcquisitionDataUI.setChannelAcquisitionData(AcquisitionDataUI.java:485) at org.openmicroscopy.shoola.agents.metadata.editor.EditorUI.setChannelAcquisitionData(EditorUI.java:643) at org.openmicroscopy.shoola.agents.metadata.editor.EditorComponent.setChannelAcquisitionData(EditorComponent.java:522) at org.openmicroscopy.shoola.agents.metadata.AcquisitionDataLoader.handleResult(AcquisitionDataLoader.java:101) at org.openmicroscopy.shoola.env.data.events.DSCallAdapter.eventFired(DSCallAdapter.java:90) at org.openmicroscopy.shoola.env.data.views.BatchCallMonitor$1.run(BatchCallMonitor.java:124) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:678) at java.awt.EventQueue.access$000(EventQueue.java:86) at java.awt.EventQueue$1.run(EventQueue.java:639) at java.awt.EventQueue$1.run(EventQueue.java:637) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:648) 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) Exception in thread "AWT-EventQueue-0" at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.showErrorDialog(UserNotifierImpl.java:183) at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.notifyError(UserNotifierImpl.java:272) at org.openmicroscopy.shoola.env.AbnormalExitHandler.doTermination(AbnormalExitHandler.java:138) at org.openmicroscopy.shoola.env.AbnormalExitHandler.terminate(AbnormalExitHandler.java:83) at org.openmicroscopy.shoola.env.AWTExceptionHanlder.handle(AWTExceptionHanlder.java:99) 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 java.awt.EventDispatchThread.handleException(EventDispatchThread.java:412) at java.awt.EventDispatchThread.processException(EventDispatchThread.java:318) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:312) 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)
Attachments (1)
Change History (22)
comment:1 Changed 13 years ago by jburel
- Component changed from from QA to Services
- Milestone changed from Unscheduled to OMERO-Beta4.3
- Remaining Time set to 0.1
- Reporter omero-qa deleted
- Sprint set to 2011-06-02 (13)
- Summary changed from BUG:Feedback 3791 to BUG:Feedback 3791:Model not loaded
comment:2 Changed 13 years ago by ajpatterson
- Cc a.j.patterson@… removed
- Description modified (diff)
- Reporter set to ajpatterson
Changed 13 years ago by ajpatterson
comment:3 Changed 13 years ago by jburel
- Remaining Time changed from 0.1 to 0.15
- Status changed from new to accepted
comment:4 Changed 13 years ago by jburel
comment:5 Changed 13 years ago by jburel
- Remaining Time changed from 0.15 to 0.3
comment:6 Changed 13 years ago by jburel <j.burel@…>
(In [93f866265b729a8b086e041655509d84bb2a03ce/ome.git] on branch develop) Fix query when loading light source for channel (see #5742)
comment:7 Changed 13 years ago by jburel
- Cc jmoore added
- Priority changed from minor to critical
query works fine when directly made using the query service from insight but when done using the MetadataService#loadChannelData
serverStackTrace = "ome.conditions.InternalException: Cannot handle type:ome.model.acquisition.Arc:Id_201 at ome.util.ModelMapper.findTarget(ModelMapper.java:151) at omero.util.IceMapper.filter(IceMapper.java:989) at ome.model.acquisition.Laser.acceptFilter(Laser.java:300) at omero.util.IceMapper.filter(IceMapper.java:985) at ome.model.acquisition.LightSettings.acceptFilter(LightSettings.java:337) at omero.util.IceMapper.filter(IceMapper.java:985) at ome.model.core.LogicalChannel.acceptFilter(LogicalChannel.java:794) at omero.util.IceMapper.filter(IceMapper.java:985) at ome.util.ContextFilter.filter(ContextFilter.java:160) at ome.util.ContextFilter.doFilter(ContextFilter.java:84) at ome.util.ContextFilter.filter(ContextFilter.java:121)
comment:8 Changed 13 years ago by jburel <j.burel@…>
(In [c786da2087de38daec289f68c2d294cd21608752/ome.git] on branch develop) Add tests for laser with pump (see #5742)
comment:9 Changed 13 years ago by jburel
- Cc jburel added
comment:10 Changed 13 years ago by jburel
- Owner jburel deleted
- Status changed from accepted to new
comment:11 Changed 13 years ago by jburel <j.burel@…>
(In [eb99752ab0f9826eb0317e77010060d680715a1d/ome.git] on branch develop) Improve test for laser pump (see #5742)
comment:12 Changed 13 years ago by jburel
- Sprint changed from 2011-06-02 (13) to 2011-06-16 (14)
Moved from sprint 2011-06-02 (13)
comment:13 Changed 13 years ago by jburel
One point I notice
If a laser has a pump. If in the query, the pump is not requested when loading the laser form the logical channel.
The laser is not loaded.
But it is not true if i load the laser from instrument.
comment:14 Changed 13 years ago by jmoore
Jean-Marie, by changing the generated code to load some types "EARGERLY" then I can get rid of this error. I had previously tried to do this, but I think the commit was wrong:
commit 7550600f643a35aea45863e1262cb1ce2ffc65a8 Author: jmoore <jmoore@05709c45-44f0-0310-885b-81a1db45b4a6> Date: Wed Jan 16 13:41:42 2008 +0000 StructuredAnnotation : Changing default loading to eager for all abstract m-1 relations
This would mean that all the following fields would be loaded automatically (i.e. even if you don't do a "join fetch" in HQL, the would still be loaded). Do you think that's ok?
~/git/components/model/target/generated/src $ grep -r -A 10 EAGER * | grep -E " get" ome/model/acquisition/Instrument.java- protected java.util.Set<ome.model.acquisition.LightSource> getLightSource() { ome/model/acquisition/Laser.java- public ome.model.acquisition.LightSource getPump() { ome/model/acquisition/LightSettings.java- public ome.model.acquisition.LightSource getLightSource() { ome/model/annotations/AnnotationAnnotationLink.java- public IObject getParent() { ome/model/annotations/AnnotationAnnotationLink.java- public IObject getChild() { ome/model/annotations/ChannelAnnotationLink.java- public IObject getChild() { ome/model/annotations/DatasetAnnotationLink.java- public IObject getChild() { ome/model/annotations/ExperimenterAnnotationLink.java- public IObject getChild() { ome/model/annotations/ExperimenterGroupAnnotationLink.java- public IObject getChild() { ome/model/annotations/ImageAnnotationLink.java- public IObject getChild() { ome/model/annotations/NamespaceAnnotationLink.java- public IObject getChild() { ome/model/annotations/NodeAnnotationLink.java- public IObject getChild() { ome/model/annotations/OriginalFileAnnotationLink.java- public IObject getChild() { ome/model/annotations/PixelsAnnotationLink.java- public IObject getChild() { ome/model/annotations/PlaneInfoAnnotationLink.java- public IObject getChild() { ome/model/annotations/PlateAcquisitionAnnotationLink.java- public IObject getChild() { ome/model/annotations/PlateAnnotationLink.java- public IObject getChild() { ome/model/annotations/ProjectAnnotationLink.java- public IObject getChild() { ome/model/annotations/ReagentAnnotationLink.java- public IObject getChild() { ome/model/annotations/RoiAnnotationLink.java- public IObject getChild() { ome/model/annotations/ScreenAnnotationLink.java- public IObject getChild() { ome/model/annotations/SessionAnnotationLink.java- public IObject getChild() { ome/model/annotations/WellAnnotationLink.java- public IObject getChild() { ome/model/annotations/WellSampleAnnotationLink.java- public IObject getChild() { ome/model/display/RenderingDef.java- protected java.util.List<ome.model.display.CodomainMapContext> getSpatialDomainEnhancement() { ome/model/jobs/JobOriginalFileLink.java- public IObject getParent() { ome/model/roi/Roi.java- protected java.util.List<ome.model.roi.Shape> getShapes() {
comment:15 Changed 13 years ago by jburel
Seems to be a lot
especially one related to image, annotation annotation, project etc
comment:16 Changed 13 years ago by jburel
- Cc wmoore added
- Priority changed from critical to major
This will require some significant rework, for now. If we have a laser with a pump, client should check if the light source is loaded, if not then load using IQuery from client.
Will: I will add code query to the ticket when implemented.
comment:17 Changed 13 years ago by jburel
- Owner set to jburel
- Remaining Time changed from 0.3 to 0.2
- Status changed from new to accepted
comment:18 Changed 13 years ago by jburel <j.burel@…>
(In [722b86ff0cd238c43816c4dca7a0422dcb490f99/ome.git] on branch develop) Modify loading sequence of logical channel if laser linked to light settings has a pump (see #5742)
comment:19 Changed 13 years ago by jburel
- Owner changed from jburel to wmoore
From OMEROGateway
Object loadChannelAcquisitionData(long channelID) throws DSOutOfServiceException, DSAccessException { //stage Label isSessionAlive(); try { IMetadataPrx service = getMetadataService(); List<Long> ids = new ArrayList<Long>(1); ids.add(channelID); List l = service.loadChannelAcquisitionData(ids); if (l != null && l.size() == 1) { LogicalChannel lc = (LogicalChannel) l.get(0); ChannelAcquisitionData data = new ChannelAcquisitionData(lc); LightSourceData src = data.getLightSource(); if (src.isLoaded()) return data; //Not loaded so need to load IObject io = src.asIObject(); if (io instanceof Laser) { //only case to handle. StringBuilder sb = new StringBuilder(); sb.append("select l from Laser as l "); sb.append("left outer join fetch l.type "); sb.append("left outer join fetch l.laserMedium "); sb.append("left outer join fetch l.pulse as pulse "); sb.append("left outer join fetch l.pump as pump "); sb.append("left outer join fetch pump.type as pt "); sb.append("where l.id = :id"); ParametersI param = new ParametersI(); param.addId(src.getId()); Laser laser = (Laser) getQueryService().findByQuery( sb.toString(), param); if (laser != null) data.setLightSource(new LightSourceData(laser)); } return data; } return null; } catch (Exception e) { handleException(e, "Cannot load channel acquisition data."); } return null; }
comment:20 Changed 13 years ago by Will Moore <will@…>
(In [89e07fddcf7aa395445975686add545d5e48425a/ome.git] on branch develop) Blitz LightSettingsWrapper?.getLightSource() loads if necessary. See #5742
comment:21 Changed 13 years ago by Will Moore <will@…>
- Remaining Time changed from 0.2 to 0
- Resolution set to fixed
- Status changed from accepted to closed
(In [461f09f465bca630a34b74768aaf32868d1791b0/ome.git] on branch develop) Webclient views.py improved getLightSource() calls. Closes #5742
OK, I have figured out the problem
The tests pass but in that file, we have a laser with a pump. No test to cover than case