Modify

Opened 2 months ago

Closed 2 months ago

Last modified 2 months ago

#20091 closed defect (fixed)

Downloading incomplete, deleted members leads to data inconsitency

Reported by: skyper Owned by: GerdP
Priority: major Milestone: 20.12
Component: Core Version: latest
Keywords: template_report download incomplete member Cc:

Description (last modified by skyper)

What steps will reproduce the problem?

  1. Download relation #1108752 without members or parents
  2. Select relation
  3. Revert changeset #28756944, choosing "only selection" and "new layer"
  4. Solve conflict to my version (old)
  5. Download members
  6. Look at data consistency (ok)
  7. Download incomplete members
  8. Look at data consistency (not ok: deleted members referenced)
  9. Duplicate layer

What is the expected result?

  1. "Download members" should download all incomplete members
  2. No data inconsistency but conflicts about deleted referenced objects or some info that I have to undelete these objects.
  3. No exceptions

What happens instead?

  1. Different results between "download members" and "download incomplete members"
  2. Data inconsistency
  3. Exception

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

This is more or less the problem I've described six years ago in #7621 in more details.
As the relation editor silently removes those inconsistent members, you do not get any glue about the problem anymore.

Have to check if the same problem exists with ways and their incomplete, deleted child nodes. It should be at least possible by messing up with conflict resolution.

Relative:URL: ^/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2020-11-15 19:47:37 +0100 (Sun, 15 Nov 2020)
Revision:17313
Build-Date:2020-11-15 18:50:11
URL:https://josm.openstreetmap.de/svn/trunk

Dataset consistency test:
[DELETED REFERENCED] {Relation id=1108752 version=29 MVT [way 4866766, way 235394448, way 4867040, way 71523381, way 31649896, way 144891949, way 69992858, way 69992859, way 144907351, way 144907236, way 82459733, way 70686302, way 70686300, way 42696742, way 71523383, way 71523379, way 24982657, way 223361654, way 223361655, way 223361676, way 71897870, way 71523376, way 30579750, way 45391229, way 115631602, way 115631600, way 326046223]} refers to deleted primitive {Way id=326046223 version=2 D nodes=[]}


Plugins:
+ reverter (35640)

Last errors/warnings:
- 04877.492 W: Conflicts detected - <html>There was 1 conflict detected.</html>
- 05221.057 E: Handled by bug report queue: org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Deleted member referenced: {Relation id=1108752 version=29 MVT [way 4866766, way 235394448, way 4867040, way 71523381, way 31649896, way 144891949, way 69992858, way 69992859, way 144907351, way 144907236, way 82459733, way 70686302, way 70686300, way 42696742, way 71523383, way 71523379, way 24982657, way 223361654, way 223361655, way 223361676, way 71897870, way 71523376, way 30579750, way 45391229, way 115631602, way 115631600, way 326046223]} (changed by the following commands: [Partially revert changeset 28756944], [Sequence: Conflict Resolution])


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

Warning issued by: BugReportExceptionHandler#handleException

=== STACK TRACE ===
Thread: AWT-EventQueue-0 (17) of main
org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Deleted member referenced: {Relation id=1108752 version=29 MVT [way 4866766, way 235394448, way 4867040, way 71523381, way 31649896, way 144891949, way 69992858, way 69992859, way 144907351, way 144907236, way 82459733, way 70686302, way 70686300, way 42696742, way 71523383, way 71523379, way 24982657, way 223361654, way 223361655, way 223361676, way 71897870, way 71523376, way 30579750, way 45391229, way 115631602, way 115631600, way 326046223]} (changed by the following commands: [Partially revert changeset 28756944], [Sequence: Conflict Resolution])
	at org.openstreetmap.josm.data.osm.Relation.checkMembers(Relation.java:492)
	at org.openstreetmap.josm.data.osm.Relation.fireMembersChanged(Relation.java:504)
	at org.openstreetmap.josm.data.osm.Relation.setMembers(Relation.java:61)
	at org.openstreetmap.josm.data.osm.DataSet.<init>(DataSet.java:229)
	at org.openstreetmap.josm.gui.dialogs.layer.DuplicateAction.duplicate(DuplicateAction.java:57)
	at org.openstreetmap.josm.gui.dialogs.layer.DuplicateAction.actionPerformed(DuplicateAction.java:64)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:369)
	at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1020)
	at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1064)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6635)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
	at java.desktop/java.awt.Component.processEvent(Component.java:6400)
	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5011)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
	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.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
	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:742)
	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)

