Opened 15 years ago

Last modified 11 years ago

#5778 closed defect

Can't undelete relations — at Version 11

Reported by: rickmastfan67 Owned by: Nakor
Priority: blocker Milestone:
Component: Plugin undelete Version: latest
Keywords: undelete; relations; cascading error messages Cc:

Description (last modified by Don-vip)

I was just trying to un-delete a relation that somebody accidentally deleted the other day (relation: 452597). When I did that, nothing was restored in JOSM. Then, for the fun of it, I just hit Ctrl-A to see if I could somehow select it if it was really un-deleted, but wasn't shown. When I did that, JOSM threw up an error message.

Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2010-12-24 02:31:25
Last Changed Author: Upliner
Revision: 3740
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2010-12-23 15:38:34 +0100 (Thu, 23 Dec 2010)
Last Changed Rev: 3740

Identification: JOSM/1.5 (3740 en)
Memory Usage: 94 MB / 455 MB (33 MB allocated, but free)
Java version: 1.6.0_23, Sun Microsystems Inc., Java HotSpot(TM) 64-Bit Server VM
Operating system: Windows 7

Dataset consistency test:
[COMPLETE WITHOUT COORDINATES] {Node id=-1 version=0 MVT } is not incomplete but has null coordinates
Exception during dataset integrity test:
java.lang.NullPointerException
	at org.openstreetmap.josm.data.osm.DatasetConsistencyTest.searchNodes(DatasetConsistencyTest.java:82)
	at org.openstreetmap.josm.data.osm.DatasetConsistencyTest.runTest(DatasetConsistencyTest.java:143)
	at org.openstreetmap.josm.data.osm.DatasetConsistencyTest.runTests(DatasetConsistencyTest.java:157)
	at org.openstreetmap.josm.actions.ShowStatusReportAction.getReportHeader(ShowStatusReportAction.java:69)
	at org.openstreetmap.josm.tools.BugReportExceptionHandler.handleException(BugReportExceptionHandler.java:94)
	at org.openstreetmap.josm.tools.BugReportExceptionHandler.handle(BugReportExceptionHandler.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at java.awt.EventDispatchThread.handleException(Unknown Source)
	at java.awt.EventDispatchThread.processException(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)


Plugin: Create_grid_of_ways (21706)
Plugin: OpeningHoursEditor (24290)
Plugin: RoadSigns (22850)
Plugin: alignways (24815)
Plugin: buildings_tools (23804)
Plugin: colorscheme (21563)
Plugin: download_along (22427)
Plugin: imageryadjust (24866)
Plugin: measurement (22547)
Plugin: michigan_left (22369)
Plugin: openstreetbugs (23747)
Plugin: openvisible (21706)
Plugin: osmarender (22765)
Plugin: restart (24396)
Plugin: reverter (23278)
Plugin: routing (23561)
Plugin: tageditor (21026)
Plugin: tagging-preset-tester (22454)
Plugin: terracer (24713)
Plugin: turnrestrictions (24125)
Plugin: undelete (22365)
Plugin: utilsplugin2 (24792)
Plugin: walkingpapers (22549)
Plugin: waydownloader (21706)
Plugin: wayselector (23103)

java.lang.NullPointerException
	at org.openstreetmap.josm.data.osm.visitor.paint.MapPaintVisitor.drawNode(MapPaintVisitor.java:114)
	at org.openstreetmap.josm.data.osm.visitor.paint.MapPaintVisitor.visitAll(MapPaintVisitor.java:660)
	at org.openstreetmap.josm.gui.layer.OsmDataLayer.paint(OsmDataLayer.java:268)
	at org.openstreetmap.josm.gui.MapView.paintLayer(MapView.java:448)
	at org.openstreetmap.josm.gui.MapView.paint(MapView.java:527)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JSplitPane.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintToOffscreen(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
	at javax.swing.RepaintManager.paint(Unknown Source)
	at javax.swing.JComponent._paintImmediately(Unknown Source)
	at javax.swing.JComponent.paintImmediately(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(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)

Then JOSM kept throwing up more error messages making it almost impossible to shut it down. And every time I looked at the error report, it was different from the last! So, I found a major cascading bug that could annoy the heck out of anybody because it never ends! (if it ends on your end, you got lucky) The only way I could get JOSM to close was to crash Java via the task manager, hence the "Blocker" tag.

Change History (11)

comment:1 by rickmastfan67, 15 years ago

Whoops, forgot to login. That was my report above.

comment:2 by rickmastfan67, 15 years ago

Another thing, I was just able to restore relation 452597 via the "revert changeset" plugin. So, you can use relation 1310659 to duplicate this. Exact same thing happens as what I reported above.

comment:3 by bastiK, 15 years ago

What do you do exactly when trying to undelete? If rel1310659 isn't deleted at the moment, how can we reproduce?

Last edited 15 years ago by bastiK (previous) (diff)

comment:4 by rickmastfan67, 15 years ago

Relation 1310659 IS deleted. And it was deleted earlier when you responded.

http://www.openstreetmap.org/browse/relation/1310659

comment:5 by rickmastfan67, 15 years ago

Have you been able to duplicate this yet? Just tested this with 3749 and still able to duplicate it myself with the relation that is deleted in the post above this (1310659).

Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2010-12-29 00:29:48
Last Changed Author: jttt
Revision: 3749
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2010-12-28 18:40:12 +0100 (Tue, 28 Dec 2010)
Last Changed Rev: 3749

Identification: JOSM/1.5 (3749 en)
Memory Usage: 79 MB / 455 MB (46 MB allocated, but free)
Java version: 1.6.0_23, Sun Microsystems Inc., Java HotSpot(TM) 64-Bit Server VM
Operating system: Windows 7

Dataset consistency test:
[COMPLETE WITHOUT COORDINATES] {Node id=-1 version=0 MVT } is not incomplete but has null coordinates
Exception during dataset integrity test:
java.lang.NullPointerException
	at org.openstreetmap.josm.data.osm.DatasetConsistencyTest.searchNodes(DatasetConsistencyTest.java:82)
	at org.openstreetmap.josm.data.osm.DatasetConsistencyTest.runTest(DatasetConsistencyTest.java:143)
	at org.openstreetmap.josm.data.osm.DatasetConsistencyTest.runTests(DatasetConsistencyTest.java:157)
	at org.openstreetmap.josm.actions.ShowStatusReportAction.getReportHeader(ShowStatusReportAction.java:69)
	at org.openstreetmap.josm.tools.BugReportExceptionHandler.handleException(BugReportExceptionHandler.java:94)
	at org.openstreetmap.josm.tools.BugReportExceptionHandler.handle(BugReportExceptionHandler.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at java.awt.EventDispatchThread.handleException(Unknown Source)
	at java.awt.EventDispatchThread.processException(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)


Plugin: Create_grid_of_ways (21706)
Plugin: OpeningHoursEditor (24290)
Plugin: RoadSigns (22850)
Plugin: alignways (24815)
Plugin: buildings_tools (23804)
Plugin: colorscheme (21563)
Plugin: download_along (22427)
Plugin: imageryadjust (24866)
Plugin: measurement (22547)
Plugin: michigan_left (22369)
Plugin: openstreetbugs (23747)
Plugin: openvisible (21706)
Plugin: osmarender (22765)
Plugin: restart (24396)
Plugin: reverter (24887)
Plugin: routing (23561)
Plugin: tageditor (21026)
Plugin: tagging-preset-tester (22454)
Plugin: terracer (24889)
Plugin: turnrestrictions (24125)
Plugin: undelete (22365)
Plugin: utilsplugin2 (24792)
Plugin: walkingpapers (22549)
Plugin: waydownloader (21706)
Plugin: wayselector (23103)

java.lang.NullPointerException
	at org.openstreetmap.josm.gui.DefaultNameFormatter.format(DefaultNameFormatter.java:113)
	at org.openstreetmap.josm.data.osm.Node.getDisplayName(Node.java:218)
	at org.openstreetmap.josm.gui.OsmPrimitivRenderer.getComponentText(OsmPrimitivRenderer.java:96)
	at org.openstreetmap.josm.gui.OsmPrimitivRenderer.renderer(OsmPrimitivRenderer.java:69)
	at org.openstreetmap.josm.gui.OsmPrimitivRenderer.getListCellRendererComponent(OsmPrimitivRenderer.java:44)
	at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
	at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)
	at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source)
	at javax.swing.JComponent.getPreferredSize(Unknown Source)
	at javax.swing.ScrollPaneLayout.layoutContainer(Unknown Source)
	at java.awt.Container.layout(Unknown Source)
	at java.awt.Container.doLayout(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validate(Unknown Source)
	at javax.swing.RepaintManager.validateInvalidComponents(Unknown Source)
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(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)

I also have noticed that whenever I reselect the "un-delete" option that it always reverts back to "node". This behaviour is completely different from, say, "Download Object" where it remebers what type of item you downloaded last. Maybe this has something to do with this problem? Is the "un-delete" thinking that it should download a node with the ID of 1310659 instead of the relation with the same ID?

comment:6 by bastiK, 15 years ago

See [o24905] (add rudimentary support for undeleting relations)

comment:7 by bastiK, 15 years ago

Undeleting relations was not implemented at all. I added partial support: If all relation members are visible (not deleted), it should work. Please keep the ticket open.

comment:8 by bastiK, 15 years ago

Summary: Can't undelete relations results into never ending cascading error messagesCan't undelete relations

comment:9 by skyper, 15 years ago

Sadly no improvement so far (r4177).

But the Exception changed due to o24905 tested with relation 1310659:

Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2011-06-27 01:31:44
Last Changed Author: stoecker
Revision: 4177
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2011-06-26 17:45:48 +0200 (Sun, 26 Jun 2011)
Last Changed Rev: 4177

Identification: JOSM/1.5 (4177 en)
Memory Usage: 26 MB / 248 MB (6 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

Plugin: Curves (16.master-4f7c5a0)
Plugin: OpeningHoursEditor (26174)
Plugin: alignways (26174)
Plugin: buildings_tools (26174)
Plugin: multipoly-convert (26174)
Plugin: reltoolbox (26174)
Plugin: reverter (26174)
Plugin: terracer (26174)
Plugin: turnlanes (26192)
Plugin: undelete (26174)
Plugin: utilsplugin2 (26174)
Plugin: waydownloader (26174)

java.lang.NoClassDefFoundError: org/openstreetmap/josm/actions/downloadtasks/DownloadPrimitiveTask
	at org.openstreetmap.josm.plugins.undelete.Undelete.undelete(Undelete.java:151)
	at org.openstreetmap.josm.plugins.undelete.Undelete$UndeleteAction.actionPerformed(Undelete.java:124)
	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.AbstractButton.doClick(AbstractButton.java:374)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:829)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:873)
	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)
Caused by: java.lang.ClassNotFoundException: org.openstreetmap.josm.actions.downloadtasks.DownloadPrimitiveTask
	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
	... 41 more

in reply to:  9 comment:10 by rickmastfan67, 15 years ago

Replying to skyper:

Sadly no improvement so far (r4177).

But the Exception changed due to o24905 tested with relation 1310659:

Well, the reason is because relation 1310659's only way in the relation is also deleted. bastiK said in comment:7 that if the way is also deleted, it wouldn't work (yet). Thus, that's why it crashed on ya.

comment:11 by Don-vip, 13 years ago

Description: modified (diff)
Reporter: changed from anonymous to rickmastfan67
Note: See TracTickets for help on using tickets.