Modify

Opened 13 years ago

Closed 3 years ago

Last modified 3 years ago

#6529 closed defect (fixed)

Deleting locally referenced objects in conflict resolution breaks data integrity

Reported by: phobie Owned by: team
Priority: critical Milestone: 20.11
Component: Core Version: latest
Keywords: conflict Cc: andrei280366@…, alex@…, latte_oz, naoliv, mcheck, Luebeck, josm-openstreetmap-de.20.quedel@…, Nitrix, ff5722

Description (last modified by Don-vip)

  • Downloaded a osm-file from geofabrik
  • cut out an area with osmosis
  • loaded it into JOSM
  • Searched for "tourism=*"
  • Clicked on file -> update selected
  • JOSM told me that it found 3 conflicts (nodes had been deleted on OSM) while my command-list was empty.
  • I clicked on resolve
  • accepted remote version
  • clicked apply and the exception raised...
Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2011-07-01 01:31:46
Last Changed Author: stoecker
Revision: 4187
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2011-06-30 18:08:51 +0200 (Thu, 30 Jun 2011)
Last Changed Rev: 4187

Identification: JOSM/1.5 (4187 de)
Memory Usage: 153 MB / 910 MB (41 MB allocated, but free)
Java version: 1.6.0_18, Sun Microsystems Inc., OpenJDK 64-Bit Server VM
Operating system: Linux

Dataset consistency test:
[DELETED REFERENCED] {Way id=29049015 version=9 D nodes=[{Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}, {Node id=662412474 version=2 Vh lat=53.8739184,lon=10.6911367}, {Node id=319513157 version=2 V lat=53.8739354,lon=10.6910824}, {Node id=319513556 version=2 V lat=53.8739277,lon=10.6910798}, {Node id=319513156 version=2 V lat=53.8738342,lon=10.6910195}, {Node id=662412462 version=2 Vh lat=53.8738226,lon=10.6910837}, {Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}, {Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}]} refers to deleted primitive {Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}
[DELETED REFERENCED] {Way id=29049015 version=9 D nodes=[{Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}, {Node id=662412474 version=2 Vh lat=53.8739184,lon=10.6911367}, {Node id=319513157 version=2 V lat=53.8739354,lon=10.6910824}, {Node id=319513556 version=2 V lat=53.8739277,lon=10.6910798}, {Node id=319513156 version=2 V lat=53.8738342,lon=10.6910195}, {Node id=662412462 version=2 Vh lat=53.8738226,lon=10.6910837}, {Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}, {Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}]} refers to deleted primitive {Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}
[DELETED REFERENCED] {Way id=29049015 version=9 D nodes=[{Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}, {Node id=662412474 version=2 Vh lat=53.8739184,lon=10.6911367}, {Node id=319513157 version=2 V lat=53.8739354,lon=10.6910824}, {Node id=319513556 version=2 V lat=53.8739277,lon=10.6910798}, {Node id=319513156 version=2 V lat=53.8738342,lon=10.6910195}, {Node id=662412462 version=2 Vh lat=53.8738226,lon=10.6910837}, {Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}, {Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}]} refers to deleted primitive {Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}
[DELETED REFERENCED] {Way id=119793009 version=2 D nodes=[{Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}, {Node id=319513158 version=2 V lat=53.8737868,lon=10.6913029}, {Node id=319513298 version=4 V lat=53.8738666,lon=10.6913478}, {Node id=319513159 version=2 V lat=53.8738877,lon=10.6912597}, {Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}, {Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}]} refers to deleted primitive {Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}
[DELETED REFERENCED] {Way id=119793009 version=2 D nodes=[{Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}, {Node id=319513158 version=2 V lat=53.8737868,lon=10.6913029}, {Node id=319513298 version=4 V lat=53.8738666,lon=10.6913478}, {Node id=319513159 version=2 V lat=53.8738877,lon=10.6912597}, {Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}, {Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}]} refers to deleted primitive {Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}
[DELETED REFERENCED] {Way id=119793009 version=2 D nodes=[{Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}, {Node id=319513158 version=2 V lat=53.8737868,lon=10.6913029}, {Node id=319513298 version=4 V lat=53.8738666,lon=10.6913478}, {Node id=319513159 version=2 V lat=53.8738877,lon=10.6912597}, {Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}, {Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}]} refers to deleted primitive {Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}