=== RUNNING THREADS ===
Thread: Finalizer (3) of system
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
java.base@11.0.9/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:170)

Thread: Timer-3 (64) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.Object.wait(Object.java:328)
java.base@11.0.9/java.util.TimerThread.mainLoop(Timer.java:527)
java.base@11.0.9/java.util.TimerThread.run(Timer.java:506)

Thread: main-worker-0 (55) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-5 (70) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-0 (65) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-16 (81) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: Timer-0 (42) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.util.TimerThread.mainLoop(Timer.java:553)
java.base@11.0.9/java.util.TimerThread.run(Timer.java:506)

Thread: TMS-downloader-4 (69) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-12 (77) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-6 (71) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: image-fetcher-0 (37) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: Weak reference cleaner (24) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
app//org.openstreetmap.josm.tools.ListenableWeakReference.clean(ListenableWeakReference.java:60)
app//org.openstreetmap.josm.tools.ListenableWeakReference$$Lambda$394/0x000000084045e040.run(Unknown Source)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: GT authority factory disposer (40) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.Object.wait(Object.java:328)
java.base@11.0.9/java.util.TimerThread.mainLoop(Timer.java:527)
java.base@11.0.9/java.util.TimerThread.run(Timer.java:506)

Thread: styled-map-renderer-9 (196) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1628)
java.base@11.0.9/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: TMS-downloader-14 (79) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: Java2D Disposer (13) of system
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
java.desktop@11.0.9/sun.java2d.Disposer.run(Disposer.java:144)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: Common-Cleaner (9) of InnocuousThreadGroup
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@11.0.9/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:148)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)
java.base@11.0.9/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:134)

Thread: AWT-EventQueue-0 (17) of main
Stacktrace see above.

Thread: TMS-downloader-10 (75) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: ForkJoinPool.commonPool-worker-7 (221) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1628)
java.base@11.0.9/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: AWT-XAWT (16) of system
java.desktop@11.0.9/sun.awt.X11.XToolkit.waitForEvents(Native Method)
java.desktop@11.0.9/sun.awt.X11.XToolkit.run(XToolkit.java:684)
java.desktop@11.0.9/sun.awt.X11.XToolkit.run(XToolkit.java:648)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: RemoteControl HTTP Server (47) of main
java.base@11.0.9/java.net.PlainSocketImpl.socketAccept(Native Method)
java.base@11.0.9/java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:458)
java.base@11.0.9/java.net.ServerSocket.implAccept(ServerSocket.java:565)
java.base@11.0.9/java.net.ServerSocket.accept(ServerSocket.java:533)
app//org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:104)

Thread: TMS-downloader-9 (74) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: File Watcher (23) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:671)
java.base@11.0.9/sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118)
app//org.openstreetmap.josm.io.FileWatcher.processEvents(FileWatcher.java:120)
app//org.openstreetmap.josm.io.FileWatcher$$Lambda$357/0x00000008403d2040.run(Unknown Source)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-3 (68) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: FileSystemWatchService (22) of main
java.base@11.0.9/sun.nio.fs.LinuxWatchService.poll(Native Method)
java.base@11.0.9/sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:316)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-20 (85) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: Reference Handler (2) of system
java.base@11.0.9/java.lang.ref.Reference.waitForReferencePendingList(Native Method)
java.base@11.0.9/java.lang.ref.Reference.processPendingReferences(Reference.java:241)
java.base@11.0.9/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:213)

