Modify

Opened 12 years ago

Closed 5 years ago

#7481 closed defect (fixed)

Merging does not find conflicts and breaks routing or leaves unconnected nodes

Reported by: skyper Owned by: team
Priority: critical Milestone: 19.03
Component: Core Version: latest
Keywords: merge conflict Cc: jttt

Description

Playing with ways to reproduce #7266 I stumbed into a heavy bug when merging layers.

Just merge B on A in the sample and have a look at the highway=track [id:0]

Using /usr/lib/jvm/java-6-openjdk/bin/java to execute josm.
Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2012-03-06 02:36:00
Last Changed Author: Don-vip
Revision: 5046
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2012-03-05 22:41:23 +0100 (Mon, 05 Mar 2012)
Last Changed Rev: 5046

Attachments (3)

7481_sample.tar.bz2 (2.3 KB ) - added by skyper 12 years ago.
sample files
7481_sample2.tar.bz2 (2.7 KB ) - added by skyper 12 years ago.
second sample files
7481_sample3.tar.bz2 (646 bytes ) - added by skyper 7 years ago.
example 3

Download all attachments as: .zip

Change History (15)

by skyper, 12 years ago

Attachment: 7481_sample.tar.bz2 added

sample files

comment:1 by skyper, 12 years ago

I have tested a bit more and have to say conflict management is really broken !

Once I hit #7266 and several times the second exception mention in ticket 7266 after merging and solving the conflict by using all of A and the new node of C

Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2012-03-06 02:36:00
Last Changed Author: Don-vip
Revision: 5046
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2012-03-05 22:41:23 +0100 (Mon, 05 Mar 2012)
Last Changed Rev: 5046

Identification: JOSM/1.5 (5046 de)
Memory Usage: 61 MB / 248 MB (7 MB allocated, but free)
Java version: 1.6.0_18, Sun Microsystems Inc., OpenJDK Client VM
Operating system: Linux
Dataset consistency test: No problems found


java.lang.NullPointerException
	at org.openstreetmap.josm.gui.conflict.pair.ListMergeModel.copy(ListMergeModel.java:348)
	at org.openstreetmap.josm.gui.conflict.pair.ListMergeModel.copyBeforeCurrent(ListMergeModel.java:383)
	at org.openstreetmap.josm.gui.conflict.pair.ListMergeModel.copyTheirBeforeCurrent(ListMergeModel.java:410)
	at org.openstreetmap.josm.gui.conflict.pair.ListMerger$CopyBeforeCurrentRightAction.actionPerformed(ListMerger.java:597)
	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:62)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog.resolve(ConflictDialog.java:146)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog.access$000(ConflictDialog.java:56)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog$ResolveAction.actionPerformed(ConflictDialog.java:344)
	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.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)

There seems to be no way to proper solve conflicts !

by skyper, 12 years ago

Attachment: 7481_sample2.tar.bz2 added

second sample files

comment:2 by skyper, 12 years ago

  • first example is reproducable since API 0.6 introduction.
  • second example was introduced between r2880 and r2887.
Last edited 12 years ago by skyper (previous) (diff)

comment:3 by skyper, 12 years ago

Cc: jttt added

comment:4 by skyper, 12 years ago

Just had another occasion where this can lead to real damage !

  1. download two intersecting ways (A,B).
  2. unglue the intersecting node and delete the new node (id:0). (A)
  3. purge the unmodified way (B)
  4. redownload the modified way (A)

The previous intersecting node is downloaded again and appears as lonely node without connection.

comment:5 by skyper, 12 years ago

Example 2 is fixed, both other cases with "lonely" nodes/missing conflicts remain.

r5309

comment:6 by skyper, 12 years ago

Have a look at #7266 with files:7266_2_samples.tar.bz2 for another example:

  1. open files
  2. activate layer A
  3. merge
  4. solve conflict using all elements from their (A)

the way with id:0 is deleted and a lonely node remains.

comment:7 by skyper, 11 years ago

Both examples are still reproducable.

Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2013-02-04 02:31:36
Last Changed Author: simon04
Revision: 5693
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2013-02-03 11:48:30 +0100 (Sun, 03 Feb 2013)
Last Changed Rev: 5693

Identification: JOSM/1.5 (5693 de)
Memory Usage: 68 MB / 643 MB (32 MB allocated, but free)
Java version: 1.6.0_24, Sun Microsystems Inc., OpenJDK 64-Bit Server VM
Operating system: Linux
Dataset consistency test: No problems found

comment:8 by skyper, 11 years ago

Just had real problems to produce a conflict.

  1. Download a node (layer A)
  2. duplicate layer (layer B)
  3. move A and delete it
  4. move B and add a tag
  5. merge B on A

no conflict !

merging A on B leads to the expected conflict.

Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2013-09-01 01:34:23
Last Changed Author: bastiK
Revision: 6212
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2013-08-31 10:50:59 +0200 (Sat, 31 Aug 2013)
Last Changed Rev: 6212

Identification: JOSM/1.5 (6212 en) Linux Debian GNU/Linux 7.1 (wheezy)
Memory Usage: 581 MB / 592 MB (362 MB allocated, but free)
Java version: 1.7.0_25, Oracle Corporation, OpenJDK 64-Bit Server VM
Java package: openjdk-7-jre:amd64-7u25-2.3.10-1~deb7u1
Dataset consistency test: No problems found

Plugin: OpeningHoursEditor (29854)
Plugin: conflation (0.1.6)
Plugin: jts (29854)
Plugin: mirrored_download (29854)
Plugin: notes (v0.5)
Plugin: openstreetbugs (29854)
Plugin: reverter (29854)
Plugin: undelete (29854)
Plugin: utilsplugin2 (29854)
Plugin: wikipedia (29854)

by skyper, 7 years ago

Attachment: 7481_sample3.tar.bz2 added

example 3

comment:9 by skyper, 7 years ago

Example one is still reproducible.

Replying to skyper:

  1. Download a node (layer A)
  2. duplicate layer (layer B)
  3. move A and delete it
  4. move B and add a tag
  5. merge B on A

no conflict !

merging A on B leads to the expected conflict.

Can reproduce, please have a look at attached example file 3.

r11428

comment:10 by Don-vip, 5 years ago

Milestone: 19.03

comment:11 by Don-vip, 5 years ago

Priority: blockercritical

comment:12 by Don-vip, 5 years ago

Resolution: fixed
Status: newclosed

In 14922/josm:

fix #7481 - add missing conflict when merging a primitive modified and deleted in two data sets

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.