Plugin: OpeningHoursEditor (26219)
Plugin: RoadSigns (26174)
Plugin: SimplifyArea (26174)
Plugin: alignways (26174)
Plugin: editgpx (26174)
Plugin: measurement (26174)
Plugin: openstreetbugs (26174)
Plugin: plastic_laf (26174)
Plugin: public_transport (26174)
Plugin: reverter (26174)
Plugin: turnrestrictions (26174)
Plugin: undelete (26196)
Plugin: waydownloader (26174)
Plugin: wayselector (26174)

org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Deleted node referenced: {Way id=119793009 version=2 D nodes=[{Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}, {Node id=319513158 version=2 V lat=53.8737868,lon=10.6913029}, {Node id=319513298 version=4 V lat=53.8738666,lon=10.6913478}, {Node id=319513159 version=2 Vh lat=53.8738877,lon=10.6912597}, {Node id=1345044966 version=2 D lat=53.8739056,lon=10.6911907}, {Node id=1345044965 version=2 D lat=53.8738144,lon=10.6911442}]}
	at org.openstreetmap.josm.data.osm.Way.checkNodes(Way.java:477)
	at org.openstreetmap.josm.data.osm.Way.fireNodesChanged(Way.java:489)
	at org.openstreetmap.josm.data.osm.Way.setNodes(Way.java:66)
	at org.openstreetmap.josm.data.osm.DataSet.unlinkNodeFromWays(DataSet.java:765)
	at org.openstreetmap.josm.data.osm.DataSet.unlinkReferencesToPrimitive(DataSet.java:814)
	at org.openstreetmap.josm.command.DeletedStateConflictResolveCommand.executeCommand(DeletedStateConflictResolveCommand.java:67)
	at org.openstreetmap.josm.command.SequenceCommand.executeCommand(SequenceCommand.java:53)
	at org.openstreetmap.josm.data.UndoRedoHandler.addNoRedraw(UndoRedoHandler.java:36)
	at org.openstreetmap.josm.data.UndoRedoHandler.add(UndoRedoHandler.java:58)
	at org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog$ApplyResolutionAction.actionPerformed(ConflictResolutionDialog.java:265)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
	at java.awt.Component.processMouseEvent(Component.java:6136)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:5901)
	at java.awt.Container.processEvent(Container.java:2105)
	at java.awt.Component.dispatchEventImpl(Component.java:4497)
	at java.awt.Container.dispatchEventImpl(Container.java:2163)
	at java.awt.Component.dispatchEvent(Component.java:4323)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
	at java.awt.Container.dispatchEventImpl(Container.java:2149)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4323)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)
	at java.awt.EventQueue.access$000(EventQueue.java:96)
	at java.awt.EventQueue$1.run(EventQueue.java:608)
	at java.awt.EventQueue$1.run(EventQueue.java:606)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
	at java.awt.EventQueue$2.run(EventQueue.java:622)
	at java.awt.EventQueue$2.run(EventQueue.java:620)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:194)
	at java.awt.Dialog$1.run(Dialog.java:1072)
	at java.awt.Dialog$3.run(Dialog.java:1126)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.Dialog.show(Dialog.java:1124)
	at java.awt.Component.show(Component.java:1492)
	at java.awt.Component.setVisible(Component.java:1444)
	at java.awt.Window.setVisible(Window.java:842)
	at java.awt.Dialog.setVisible(Dialog.java:1011)
	at org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog.setVisible(ConflictResolutionDialog.java:117)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog.resolve(ConflictDialog.java:150)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog.access$000(ConflictDialog.java:58)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog$1.mouseClicked(ConflictDialog.java:87)
	at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
	at java.awt.Component.processMouseEvent(Component.java:6139)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:5901)
	at java.awt.Container.processEvent(Container.java:2105)
	at java.awt.Component.dispatchEventImpl(Component.java:4497)
	at java.awt.Container.dispatchEventImpl(Container.java:2163)
	at java.awt.Component.dispatchEvent(Component.java:4323)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4134)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
	at java.awt.Container.dispatchEventImpl(Container.java:2149)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4323)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)
	at java.awt.EventQueue.access$000(EventQueue.java:96)
	at java.awt.EventQueue$1.run(EventQueue.java:608)
	at java.awt.EventQueue$1.run(EventQueue.java:606)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
	at java.awt.EventQueue$2.run(EventQueue.java:622)
	at java.awt.EventQueue$2.run(EventQueue.java:620)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