Thread: TMS-downloader-17 (82) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-24 (97) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-15 (80) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: Signal Dispatcher (4) of system

Thread: AWT-Shutdown (18) of system
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.Object.wait(Object.java:328)
java.desktop@11.0.9/sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:291)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: DestroyJavaVM (50) of main

Thread: Timer-2 (60) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.Object.wait(Object.java:328)
java.base@11.0.9/java.util.TimerThread.mainLoop(Timer.java:527)
java.base@11.0.9/java.util.TimerThread.run(Timer.java:506)

Thread: TMS-downloader-22 (93) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-13 (78) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-18 (83) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TimerQueue (19) of system
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
java.base@11.0.9/java.util.concurrent.DelayQueue.take(DelayQueue.java:229)
java.desktop@11.0.9/javax.swing.TimerQueue.run(TimerQueue.java:171)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-8 (73) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-1 (66) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: changeset-updater-0 (49) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
java.base@11.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)
java.base@11.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-21 (88) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-2 (67) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: RemoteControl HTTP Server (46) of main
java.base@11.0.9/java.net.PlainSocketImpl.socketAccept(Native Method)
java.base@11.0.9/java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:458)
java.base@11.0.9/java.net.ServerSocket.implAccept(ServerSocket.java:565)
java.base@11.0.9/java.net.ServerSocket.accept(ServerSocket.java:533)
app//org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:104)

Thread: TMS-downloader-19 (84) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: Timer-1 (54) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.util.TimerThread.mainLoop(Timer.java:553)
java.base@11.0.9/java.util.TimerThread.run(Timer.java:506)

Thread: TMS-downloader-23 (96) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: Map Status Collector (225) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
app//org.openstreetmap.josm.gui.MapStatus$Collector.run(MapStatus.java:438)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-11 (76) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TMS-downloader-7 (72) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:109)
app//org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:29)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: JCS-ElementEventQueue-Thread-1 (39) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: WeakCollectionCleaner (41) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
org.geotools.util.WeakCollectionCleaner.run(WeakCollectionCleaner.java:65)

Thread: message-notifier-0 (48) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
java.base@11.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)
java.base@11.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Attachments (4)

20091-download.patch (2.1 KB) - added by GerdP 2 months ago.
20091-full.patch (6.8 KB) - added by GerdP 2 months ago.
20091.fix-and-unit-tests.patch (9.3 KB) - added by GerdP 2 months ago.
20091.fix-and-unit-tests-v2.patch (17.4 KB) - added by GerdP 2 months ago.
some more unit tests to improve coverage

Download all attachments as: .zip

Change History (26)

comment:1 Changed 2 months ago by skyper

There are other examples in #6529, how to get data inconsistencies like "deleted node referenced by way".

Last edited 2 months ago by skyper (previous) (diff)

comment:2 Changed 2 months ago by GerdP

Owner: changed from team to GerdP
Status: newassigned

Thanks for the detailed description. I can reproduce your results.
You are right, "download members" should download the members of the relation as it is in JOSM, not as it is in the OSM database.
And yes, the deleted member should produce a conflict.

comment:3 Changed 2 months ago by skyper

Description: modified (diff)
Version: latest

comment:4 Changed 2 months ago by skyper

Description: modified (diff)

Changed 2 months ago by GerdP

Attachment: 20091-download.patch added

comment:5 Changed 2 months ago by GerdP

Patch attachment:20091-download.patch changes the logic of "download members" so that all non-new members of all selected relations are downloaded. It doesn't recurse down on child relations.

comment:6 Changed 2 months ago by skyper

Not sure when I expect conflicts. Think the problem is #7103 or similar. The question is, what to do if the resolution contains incomplete children with unknown state.

The nightmare is still not over. I might have a déjà vu:

