Task #3031 (closed)
Delete P/D should not delete contents in other datasets
Reported by: | wmoore | Owned by: | jamoore |
---|---|---|---|
Priority: | blocker | Milestone: | OMERO-Beta4.2.1 |
Component: | General | Version: | n.a. |
Keywords: | n.a. | Cc: | jburel |
Resources: | n.a. | Referenced By: | n.a. |
References: | n.a. | Remaining Time: | 0.0d |
Sprint: | 2010-09-30 (17) |
Description
If I delete a Project or Dataset and choose to delete contents, the contents should only be deleted if they have no other parents.
Images should remain if they are in any other Datasets and Datasets should remain if they are in any other Projects.
Change History (15)
comment:1 Changed 14 years ago by jmoore
- Remaining Time set to 0.25
- Status changed from new to assigned
comment:2 Changed 14 years ago by jmoore
- Remaining Time changed from 0.25 to 0
- Resolution set to fixed
- Status changed from assigned to closed
comment:3 Changed 14 years ago by jmoore
comment:4 Changed 14 years ago by jmoore
comment:5 Changed 14 years ago by cblackburn
comment:6 Changed 14 years ago by jmoore
comment:7 Changed 14 years ago by wmoore
- Resolution fixed deleted
- Status changed from closed to reopened
I find that if ANY of the images in a dataset I'm deleting in Insight (with delete contents) are also in another dataset, then NONE of the images are deleted (end up with some images as orphans).
comment:8 Changed 14 years ago by jmoore
- Priority changed from major to blocker
- Remaining Time changed from 0 to 1.5
At the moment, all IDs to be deleted are stored by location in the graph:
/Dataset/DatasetImageLink/Image:1,2,3,6,7 /Dataset/DatasetImageLink/Image/Pixels:6,7,8 ...
making it impossible to decipher which sub-elements belong to which element, so that if Image 1 throws a ConstraintViolation (i.e. is doubly linked) but Image 2 is fine, we can't know which Pixels should be deleted.
This will require significant refactoring to the DeleteIds object making it into a tree structure which knows which deletes belong with super-element.
comment:9 Changed 14 years ago by jmoore
comment:10 Changed 14 years ago by jmoore
comment:11 Changed 14 years ago by jmoore
- Remaining Time changed from 1.5 to 0
- Resolution set to fixed
- Status changed from reopened to closed
In r8294:
Extensive refactoring of delete logic (Fix #3031)
The moves the logic of deleting from DeleteSpec and DeleteEntry
to DeleteState (formerly DeleteIds). The requirement was that
for a given row delete, it was clear which higher-level object
asked for that delete so that it could be cleanly rolled back.
(In [8264]) Preserving doubly linked Datasets and Images on delete (Fix #3031)