Modify

Opened 7 years ago

Last modified 22 months ago

#7481 new defect

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

Reported by: skyper Owned by: team
Priority: blocker Milestone:
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 7 years ago.
sample files
7481_sample2.tar.bz2 (2.7 KB) - added by skyper 7 years ago.
second sample files
7481_sample3.tar.bz2 (646 bytes) - added by skyper 22 months ago.
example 3

Download all attachments as: .zip

Change History (12)

Changed 7 years ago by skyper

Attachment: 7481_sample.tar.bz2 added

sample files

comment:1 Changed 7 years ago by skyper

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 !

Changed 7 years ago by skyper

Attachment: 7481_sample2.tar.bz2 added

second sample files

comment:2 Changed 7 years ago by skyper

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

comment:3 Changed 7 years ago by skyper

Cc: jttt added

comment:4 Changed 7 years ago by skyper

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 Changed 6 years ago by skyper

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

r5309

comment:6 Changed 6 years ago by skyper

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 Changed 6 years ago by skyper

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 Changed 5 years ago by skyper

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)

Changed 22 months ago by skyper

Attachment: 7481_sample3.tar.bz2 added

example 3

comment:9 Changed 22 months ago by skyper

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

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The owner will remain team.
as The resolution will be set.
to The owner will be changed from team to the specified user.
The owner will change to skyper
as duplicate The resolution will be set to duplicate.The specified ticket will be cross-referenced with this ticket
The owner will be changed from team to anonymous.

Add Comment


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

 
Note: See TracTickets for help on using tickets.