I tried to get the conflict by "update modified/selection/data" but no chance.
Continue after 8:

  • "update data"
    • I only got one "fake" conflict about way #326046223 with state "deleted" on both sides and nothing todo.
  • Solve conflict
  • Open relation manager
    • Find the way as member in the relation editor but only until I saved the relation from the relation editor.
  • Select all members and sort members
  • Close relation manager by clicking on "Ok".
  • Undo last change
    • Guess what, I get an DataIntegrityProblemException: Deleted member referenced
Way: 326046223
  State: deleted  deleted-on-server
  Data Set: 3fcae085
  Edited at: 2015-02-10T18:33:55Z
  Edited by: skyper (152744)
  Version: 2
  In changeset: 28756944
  Bounding box: ∞, -∞, -∞, ∞
  Bounding box (projected): 0.0, 0.0, 0.0, 0.0
  Center of bounding box: �, �
  Centroid: 0.0, 0.0
  Length: < 0.01 m
  0 Nodes: 
  Part of: 
    Relation: 1108752
Dataset consistency test:
[DELETED REFERENCED] {Relation id=1108752 version=29 MVT [way 4866766, way 235394448, way 4867040, way 71523381, way 31649896, way 144891949, way 69992858, way 69992859, way 144907351, way 144907236, way 82459733, way 70686302, way 70686300, way 42696742, way 71523383, way 71523379, way 24982657, way 223361654, way 223361655, way 223361676, way 71897870, way 71523376, way 30579750, way 45391229, way 115631602, way 115631600, way 326046223]} refers to deleted primitive {Way id=326046223 version=2 D nodes=[]}

Last errors/warnings:
- 00102.281 W: Conflicts detected - <html>There was 1 conflict detected.</html>
- 00136.859 W: Conflicts detected - <html>There was 1 conflict detected.</html>
- 00171.013 E: Handled by bug report queue: org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Deleted member referenced: {Relation id=1108752 version=29 MVT [way 4866766, way 235394448, way 4867040, way 71523381, way 31649896, way 144891949, way 69992858, way 69992859, way 144907351, way 144907236, way 82459733, way 70686302, way 70686300, way 42696742, way 71523383, way 71523379, way 24982657, way 223361654, way 223361655, way 223361676, way 71897870, way 71523376, way 30579750, way 45391229, way 115631602, way 115631600, way 326046223]} (changed by the following commands: [Partially revert changeset 28756944], [Sequence: Resolve to my versions], [Sequence: Conflict Resolution])


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

Warning issued by: BugReportExceptionHandler#handleException

=== STACK TRACE ===
Thread: AWT-EventQueue-0 (17) of main
org.openstreetmap.josm.data.osm.DataIntegrityProblemException: Deleted member referenced: {Relation id=1108752 version=29 MVT [way 4866766, way 235394448, way 4867040, way 71523381, way 31649896, way 144891949, way 69992858, way 69992859, way 144907351, way 144907236, way 82459733, way 70686302, way 70686300, way 42696742, way 71523383, way 71523379, way 24982657, way 223361654, way 223361655, way 223361676, way 71897870, way 71523376, way 30579750, way 45391229, way 115631602, way 115631600, way 326046223]} (changed by the following commands: [Partially revert changeset 28756944], [Sequence: Resolve to my versions], [Sequence: Conflict Resolution])
	at org.openstreetmap.josm.data.osm.Relation.checkMembers(Relation.java:492)
	at org.openstreetmap.josm.data.osm.Relation.fireMembersChanged(Relation.java:504)
	at org.openstreetmap.josm.data.osm.Relation.setMembers(Relation.java:61)
	at org.openstreetmap.josm.data.osm.Relation.load(Relation.java:280)
	at org.openstreetmap.josm.command.Command.undoCommand(Command.java:171)
	at org.openstreetmap.josm.data.UndoRedoHandler.lambda$undo$0(UndoRedoHandler.java:380)
	at org.openstreetmap.josm.gui.util.GuiHelper.runInEDTAndWait(GuiHelper.java:224)
	at org.openstreetmap.josm.data.UndoRedoHandler.undo(UndoRedoHandler.java:372)
	at org.openstreetmap.josm.data.UndoRedoHandler.undo(UndoRedoHandler.java:362)
	at org.openstreetmap.josm.actions.UndoAction.actionPerformed(UndoAction.java:39)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6635)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
	at java.desktop/java.awt.Component.processEvent(Component.java:6400)
	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5011)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
	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.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
	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:742)
	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)

