Modify

Opened 11 years ago

Closed 11 years ago

#4612 closed defect (fixed)

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

Reported by: bastiK Owned by: team
Priority: critical Milestone:
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 (0)

Change History (6)

comment:1 Changed 11 years ago by mjulius

Resolution: fixed
Status: newclosed

(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 11 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 11 years ago by anonymous

Resolution: fixed
Status: closedreopened

comment:4 Changed 11 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 11 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 11 years ago by jttt

Resolution: fixed
Status: reopenedclosed

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

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain team.
as The resolution will be set.
The resolution will be deleted.

Add Comment


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

 
Note: See TracTickets for help on using tickets.