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

Opened 8 years ago

Closed 7 years ago

Last modified 7 years ago

BUG: crash after Plate Run deleted

Reported by: pwalczysko Owned by: mtbcarroll
Priority: major Milestone: 5.0.0-rc1
Component: Insight Version: n.a.
Keywords: delete Cc: ux@…
Resources: n.a. Referenced By: n.a.
References: n.a. Remaining Time: 0.0d
Sprint: n.a.

Description

Permissions testing ad hoc server

Login as user-1, private-1
Deleting a Plate Run of user-2. (in "Screen imported by user-2"). After a successful delete (Activities window says Done) double-click onto the Plate ("plate1") which contained the (now deleted) Run. Error appears. Insight crashes.

java.lang.Exception: Abnormal termination due to an uncaught exception.
java.lang.IllegalArgumentException: Object cannot null.
	at pojos.ExperimenterData.<init>(ExperimenterData.java:78)
	at pojos.DataObject.getOwner(DataObject.java:290)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.ImageDisplay.getNodeOwner(ImageDisplay.java:154)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.ImageDisplay.setNodeDecoration(ImageDisplay.java:324)
	at org.openmicroscopy.shoola.agents.dataBrowser.visitor.DecoratorVisitor.visit(DecoratorVisitor.java:66)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.ImageNode.doAccept(ImageNode.java:89)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.ImageDisplay.accept(ImageDisplay.java:412)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.ImageDisplay.accept(ImageDisplay.java:410)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.BrowserModel.accept(BrowserModel.java:432)
	at org.openmicroscopy.shoola.agents.dataBrowser.view.WellsModel.<init>(WellsModel.java:395)
	at org.openmicroscopy.shoola.agents.dataBrowser.view.DataBrowserFactory.createWellsDataBrowser(DataBrowserFactory.java:488)
	at org.openmicroscopy.shoola.agents.dataBrowser.view.DataBrowserFactory.getWellsDataBrowser(DataBrowserFactory.java:136)
	at org.openmicroscopy.shoola.agents.treeviewer.view.TreeViewerComponent.setPlates(TreeViewerComponent.java:2883)
	at org.openmicroscopy.shoola.agents.treeviewer.PlateWellsLoader.handleResult(PlateWellsLoader.java:156)
	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:702)
	at java.awt.EventQueue.access$400(EventQueue.java:82)
	at java.awt.EventQueue$2.run(EventQueue.java:663)
	at java.awt.EventQueue$2.run(EventQueue.java:661)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:672)
	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.
java.lang.IllegalArgumentException: Object cannot null.
	at pojos.ExperimenterData.<init>(ExperimenterData.java:78)
	at pojos.DataObject.getOwner(DataObject.java:290)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.ImageDisplay.getNodeOwner(ImageDisplay.java:154)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.ImageDisplay.setNodeDecoration(ImageDisplay.java:324)
	at org.openmicroscopy.shoola.agents.dataBrowser.visitor.DecoratorVisitor.visit(DecoratorVisitor.java:66)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.ImageNode.doAccept(ImageNode.java:89)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.ImageDisplay.accept(ImageDisplay.java:412)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.ImageDisplay.accept(ImageDisplay.java:410)
	at org.openmicroscopy.shoola.agents.dataBrowser.browser.BrowserModel.accept(BrowserModel.java:432)
	at org.openmicroscopy.shoola.agents.dataBrowser.view.WellsModel.<init>(WellsModel.java:395)
	at org.openmicroscopy.shoola.agents.dataBrowser.view.DataBrowserFactory.createWellsDataBrowser(DataBrowserFactory.java:488)
	at org.openmicroscopy.shoola.agents.dataBrowser.view.DataBrowserFactory.getWellsDataBrowser(DataBrowserFactory.java:136)
	at org.openmicroscopy.shoola.agents.treeviewer.view.TreeViewerComponent.setPlates(TreeViewerComponent.java:2883)
	at org.openmicroscopy.shoola.agents.treeviewer.PlateWellsLoader.handleResult(PlateWellsLoader.java:156)
	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:702)
	at java.awt.EventQueue.access$400(EventQueue.java:82)
	at java.awt.EventQueue$2.run(EventQueue.java:663)
	at java.awt.EventQueue$2.run(EventQueue.java:661)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:672)
	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:189)
	at org.openmicroscopy.shoola.env.ui.UserNotifierImpl.notifyError(UserNotifierImpl.java:287)
	at org.openmicroscopy.shoola.env.AbnormalExitHandler.doTermination(AbnormalExitHandler.java:147)
	at org.openmicroscopy.shoola.env.AbnormalExitHandler.terminate(AbnormalExitHandler.java:85)
	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 (2)

surprising wells.png (8.4 KB) - added by mtbcarroll 7 years ago.
6x4y1z1t1c8b-swatch-2s2p4w2ws.ome (18.0 KB) - added by mtbcarroll 7 years ago.
interesting extra test case