=== RUNNING THREADS ===
Thread: AWT-EventQueue-0 (17) of main
Stacktrace see above.

Thread: AWT-XAWT (16) of system
java.desktop@11.0.9/sun.awt.X11.XToolkit.waitForEvents(Native Method)
java.desktop@11.0.9/sun.awt.X11.XToolkit.run(XToolkit.java:684)
java.desktop@11.0.9/sun.awt.X11.XToolkit.run(XToolkit.java:648)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: styled-map-renderer-2 (58) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.parkUntil(LockSupport.java:275)
java.base@11.0.9/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1619)
java.base@11.0.9/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: RemoteControl HTTP Server (43) of main
java.base@11.0.9/java.net.PlainSocketImpl.socketAccept(Native Method)
java.base@11.0.9/java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:458)
java.base@11.0.9/java.net.ServerSocket.implAccept(ServerSocket.java:565)
java.base@11.0.9/java.net.ServerSocket.accept(ServerSocket.java:533)
app//org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:104)

Thread: changeset-updater-0 (46) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
java.base@11.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)
java.base@11.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: JCS-ElementEventQueue-Thread-1 (36) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: GT authority factory disposer (37) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.util.TimerThread.mainLoop(Timer.java:553)
java.base@11.0.9/java.util.TimerThread.run(Timer.java:506)

Thread: Reference Handler (2) of system
java.base@11.0.9/java.lang.ref.Reference.waitForReferencePendingList(Native Method)
java.base@11.0.9/java.lang.ref.Reference.processPendingReferences(Reference.java:241)
java.base@11.0.9/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:213)

Thread: DestroyJavaVM (47) of main

Thread: Timer-1 (52) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.util.TimerThread.mainLoop(Timer.java:553)
java.base@11.0.9/java.util.TimerThread.run(Timer.java:506)

Thread: Signal Dispatcher (4) of system

Thread: Map Status Collector (55) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
app//org.openstreetmap.josm.gui.MapStatus$Collector.run(MapStatus.java:438)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: styled-map-renderer-0 (56) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1628)
java.base@11.0.9/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: Finalizer (3) of system
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
java.base@11.0.9/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:170)

Thread: ForkJoinPool.commonPool-worker-7 (29) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1628)
java.base@11.0.9/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: main-worker-0 (53) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: FileSystemWatchService (20) of main
java.base@11.0.9/sun.nio.fs.LinuxWatchService.poll(Native Method)
java.base@11.0.9/sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:316)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: TimerQueue (19) of system
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
java.base@11.0.9/java.util.concurrent.DelayQueue.take(DelayQueue.java:229)
java.desktop@11.0.9/javax.swing.TimerQueue.run(TimerQueue.java:171)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: styled-map-renderer-1 (57)
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.parkUntil(LockSupport.java:275)
java.base@11.0.9/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1619)
java.base@11.0.9/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: image-fetcher-0 (34) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: Timer-0 (39) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.util.TimerThread.mainLoop(Timer.java:553)
java.base@11.0.9/java.util.TimerThread.run(Timer.java:506)

Thread: ForkJoinPool.commonPool-worker-3 (27) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1628)
java.base@11.0.9/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: File Watcher (21) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:483)
java.base@11.0.9/java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:671)
java.base@11.0.9/sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118)
app//org.openstreetmap.josm.io.FileWatcher.processEvents(FileWatcher.java:120)
app//org.openstreetmap.josm.io.FileWatcher$$Lambda$333/0x00000008403af440.run(Unknown Source)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: AWT-Shutdown (18) of system
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.Object.wait(Object.java:328)
java.desktop@11.0.9/sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:291)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: RemoteControl HTTP Server (44) of main
java.base@11.0.9/java.net.PlainSocketImpl.socketAccept(Native Method)
java.base@11.0.9/java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:458)
java.base@11.0.9/java.net.ServerSocket.implAccept(ServerSocket.java:565)
java.base@11.0.9/java.net.ServerSocket.accept(ServerSocket.java:533)
app//org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:104)