Attachments (2)

innenstadt.osm.bz2 (153.1 KB ) - added by phobie 13 years ago.
OSM-file of the centre of Lübeck, osmosis extract out of schleswig-holstein.osm.bz2, copyright CC-BY-SA by OpenStreetMap and contributors
6529.patch (1.5 KB ) - added by GerdP 3 years ago.

Download all attachments as: .zip

Change History (62)

by phobie, 13 years ago

Attachment: innenstadt.osm.bz2 added

OSM-file of the centre of Lübeck, osmosis extract out of schleswig-holstein.osm.bz2, copyright CC-BY-SA by OpenStreetMap and contributors

comment:1 by stoecker, 13 years ago

Priority: normalmajor
Summary: exception during conflict resolutionDeleting locally referenced objects in conflict resolution breaks data integrity

Additional description: Whenever an object is still referenced locally and conflict resolution deletes it, the result is a dataset integrity error. Conflict resolution either should also remove references or prevent resolving as long as there are references.

References are already displayed, but not handled correctly.

comment:2 by rickmastfan67, 13 years ago

Is this bug of mine (#6527) possibly the same thing?

comment:3 by Don-vip, 12 years ago

Description: modified (diff)

comment:4 by Don-vip, 11 years ago

Ticket #8374 has been marked as a duplicate of this ticket.

comment:5 by Don-vip, 11 years ago

Cc: andrei280366@… added
Description: modified (diff)

comment:6 by Don-vip, 11 years ago

Ticket #8216 has been marked as a duplicate of this ticket.

comment:7 by Don-vip, 11 years ago

Ticket #8507 has been marked as a duplicate of this ticket.

comment:8 by Don-vip, 11 years ago

Ticket #5555 has been marked as a duplicate of this ticket.

comment:9 by Don-vip, 11 years ago

Ticket #8572 has been marked as a duplicate of this ticket.

comment:10 by Don-vip, 11 years ago

Priority: majorcritical

comment:11 by skyper, 11 years ago

Ticket #8719 has been marked as a duplicate of this ticket.

comment:12 by rickmastfan67, 11 years ago

I've found a reliable way to cause this to happen so that it can be fixed hopefully.

Steps to reproduce 100% of the time:

  1. First, have the "reverter" plugin installed.
  2. Menu > History > Revert Changeset
  3. Enter the following changeset for a full revert: 15801944
  4. Once the changeset is reverted, find the following node in the conflict menu: 2274173371
  5. Once you have found that node and have highlighted it, hit the "Select" button in the Conflict area.
  6. Now, Menu > Edit > Purge (must have the utilsplugin2 plugin installed)
  7. Next, reselect the node in the conflict section and hit "resolve".
  8. Select either side in the "Deleted State" section (either side causes this problem) and hit the "Apply Resolution" button.

What happens:
JOSM crashes with an error message (at the bottom of this message).

What should happen:
JOSM should just ignore the error since you've purged the item which is as good as applying a resolution.

Also, after the error shows up, I'm unable to undo any changes that I've done (not good).

Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2013-05-19 01:34:41
Last Changed Author: akks
Revision: 5966
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2013-05-18 20:15:51 +0200 (Sat, 18 May 2013)
Last Changed Rev: 5966

Identification: JOSM/1.5 (5966 en) Windows 7 64-Bit
Memory Usage: 218 MB / 2730 MB (77 MB allocated, but free)
Java version: 1.7.0_21, Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM
VM arguments: [-Xmx3072M]
Dataset consistency test: No problems found

Plugin: ImageryCache (29484)
Plugin: OpeningHoursEditor (29435)
Plugin: buildings_tools (29596)
Plugin: mapdust (29525)
Plugin: measurement (29579)
Plugin: mirrored_download (29505)
Plugin: openstreetbugs (29435)
Plugin: osmarender (29435)
Plugin: reverter (29561)
Plugin: turnrestrictions (29435)
Plugin: undelete (29555)
Plugin: utilsplugin2 (29435)

org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Primitive must be part of the dataset: {Node id=2274173371 version=2 MVDT lat=33.0069029,lon=-81.3083172}
	at org.openstreetmap.josm.data.osm.OsmPrimitive.checkDataset(OsmPrimitive.java:333)
	at org.openstreetmap.josm.data.osm.OsmPrimitive.getReferrers(OsmPrimitive.java:947)
	at org.openstreetmap.josm.data.osm.OsmPrimitive.getReferrers(OsmPrimitive.java:968)
	at org.openstreetmap.josm.command.DeletedStateConflictResolveCommand.fillModifiedData(DeletedStateConflictResolveCommand.java:86)
	at org.openstreetmap.josm.command.Command.executeCommand(Command.java:86)
	at org.openstreetmap.josm.command.DeletedStateConflictResolveCommand.executeCommand(DeletedStateConflictResolveCommand.java:55)
	at org.openstreetmap.josm.command.SequenceCommand.executeCommand(SequenceCommand.java:52)
	at org.openstreetmap.josm.data.UndoRedoHandler.addNoRedraw(UndoRedoHandler.java:36)
	at org.openstreetmap.josm.data.UndoRedoHandler.add(UndoRedoHandler.java:58)
	at org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog$ApplyResolutionAction.actionPerformed(ConflictResolutionDialog.java:210)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$200(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.WaitDispatchSupport$2.run(Unknown Source)
	at java.awt.WaitDispatchSupport$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(Unknown Source)
	at java.awt.Dialog.show(Unknown Source)
	at java.awt.Component.show(Unknown Source)
	at java.awt.Component.setVisible(Unknown Source)
	at java.awt.Window.setVisible(Unknown Source)
	at java.awt.Dialog.setVisible(Unknown Source)
	at org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog.setVisible(ConflictResolutionDialog.java:61)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog.resolve(ConflictDialog.java:188)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog.access$400(ConflictDialog.java:65)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog$ResolveAction.actionPerformed(ConflictDialog.java:415)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$200(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

comment:13 by skyper, 11 years ago

Similar to #7621 and #8766

comment:14 by Don-vip, 11 years ago

In 5993/josm:

see #6529, comment 12: purge conflicts when purging primitives (with undo support to restore them if needed)

comment:15 by Don-vip, 11 years ago

Ticket #8867 has been marked as a duplicate of this ticket.

comment:16 by Don-vip, 10 years ago

Ticket #9986 has been marked as a duplicate of this ticket.

comment:17 by stoecker, 9 years ago

Ticket #10555 has been marked as a duplicate of this ticket.

comment:18 by skyper, 9 years ago

Ticket #7551 has been marked as a duplicate of this ticket.

comment:19 by anonymous, 8 years ago

Ticket #12148 has been marked as a duplicate of this ticket.

comment:20 by anonymous, 8 years ago

Ticket #12807 has been marked as a duplicate of this ticket.

comment:21 by skyper, 7 years ago

Ticket #14127 has been marked as a duplicate of this ticket.

comment:22 by skyper, 7 years ago

Keywords: conflict added
Version: latest

comment:23 by skyper, 7 years ago

Ticket #14134 has been marked as a duplicate of this ticket.

comment:24 by skyper, 7 years ago

Cc: alex@… added

comment:25 by skyper, 7 years ago

Cc: latte_oz naoliv mcheck Luebeck josm-openstreetmap-de.20.quedel@… added

comment:26 by skyper, 7 years ago

Ticket #14246 has been marked as a duplicate of this ticket.

comment:27 by skyper, 7 years ago

Cc: Nitrix ff5722 added

comment:28 by Don-vip, 6 years ago

Ticket #15460 has been marked as a duplicate of this ticket.

comment:29 by Don-vip, 6 years ago

Ticket #15881 has been marked as a duplicate of this ticket.

comment:30 by Don-vip, 6 years ago

Ticket #13487 has been marked as a duplicate of this ticket.

comment:31 by Don-vip, 5 years ago

Ticket #11781 has been marked as a duplicate of this ticket.

comment:32 by Don-vip, 5 years ago

Ticket #14150 has been marked as a duplicate of this ticket.

comment:33 by Don-vip, 5 years ago

Ticket #14993 has been marked as a duplicate of this ticket.

comment:34 by Don-vip, 5 years ago

Ticket #16062 has been marked as a duplicate of this ticket.

comment:35 by Don-vip, 5 years ago

Ticket #16336 has been marked as a duplicate of this ticket.

comment:36 by Don-vip, 5 years ago

Ticket #17002 has been marked as a duplicate of this ticket.

comment:37 by Don-vip, 5 years ago

Ticket #17004 has been marked as a duplicate of this ticket.

comment:38 by Don-vip, 5 years ago

Ticket #17123 has been marked as a duplicate of this ticket.

comment:39 by Don-vip, 5 years ago

Ticket #17135 has been marked as a duplicate of this ticket.

comment:40 by Don-vip, 5 years ago

Ticket #17236 has been marked as a duplicate of this ticket.

comment:41 by Don-vip, 5 years ago

Ticket #17321 has been marked as a duplicate of this ticket.

comment:42 by Don-vip, 5 years ago

Ticket #17335 has been marked as a duplicate of this ticket.

in reply to:  1 comment:43 by skyper, 4 years ago

Replying to stoecker:

Additional description: Whenever an object is still referenced locally and conflict resolution deletes it, the result is a dataset integrity error. Conflict resolution either should also remove references or prevent resolving as long as there are references.

References are already displayed, but not handled correctly.

Did anyone every look at this? At least for situations with conflicts this could be the cause for many tickets.

comment:44 by GerdP, 3 years ago

Resolution: duplicate
Status: newclosed

comment:45 by GerdP, 3 years ago

Marked as duplicate of #19438.

in reply to:  1 comment:46 by skyper, 3 years ago

Resolution: duplicate
Status: closedreopened

Replying to stoecker:

Additional description: Whenever an object is still referenced locally and conflict resolution deletes it, the result is a dataset integrity error. Conflict resolution either should also remove references or prevent resolving as long as there are references.

References are already displayed, but not handled correctly.

This ticket is not a duplicate and not fixed. It is another main cause for the problems with deleted objects and data inconsistency. It is a problem with conflict resolution with parent objects included.

#7621 seems to be a duplicate of this one.

  1. Have two data layer with the same relation and same versions but different members
    • One way with its child nodes is deleted/missing.
  2. merge layer
  3. get at least four conflicts
    • at least two about deleted nodes
    • one about the deleted way
    • one about the relation
  4. Solve conflict on relation by using the version with more members
  5. Solve all other conflicts to delete the way and its child nodes

I end up with data inconsistency as the way does not have any nodes any more and should be deleted but it is still referenced by the relation as member. Similar can happen, if the child node is deleted and the way is not deleted and the node is still in the way's node list.

comment:47 by skyper, 3 years ago

An example:

  1. download r1108753 without members or parents
  2. select relation
  3. revert cs 28537215 to new layer, reverting selection and restoring deleted objects only.
    • 18 conflicts (1 relation, 9 ways and 8 nodes)
  4. solve conflict on relation using my version
  5. Solve all pending conflicts using their version
  6. Check data consistency:
    [WARN - ZERO NODES] Way {Way id=51205700 version=3 VT nodes=[]} has zero nodes
    [WARN - ZERO NODES] Way {Way id=51205560 version=8 MVT nodes=[]} has zero nodes
    [WARN - ZERO NODES] Way {Way id=42021095 version=31 MVT> nodes=[]} has zero nodes
    [WARN - ZERO NODES] Way {Way id=95970717 version=22 MVT> nodes=[]} has zero nodes
    [WARN - ZERO NODES] Way {Way id=51205696 version=6 MVT nodes=[]} has zero nodes
    [WARN - ZERO NODES] Way {Way id=83393299 version=20 MVT> nodes=[]} has zero nodes
    
  7. open relation editor and look fo complete members with name "Eschholzstraße".
    • Find w42021095 with zero nodes and deleted state but still member of the relation
      • This is not even reported by the data consistency test.
    • There are more problems as some of the incomplete members are also deleted which will hopefully be recognized when uploading resulting in conflicts on upload.

comment:48 by GerdP, 3 years ago

OK, thanks, I can reproduce this. There are other tickets about the possibility to create empty ways or ways with only one node in Conflict dialog. Same problem, right?

comment:49 by skyper, 3 years ago

Guess for most of them it is the exact same problem. Not sure if all of them are the same but similar. I see two problems:

  1. There is no check that the child list is valid after conflict resolution of ways and relations.
  2. Conflict resolution with pending conflicts on child objects are a more complex problem.

by GerdP, 3 years ago

Attachment: 6529.patch added

comment:50 by GerdP, 3 years ago

It is not about empty ways etc. It is about calculating commands for data which is already changed in previous commands. Typical error when commands are bundled in a SequenceCommand.
The small patch fixes this but the effect is that you see more commands on the undo stack. To solve this we need a modified SequenceCommand like the JoinAreaCommand or the AutofixCommand which doesn't execute commands again.
Working on that later...

comment:51 by GerdP, 3 years ago

In 17273/josm:

see #6529: Deleting locally referenced objects in conflict resolution breaks data integrity

  • Correct calculation of commands when a selection of conflicts is resolved to "my" or "their" version

The old code computed a list of commands before executing any of them. This fails when the execution of a command changes the data that is used by following commands. I don't know if this fixes all problems. I expected that these conflicts also require a special order, but there is no code to sort them. The displayed list doesn't seem to be ordered.

comment:52 by GerdP, 3 years ago

@skyper: Not sure if you reopened the wrong ticket. I am pretty sure that this one is a duplicate of #19438.

comment:53 by GerdP, 3 years ago

Hold on... After a undo+redo the data integrety is broken again.

comment:54 by skyper, 3 years ago

#19438 is only about nodes and their parent ways. Nothing about relations and their member ways.

  • We have #14196 and #7103 which cover the simple cases, where invalid objects are created through direct user action
  • And then we have the cases with deleted objects as children.
    1. the simple case, like above, adding a deleted child object in conflict resolution
    2. the complicated case, when there are remaining conflicts on the children which can lead to deleting them.

The simple case could be denied if JOSM makes sure to have at least two remaining child nodes for a way or at least one relation member after removing the deleted objects from the way's node list or relations's member list.

Think, conflicts need always be solved from bottom to top, e.g. first nodes than ways and last relations. Then only relations are still critical but ways should be fine.

comment:55 by GerdP, 3 years ago

I refer to the stacktrace for this ticket (#6529) which is similar to the one in #19438.
I'd like to close this again and continue discussion in a ticket that is about the use of right click menu with "Resolve to [my|their] versions". Do we have a specific ticket for that?

comment:56 by GerdP, 3 years ago

Resolution: fixed
Status: reopenedclosed

Let's contnue in #19792

comment:57 by Klumbumbus, 3 years ago

Milestone: 20.10

in reply to:  55 comment:58 by skyper, 3 years ago

Replying to GerdP:

I refer to the stacktrace for this ticket (#6529) which is similar to the one in #19438.
I'd like to close this again and continue discussion in a ticket that is about the use of right click menu with "Resolve to [my|their] versions". Do we have a specific ticket for that?

Ok, but this is not only about the use of the right click menu. User can easily produce the same result manually and even mixes of children.
#7621 is the ticket about relations and their children but you like to have new tickets, I guess.

comment:59 by skyper, 3 years ago

See #20091 for one example.

comment:60 by Don-vip, 3 years ago

Milestone: 20.1020.11

Milestone renamed

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. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.