Download all attachments as: .zip

Change History (24)

comment:1 Changed 7 years ago by jburel

  • Sprint changed from 2013-04-09 (7)) to 2013-05-07 (8)

Moved from sprint 2013-04-09 (7))

comment:2 Changed 7 years ago by pwalczysko

We have this bug also on Develop, exactly the same workflow. Repeated

  • locally with todays server build from develop branch
  • on Gretzky, with OMERO.insight-5.0.0-alpha4-294-2c30fb6-dirty-ice33-b298-mac

comment:3 Changed 7 years ago by pwalczysko

Because this is a full crash and is very near the features which we want to demonstrate soon, I think there is a danger of following happening: uninformed user testing the FS is trying to delete a plate and clicks onto a Run instead....

comment:4 Changed 7 years ago by jburel

  • Sprint changed from 2013-05-07 (8) to Blocker 4.4.9 (1)

Moved from sprint 2013-05-07 (8)

comment:5 Changed 7 years ago by mtbcarroll

  • Owner changed from jburel to mtbcarroll
  • Version set to 4.4.8

comment:6 Changed 7 years ago by mtbcarroll

More recent testing suggests that the present behavior upon deleting another user's run is that when one double-clicks on the plate one sees remaining wells in an alarming fashion.

Changed 7 years ago by mtbcarroll

comment:7 Changed 7 years ago by mtbcarroll

In the DB, the rows from wellsample and plateacquisition are deleted, but not those from well and they reference plate directly.

comment:8 Changed 7 years ago by mtbcarroll

Reading the Blitz log, for the delete process the material appearing within tag[...] is,

omero.graph.query.PlateAcquisition
omero.graph.query.PlateAcquisition.PlateAcquisitionAnnotationLink
omero.graph.query.PlateAcquisition.PlateAcquisitionAnnotationLink.Annotation
omero.graph.query.PlateAcquisition.WellSample
omero.graph.query.PlateAcquisition.WellSample.Image
omero.graph.query.PlateAcquisition.WellSample.Image.DatasetImageLink
omero.graph.query.PlateAcquisition.WellSample.Image.Experiment
omero.graph.query.PlateAcquisition.WellSample.Image.Experiment.MicrobeamManipulation
omero.graph.query.PlateAcquisition.WellSample.Image.Experiment.MicrobeamManipulation.LightSettings
omero.graph.query.PlateAcquisition.WellSample.Image.ImageAnnotationLink
omero.graph.query.PlateAcquisition.WellSample.Image.ImageAnnotationLink.Annotation
omero.graph.query.PlateAcquisition.WellSample.Image.ImagingEnvironment
omero.graph.query.PlateAcquisition.WellSample.Image.Instrument
omero.graph.query.PlateAcquisition.WellSample.Image.Instrument.Detector
omero.graph.query.PlateAcquisition.WellSample.Image.Instrument.Dichroic
omero.graph.query.PlateAcquisition.WellSample.Image.Instrument.Filter
omero.graph.query.PlateAcquisition.WellSample.Image.Instrument.Filter.TransmittanceRange
omero.graph.query.PlateAcquisition.WellSample.Image.Instrument.FilterSet
omero.graph.query.PlateAcquisition.WellSample.Image.Instrument.LightSource
omero.graph.query.PlateAcquisition.WellSample.Image.Instrument.Microscope
omero.graph.query.PlateAcquisition.WellSample.Image.Instrument.OTF
omero.graph.query.PlateAcquisition.WellSample.Image.Instrument.Objective
omero.graph.query.PlateAcquisition.WellSample.Image.ObjectiveSettings
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.ChannelAnnotationLink
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.ChannelAnnotationLink.Annotation
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.DetectorSettings
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.DetectorSettings.Detector
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightPath
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightPath.Dichroic
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightPath.LightPathEmissionFilterLink
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightPath.LightPathEmissionFilterLink.Filter
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightPath.LightPathEmissionFilterLink.Filter.TransmittanceRange
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightPath.LightPathExcitationFilterLink
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightPath.LightPathExcitationFilterLink.Filter
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightPath.LightPathExcitationFilterLink.Filter.TransmittanceRange
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightSettings
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightSettings.LightSource
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.LightSettings.MicrobeamManipulation
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.LogicalChannel.OTF
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Channel.StatsInfo
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.PixelsAnnotationLink
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.PixelsAnnotationLink.Annotation
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.PixelsOriginalFileMap
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.PixelsOriginalFileMap.OriginalFile
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.PlaneInfo
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.PlaneInfo.PlaneInfoAnnotationLink
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.PlaneInfo.PlaneInfoAnnotationLink.Annotation
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.RenderingDef
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.RenderingDef.ChannelBinding
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.RenderingDef.CodomainMapContext
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.RenderingDef.QuantumDef
omero.graph.query.PlateAcquisition.WellSample.Image.Pixels.Thumbnail
omero.graph.query.PlateAcquisition.WellSample.Image.Roi
omero.graph.query.PlateAcquisition.WellSample.Image.Roi.RoiAnnotationLink
omero.graph.query.PlateAcquisition.WellSample.Image.Roi.RoiAnnotationLink.Annotation
omero.graph.query.PlateAcquisition.WellSample.Image.Roi.RoiAnnotationLink.Annotation.AnnotationAnnotationLink
omero.graph.query.PlateAcquisition.WellSample.Image.Roi.RoiAnnotationLink.Annotation.OriginalFile
omero.graph.query.PlateAcquisition.WellSample.Image.Roi.Shape
omero.graph.query.PlateAcquisition.WellSample.Image.StageLabel
omero.graph.query.PlateAcquisition.WellSample.WellSampleAnnotationLink
omero.graph.query.PlateAcquisition.WellSample.WellSampleAnnotationLink.Annotation