Thread: message-notifier-0 (45) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
java.base@11.0.9/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
java.base@11.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)
java.base@11.0.9/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.9/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: styled-map-renderer-3 (59) of main
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.9/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1628)
java.base@11.0.9/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: Common-Cleaner (9) of InnocuousThreadGroup
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@11.0.9/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:148)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)
java.base@11.0.9/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:134)

Thread: Java2D Disposer (13) of system
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
java.desktop@11.0.9/sun.java2d.Disposer.run(Disposer.java:144)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: Weak reference cleaner (22) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
app//org.openstreetmap.josm.tools.ListenableWeakReference.clean(ListenableWeakReference.java:60)
app//org.openstreetmap.josm.tools.ListenableWeakReference$$Lambda$370/0x00000008403e5440.run(Unknown Source)
java.base@11.0.9/java.lang.Thread.run(Thread.java:834)

Thread: ForkJoinPool.commonPool-worker-5 (28)
java.base@11.0.9/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.9/java.util.concurrent.locks.LockSupport.parkUntil(LockSupport.java:275)
java.base@11.0.9/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1619)
java.base@11.0.9/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: WeakCollectionCleaner (38) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@11.0.9/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
org.geotools.util.WeakCollectionCleaner.run(WeakCollectionCleaner.java:65)

Thread: Timer-2 (54) of main
java.base@11.0.9/java.lang.Object.wait(Native Method)
java.base@11.0.9/java.lang.Object.wait(Object.java:328)
java.base@11.0.9/java.util.TimerThread.mainLoop(Timer.java:527)
java.base@11.0.9/java.util.TimerThread.run(Timer.java:506)

comment:7 Changed 2 months ago by GerdP

I guess the problem is in DatasetMerger, so it doesn't matter what method you use to download. They all use DatasetMerger in the end.

comment:8 Changed 2 months ago by skyper

It is not that easy and I also have to take a closer look at #11098 which is the next chapter of this story. Should be no problem to reproduce it. Gonna try to find a new example, tomorrow.

Changed 2 months ago by GerdP

Attachment: 20091-full.patch added

comment:9 Changed 2 months ago by GerdP

attachment:20091-full.patch contains 20091-download.patch and is based on 19783.patch from #19783.
Without the patch an object that is deleted in the OSM db and incomplete (and thus unmodified) in the JOSM layer was not marked as deleted. With the patch the object is marked and for your example the conflict is added for way 326046223.
The existing unit tests for DatasetMerger are passed, will create a new one for this case now.

comment:10 Changed 2 months ago by GerdP

As the relation editor silently removes those inconsistent members, you do not get any glue about the problem anymore.

I cannot reproduce this with tested or latest version and steps 1-8. When I open the relation in the editor (as step 9) it shows the way 326046223 with 0 nodes. This allows to fix the data inconsistency but one must not undo this step, else undo redo stack is corrupted.
Edit: see #20098

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

comment:11 Changed 2 months ago by GerdP

Maybe it would be good to perform a "dataset consistency test" after DatasetMerger was used to modify the active edit layer? This would avoid to get bug reports where a later executed action stumbles over the alreaady invalid state.

Changed 2 months ago by GerdP

comment:12 Changed 2 months ago by GerdP

Milestone: 20.11

I'd prefer to commit this patch and also the one for #20098 for milestone 20.10, but since these are all old bugs it probably doesn't matter much.

comment:13 Changed 2 months ago by GerdP

Hmm, have to think about this again. I forgot that DatasetMerger is also used to merge different layers, so "theirs" might contain the older version of an object.

comment:14 in reply to:  11 ; Changed 2 months ago by skyper

