Modify

Ticket #4612 (closed defect: fixed)

Opened 2 years ago

Last modified 2 years ago

delete members while relation dialog is open leads to data integrity problem

Reported by: bastiK Owned by: team
Priority: critical Component: Core
Version: Keywords:
Cc:

Description

What steps will reproduce the problem?

  1. create a relation
  2. remove some members while the dialog is open
  3. make changes in the relation dialog
  4. confirm the relation dialog -> conflicts
  5. try to resolve these conflicts -> error

Please provide any additional information below. Attach a screenshot if possible.

Build-Date: 2010-02-24 19:08:30		
Revision: 2965
Is-Local-Build: true

Memory Usage: 42 MB / 297 MB (10 MB allocated, but free)
Java version: 1.6.0_15, Sun Microsystems Inc., Linux

Dataset consistency test:
No problems found


Plugins: buildings_tools,ghost,public_transport,validator
Plugin public_transport Version: 20072
Plugin buildings_tools Version: 32
Plugin validator Version: 19688
Plugin ghost Version: 1

org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Primitive  must be part of the dataset: {Relation id=-23777 version=0 MV [way -23772, node -23770, node -23771, node -23773, node -23769]}
	at org.openstreetmap.josm.data.osm.OsmPrimitive.checkDataset(OsmPrimitive.java:167)
	at org.openstreetmap.josm.data.osm.OsmPrimitive.getReferrers(OsmPrimitive.java:939)
	at org.openstreetmap.josm.gui.conflict.pair.properties.PropertiesMergeModel.populate(PropertiesMergeModel.java:180)
	at org.openstreetmap.josm.gui.conflict.pair.properties.PropertiesMerger.populate(PropertiesMerger.java:721)
	at org.openstreetmap.josm.gui.conflict.pair.ConflictResolver.populate(ConflictResolver.java:233)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog.resolve(ConflictDialog.java:150)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog.access$000(ConflictDialog.java:57)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog$ResolveAction.actionPerformed(ConflictDialog.java:334)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
	at java.awt.Component.processMouseEvent(Component.java:6263)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6028)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2475)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Attachments

Change History

comment:1 Changed 2 years ago by mjulius

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

(In [3042]) fixes #4612 - delete members while relation dialog is open leads to data integrity problem

don't require primitive to be part of a dataset in OsmPrimitive.getReferrers()

comment:2 Changed 2 years ago by jttt

I've reverted the fix, the check for dataset is there for reason. getReferrers() on primitive without dataset returns random data because every clone of Way/Relation will add new item to referrers list.

comment:3 Changed 2 years ago by anonymous

  • Status changed from closed to reopened
  • Resolution fixed deleted

comment:4 Changed 2 years ago by jttt

How should I fix this? Is it good idea to remove the deleted member also from relation dialog, so that no conflict will be created at all?

comment:5 Changed 2 years ago by bastiK

I think it would be best if any change in the dataset triggers and update of the relation dialog. This would make the "save/apply" button obsolete.

comment:6 Changed 2 years ago by jttt

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

(In [3061]) Fix #4612 delete members while relation dialog is open leads to data integrity problem

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.