from which perhaps the *.Well entries appear conspicuously absent, as do any subsequent omero.deletestep.Well.* steps.

comment:9 Changed 7 years ago by mtbcarroll

My guess is that in spec.xml if we delete the last WellSample of a Well then we should also delete the Well. (Well samples do directly reference their well.)

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

comment:10 Changed 7 years ago by mtbcarroll

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

comment:11 Changed 7 years ago by mtbcarroll

  • Resolution fixed deleted
  • Status changed from closed to reopened

I don't understand spec.xml well enough. I think I nearly have it fixed, but the /Well bean has extra paths that perhaps I need to somehow include in the /PlateAcquisition traversal beyond the end of the /PlateAcquisition/WellSample/Well path?

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

comment:12 Changed 7 years ago by mtbcarroll

  • Owner changed from mtbcarroll to jamoore
  • Status changed from reopened to accepted

Josh, I think it has to be you figuring this one out! Though if I'm nearly there and you can easily explain to me what to do, then of course feel free to just instruct me and have me do it.

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

comment:13 Changed 7 years ago by mtbcarroll

(especially, I'm curious about how we can reuse the /Well bean paths for the wells deleted under /PlateAcquisition, if that's the way to fix the bug at all)

comment:14 Changed 7 years ago by mtbcarroll

  • Owner changed from jamoore to mtbcarroll

It will probably work to repeat a bunch of the /Well bean stuff in /PlateAcquisition; I'll give it a go.

Changed 7 years ago by mtbcarroll

interesting extra test case

comment:15 Changed 7 years ago by mtbcarroll

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

fixed by above PR

comment:16 Changed 7 years ago by Mark Carroll <m.t.b.carroll@…>

  • Remaining Time set to 0

(In [ecb6e4404f8111e2695fdd3f7dd880efca791e92/ome.git] on branch develop) fix #10564: graph traversal from plate run to well

comment:17 Changed 7 years ago by Josh Moore <josh@…>

(In [e779b3b518e6ac7f7b0b08aec7867793767dd06b/ome.git] on branch develop) Merge pull request #1600 from mtbc/wellsample-to-well-10564

fix #10564: include wells in plate run processing (rebased)

comment:18 Changed 7 years ago by mtbcarroll

  • Milestone changed from OMERO-4.4.9 to OMERO-5
  • Priority changed from critical to major
  • Resolution fixed deleted
  • Sprint Blocker 4.4.9 (1) deleted
  • Status changed from closed to reopened
  • Version 4.4.8 deleted

Although it seemed fixed, I am now seeing the "surprising wells" mess on plates in develop if in Insight I try deleting the run for, say, bd-pathway and others. I wonder what is making the wells stay.

This isn't simply a regression: http://hudson.openmicroscopy.org.uk/job/OmeroJava-integration-develop/lastSuccessfulBuild/testngreports/integration.delete/integration.delete.HierarchyDeleteTest/testDeletingMultipleRunsWithOrphanedSamples/ is still passing.

comment:19 Changed 7 years ago by jamoore

  • Milestone changed from OMERO-5 to 5.0.0-beta2

comment:20 Changed 7 years ago by mtbcarroll

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

This turns out to be fine: the plate had some wells that had no samples in the run. Doing the delete and checking the database before and after demonstrates that the deletion is working as previously specified. Filed http://trac.openmicroscopy.org.uk/ome/ticket/11623 accordingly.

comment:21 Changed 7 years ago by Mark Carroll <m.t.b.carroll@…>

(In [2a37e6ed0f7ed87912f1487578b9ab8b07f57799/ome.git]on branches master, dev_4_4) fix #10564: graph traversal from plate run to well

comment:22 Changed 7 years ago by Josh Moore <josh@…>

(In [88e51ed0b42ee06047584dfa2c1b95fa4f17f313/ome.git]on branches master, dev_4_4) Merge pull request #1430 from mtbc/wellsample-to-well-10564

fix #10564: include wells in plate run processing

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

We're Hiring!