Probably needs a complete rework.
The same actions for merging from server and merging local layers never convinced me. Sadly, I do not find the old ticket where I described the different results and conflicts merging two modified, local layers. #20006 is close and #18838 points to some other problems merging two local layers.

Replying to GerdP:

Maybe it would be good to perform a "dataset consistency test" after DatasetMerger was used to modify the active edit layer? This would avoid to get bug reports where a later executed action stumbles over the already invalid state.

+1, we might even get more information about the problematic conflicts and could be useful for #7103 and #14196.

Replying to GerdP:

As the relation editor silently removes those inconsistent members, you do not get any glue about the problem anymore.

I cannot reproduce this with tested or latest version and steps 1-8. When I open the relation in the editor (as step 9) it shows the way 326046223 with 0 nodes. This allows to fix the data inconsistency but one must not undo this step, else undo redo stack is corrupted.
Edit: see #20098

I was talking about the situation half a year or longer ago. The relation editor did present all incomplete members and even deleted members (zero nodes) in the members list. This was one way to find and select the deleted objects.

Today, if I sort the relation and close relation editor to save the sorting even the only deleted member I just found (wonder why it is only one and just this one anyway, expected none or all) is silently removed, again, from the member list.

comment:15 in reply to:  14 ; Changed 2 months ago by GerdP

Replying to skyper:

Probably needs a complete rework.
The same actions for merging from server and merging local layers never convinced me. Sadly, I do not find the old ticket where I described the different results and conflicts merging two modified, local layers. #20006 is close and #18838 points to some other problems merging two local layers.

In the end we would have two different mergers, one that can merge layers, and another that is specialized on merging server data. Not much to gain here.

Replying to GerdP:

Maybe it would be good to perform a "dataset consistency test" after DatasetMerger was used to modify the active edit layer? This would avoid to get bug reports where a later executed action stumbles over the already invalid state.

+1, we might even get more information about the problematic conflicts and could be useful for #7103 and #14196.

You mean to also do the check whenever the relation editor created a command?

Replying to GerdP:

As the relation editor silently removes those inconsistent members, you do not get any glue about the problem anymore.

I cannot reproduce this with tested or latest version and steps 1-8. When I open the relation in the editor (as step 9) it shows the way 326046223 with 0 nodes. This allows to fix the data inconsistency but one must not undo this step, else undo redo stack is corrupted.
Edit: see #20098

I was talking about the situation half a year or longer ago. The relation editor did present all incomplete members and even deleted members (zero nodes) in the members list. This was one way to find and select the deleted objects.

Today, if I sort the relation and close relation editor to save the sorting even the only deleted member I just found (wonder why it is only one and just this one anyway, expected none or all) is silently removed, again, from the member list.

Well, I guess the problem is that we cannot add code to handle empty members or invalid ways in all methods or dialogs. At some point we have to trust that the data was verified or that the user wants it.

comment:16 in reply to:  15 Changed 2 months ago by skyper

Replying to GerdP:

Maybe it would be good to perform a "dataset consistency test" after DatasetMerger was used to modify the active edit layer? This would avoid to get bug reports where a later executed action stumbles over the already invalid state.

+1, we might even get more information about the problematic conflicts and could be useful for #7103 and #14196.

You mean to also do the check whenever the relation editor created a command?

I thought about conflict resolution. That is where the inconsistency comes from. Preventing users to create invalid objects like denying children lists without enough members. Denying adding deleted objects and a warning about incomplete objects with option to download them would help with this ticket.

Relation editor is independent but still tied to one data layer. If the relation editor is already open we need to refresh or will get conflicts. The rest is covered below.

Replying to GerdP:

As the relation editor silently removes those inconsistent members, you do not get any glue about the problem anymore.

I cannot reproduce this with tested or latest version and steps 1-8. When I open the relation in the editor (as step 9) it shows the way 326046223 with 0 nodes. This allows to fix the data inconsistency but one must not undo this step, else undo redo stack is corrupted.
Edit: see #20098

