Modify

Opened 13 months ago

Closed 6 months ago

Last modified 6 months ago

#16904 closed defect (fixed)

DataIntegrityProblemException (ImproveWayAccuracyAction.drawIntersectingWayHelperLines)

Reported by: anonymous Owned by: Don-vip
Priority: normal Milestone: 19.05
Component: Core Version:
Keywords: template_report Cc:

Description

What steps will reproduce the problem?

  1. UNDO(CMD+Z)

What is the expected result?

What happens instead?

Please provide any additional information below. Attach a screenshot if possible.

URL:https://josm.openstreetmap.de/svn/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2018-10-01 23:59:36 +0200 (Mon, 01 Oct 2018)
Build-Date:2018-10-01 22:08:47
Revision:14289
Relative:URL: ^/trunk

Identification: JOSM/1.5 (14289 zh_CN) Mac OS X 10.13.6
OS Build number: Mac OS X 10.13.6 (17G65)
Memory Usage: 790 MB / 1820 MB (494 MB allocated, but free)
Java version: 1.8.0_191-b12, Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM
Screen: Display 69733312 1440x900
Maximum Screen Size: 1440x900
VM arguments: [-Djava.util.Arrays.useLegacyMergeSort=true, -Djnlp.application.href=https://josm.openstreetmap.de/download/josm.jnlp, -Djnlp.tk=awt, -Djnlpx.jvm=<java.home>/bin/java, -Djnlpx.splashport=-1, -Djnlpx.home=<java.home>/bin, -Djnlpx.remove=false, -Djnlpx.offline=false, -Djnlpx.relaunch=true, -Djnlpx.session.data=/var/folders/_6/6m44ssj55fl088dwqll46w880000gn/T/session1761654203192420756, -Djnlpx.heapsize=-1,2147483648, -Djava.security.policy=file:<java.home>/lib/security/javaws.policy, -DtrustProxy=true, -Djnlpx.origFilenameArg=${HOME}/Library/Application Support/Oracle/Java/Deployment/cache/6.0/56/1ee8cfb8-7717986f, -Dsun.awt.warmup=true, -Djava.security.manager]
Dataset consistency test: No problems found

Map paint styles:
- https://josm.openstreetmap.de/josmfile?page=Styles/Maxspeed&zip=1

Last errors/warnings:
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- W: java.io.IOException: Attribution is not loaded yet
- E: Handled by bug report queue: org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Primitive must be part of the dataset: {Node id=-40751 version=0 MV lat=24.385729991966933,lon=115.7068598163128}


=== REPORTED CRASH DATA ===
BugReportExceptionHandler#handleException:
No data collected.

Warning issued by: BugReportExceptionHandler#handleException

=== STACK TRACE ===
Thread: AWT-EventQueue-2 (50) of javawsApplicationThreadGroup
org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Primitive must be part of the dataset: {Node id=-40751 version=0 MV lat=24.385729991966933,lon=115.7068598163128}
	at org.openstreetmap.josm.data.osm.OsmPrimitive.checkDataset(OsmPrimitive.java:247)
	at org.openstreetmap.josm.data.osm.OsmPrimitive.getReferrers(OsmPrimitive.java:826)
	at org.openstreetmap.josm.data.osm.OsmPrimitive.getReferrers(OsmPrimitive.java:848)
	at org.openstreetmap.josm.actions.mapmode.ImproveWayAccuracyAction.drawIntersectingWayHelperLines(ImproveWayAccuracyAction.java:333)
	at org.openstreetmap.josm.actions.mapmode.ImproveWayAccuracyAction.paint(ImproveWayAccuracyAction.java:324)
	at org.openstreetmap.josm.actions.mapmode.ImproveWayAccuracyAction$1.paint(ImproveWayAccuracyAction.java:113)
	at org.openstreetmap.josm.gui.MapView.drawTemporaryLayers(MapView.java:650)
	at org.openstreetmap.josm.gui.MapView.drawMapContent(MapView.java:587)
	at org.openstreetmap.josm.gui.MapView.paint(MapView.java:490)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Attachments (0)

Change History (15)

comment:1 Changed 13 months ago by simon04

Owner: changed from team to anonymous
Status: newneedinfo
Summary: Editor errorDataIntegrityProblemException

Please describe what you've been doing in detail since otherwise reproducing this DataIntegrityProblemException will be impossible.

comment:2 Changed 13 months ago by GerdP

Probably a duplicate of #16875

comment:3 in reply to:  2 Changed 13 months ago by Don-vip

Replying to GerdP:

Probably a duplicate of #16875

Not the same error.

comment:4 Changed 13 months ago by Don-vip

Owner: changed from anonymous to team
Status: needinfonew
Summary: DataIntegrityProblemExceptionDataIntegrityProblemException (ImproveWayAccuracyAction.drawIntersectingWayHelperLines)

comment:5 Changed 7 months ago by Don-vip

Owner: changed from team to Don-vip
Status: newassigned

comment:6 Changed 7 months ago by Don-vip

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

comment:7 Changed 7 months ago by Don-vip

Milestone: 19.04

comment:8 Changed 7 months ago by Don-vip

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

comment:9 Changed 7 months ago by Don-vip

Milestone: 19.0419.05

comment:10 Changed 6 months ago by Don-vip

I can reproduce on Windows as follows:

  • change the undo shortcut to a simple letter (for example 'Z') without any modifier (especially no ctrl or alt, as they are used by ImproveWayAccuracy)
  • create a new curved way
  • go into ImproveWayAccuracy mode
  • get the cursor near a node in the middle of the way so that helper lines are displayed
  • hit the undo shortcut until you get past the cursor location
  • exception:
Relative:URL: ^/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2019-05-03 23:47:54 +0200 (Fri, 03 May 2019)
Revision:15043
Build-Date:2019-05-04 01:30:51
URL:https://josm.openstreetmap.de/svn/trunk

Identification: JOSM/1.5 (15043 en) Windows 10 64-Bit
OS Build number: Windows 10 Pro 1803 (17134)
Memory Usage: 459 MB / 4088 MB (124 MB allocated, but free)
Java version: 11.0.1+13-LTS, Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM
Screen: \Display0 1920x1080, \Display1 1920x1080
Maximum Screen Size: 1920x1080
Dataset consistency test: No problems found

Last errors/warnings:
- W: No configuration settings found.  Using hardcoded default values for all pools.
- E: Handled by bug report queue: org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Primitive must be part of the dataset: {Node id=-102245 version=0 MV lat=43.642686760898826,lon=1.3643082325279086}


=== REPORTED CRASH DATA ===
BugReportExceptionHandler#handleException:
No data collected.

Warning issued by: BugReportExceptionHandler#handleException

=== STACK TRACE ===
Thread: AWT-EventQueue-0 (19) of main
org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Primitive must be part of the dataset: {Node id=-102245 version=0 MV lat=43.642686760898826,lon=1.3643082325279086}
	at org.openstreetmap.josm.data.osm.OsmPrimitive.checkDataset(OsmPrimitive.java:199)
	at org.openstreetmap.josm.data.osm.OsmPrimitive.referrers(OsmPrimitive.java:777)
	at org.openstreetmap.josm.data.osm.OsmPrimitive.getReferrers(OsmPrimitive.java:803)
	at org.openstreetmap.josm.data.osm.OsmPrimitive.getReferrers(OsmPrimitive.java:809)
	at org.openstreetmap.josm.actions.mapmode.ImproveWayAccuracyAction.drawIntersectingWayHelperLines(ImproveWayAccuracyAction.java:335)
	at org.openstreetmap.josm.actions.mapmode.ImproveWayAccuracyAction.paint(ImproveWayAccuracyAction.java:326)
	at org.openstreetmap.josm.actions.mapmode.ImproveWayAccuracyAction$1.paint(ImproveWayAccuracyAction.java:115)
	at org.openstreetmap.josm.gui.MapView.drawTemporaryLayers(MapView.java:651)
	at org.openstreetmap.josm.gui.MapView.drawMapContent(MapView.java:588)
	at org.openstreetmap.josm.gui.MapView.paint(MapView.java:491)
	at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)
	at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)
	at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)
	at java.desktop/javax.swing.JSplitPane.paintChildren(JSplitPane.java:1024)
	at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)
	at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)
	at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)
	at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5255)
	at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1643)
	at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1618)
	at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1556)
	at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1323)
	at java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5203)
	at java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5013)
	at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:865)
	at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:848)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:848)
	at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:823)
	at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:772)
	at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1890)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

comment:11 Changed 6 months ago by Don-vip

Resolution: fixed
Status: assignedclosed

In 15050/josm:

fix #16904 - make ImproveWayAccuracy aware of primitives deletion to ensure consistency (avoids DataIntegrityProblemException seen on macOS when using undo)

comment:12 Changed 6 months ago by GerdP

Resolution: fixed
Status: closedreopened

I can still reproduce the problem as you described. A possible fix might be to add

        if (candidateNode.getDataSet() == null)
            return;

at the beginning of drawIntersectingWayHelperLines()

Last edited 6 months ago by GerdP (previous) (diff)

comment:13 Changed 6 months ago by Don-vip

No, because it would lead to inconsistent painting (candidateNode is used before the call to this method). Better to skip painting entirely.

comment:14 Changed 6 months ago by Don-vip

Resolution: fixed
Status: reopenedclosed

In 15052/josm:

fix #16904 - make sure ImproveWayAccuracy does not try to paint temporary layer if state is incoherent

comment:15 Changed 6 months ago by GerdP

Yes, better

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Don-vip.
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.