I was talking about the situation half a year or longer ago. The relation editor did present all incomplete members and even deleted members (zero nodes) in the members list. This was one way to find and select the deleted objects.

Today, if I sort the relation and close relation editor to save the sorting even the only deleted member I just found (wonder why it is only one and just this one anyway, expected none or all) is silently removed, again, from the member list.

Well, I guess the problem is that we cannot add code to handle empty members or invalid ways in all methods or dialogs. At some point we have to trust that the data was verified or that the user wants it.

I can live with the removable of invalid objects, I was just not 100% convinced if it is the correct place to handle this. It did show the inconsistency.

We want to get rid of the exceptions, right?
We can work with validator for empty relations. There is already an error warning about it and it is not a data inconsistency.
There should be no action creating invalid ways. (conflict resolution)

The major problem are delete members.
Which actions allow to add deleted objects to a relation?
I think, that your were working on this problem with relation editor and undo, lately. I have to admit, I did not think of (intentionally) adding a deleted object to a relation. Have to check this out, outside of relation editor and conflict resolution. Just tried "add selection to relation" but that does not add a deleted object. It is different with incomplete objects with unknown state, though, but this is possible with relation editor or "create multipolygon", too.

Last edited 2 months ago by skyper (previous) (diff)

comment:17 Changed 2 months ago by GerdP

I think most of the problems reg. "Deleted member referenced" are produced with incomplete members which are later changed to "deleted" without updating the parent. This ticket shows this bug in DatasetMerger, maybe there are more.

comment:18 Changed 2 months ago by GerdP

BTW: The unit tests shows that something is wrong as the test coverage in DatasetMerger is poor. Method deleteMarkedObjects() shows no execution:
https://josm.openstreetmap.de/sonar/code?id=josm_releases&selected=josm_releases%3Asrc%2Forg%2Fopenstreetmap%2Fjosm%2Fdata%2Fosm%2FDataSetMerger.java

I am working on additional unit tests to bring coverage closer to 100%.

Changed 2 months ago by GerdP

some more unit tests to improve coverage

comment:19 Changed 2 months ago by Don-vip

Milestone: 20.1120.12

Milestone renamed

comment:20 Changed 2 months ago by GerdP

Resolution: fixed
Status: assignedclosed

In 17341/josm:

fix #20091: Downloading incomplete, deleted members leads to data inconsitency

  • changes the logic of "download members" so that all non-new members of all selected relations are downloaded. It doesn't recurse down on child relations. The old code did a download of members using the relation id, so the server returned the members of the version as known by the server. Disadvantage: The new code is slower.
  • changes and simplifies DataSetMerger to fix the wrong handling of deleted objects in the source
  • additional unit tests to cover more branches in mergeById()
  • also fixes #19783

comment:21 Changed 2 months ago by skyper

checkstyle does not like a white space and demands a white space in two places. Think this patch below should solve the issues.

  • trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java

     
    10631063     * Way without referrers deleted in source
    10641064     */
    10651065    @Test
    1066     void testDeletedWayNoReferrers () {
     1066    void testDeletedWayNoReferrers() {
    10671067
    10681068        // -- source dataset
    10691069
     
    10761076        n2.setVisible(true);
    10771077        their.addPrimitive(n1);
    10781078        their.addPrimitive(n2);
    1079         Way w1 = new Way(1,1);
     1079        Way w1 = new Way(1, 1);
    10801080        their.addPrimitive(w1);
    10811081        w1.addNode(n1);
    10821082        w1.addNode(n2);
     
    11461146        n2.setVisible(true);
    11471147        their.addPrimitive(n1);
    11481148        their.addPrimitive(n2);
    1149         Way w1 = new Way(1,1);
     1149        Way w1 = new Way(1, 1);
    11501150        their.addPrimitive(w1);
    11511151        w1.addNode(n1);
    11521152        w1.addNode(n2);

comment:22 Changed 2 months ago by GerdP

I keep forgetting running this check manually before committing patches. See #17047

Modify Ticket

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