Modify

Opened 7 weeks ago

Closed 7 weeks ago

Last modified 3 weeks ago

#20395 closed defect (fixed)

ConcurrentModificationException: Revert can't revert 833386

Reported by: SomeoneElse2 Owned by: GerdP
Priority: normal Milestone: 21.02
Component: Plugin reverter Version:
Keywords: template_report conflict reverter Cc: Don-vip

Description

What steps will reproduce the problem?

  1. Run JOSM, with the reverter plugin install
  2. Try and revert 833386

What is the expected result?

I get a changeset that I can upload to revert the original changeset

What happens instead?

"you have encountered a bug in JOSM" with a "Report Bug" button, which got me here.

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

Relative:URL: ^/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2020-12-28 22:03:23 +0100 (Mon, 28 Dec 2020)
Revision:17428
Build-Date:2020-12-30 02:30:55
URL:https://josm.openstreetmap.de/svn/trunk

Identification: JOSM/1.5 (17428 en_GB) Windows 10 64-Bit
OS Build number: Windows 10 Pro 2004 (19041)
Memory Usage: 234 MB / 3026 MB (107 MB allocated, but free)
Java version: 15.0.1+9-18, Oracle Corporation, OpenJDK 64-Bit Server VM
Look and Feel: com.sun.java.swing.plaf.windows.WindowsLookAndFeel
Screen: \Display0 1920×1080 (scaling 1.50×1.50) \Display1 1920×1080 (scaling 1.00×1.00)
Maximum Screen Size: 1920×1080
Best cursor sizes: 16×16→48×48, 32×32→48×48
Dataset consistency test: No problems found

Plugins:
+ reverter (35640)
+ undelete (35640)

Last errors/warnings:
- 00133.864 E: Handled by bug report queue: java.util.ConcurrentModificationException
- 00133.864 W: Too many errors. Dropping ReportedException [thread=Thread[AWT-EventQueue-0,6,main], exception=java.util.ConcurrentModificationException, methodWarningFrom=BugReportExceptionHandler#handleException]
- 00133.865 E: Handled by bug report queue: java.util.ConcurrentModificationException
- 00133.865 W: Too many errors. Dropping ReportedException [thread=Thread[AWT-EventQueue-0,6,main], exception=java.util.ConcurrentModificationException, methodWarningFrom=BugReportExceptionHandler#handleException]
- 00133.869 E: Handled by bug report queue: java.util.ConcurrentModificationException
- 00133.872 W: Too many errors. Dropping ReportedException [thread=Thread[AWT-EventQueue-0,6,main], exception=java.util.ConcurrentModificationException, methodWarningFrom=BugReportExceptionHandler#handleException]
- 00133.874 E: Handled by bug report queue: java.util.ConcurrentModificationException
- 00133.874 W: Too many errors. Dropping ReportedException [thread=Thread[AWT-EventQueue-0,6,main], exception=java.util.ConcurrentModificationException, methodWarningFrom=BugReportExceptionHandler#handleException]
- 00133.875 E: Handled by bug report queue: java.util.ConcurrentModificationException
- 00133.876 W: Too many errors. Dropping ReportedException [thread=Thread[AWT-EventQueue-0,6,main], exception=java.util.ConcurrentModificationException, methodWarningFrom=BugReportExceptionHandler#handleException]



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

Warning issued by: BugReportExceptionHandler#handleException

=== STACK TRACE ===
Thread: AWT-EventQueue-0 (22) of main
java.util.ConcurrentModificationException
	at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)
	at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)
	at org.openstreetmap.josm.tools.SubclassFilteredCollection$FilterIterator.findNext(SubclassFilteredCollection.java:43)
	at org.openstreetmap.josm.tools.SubclassFilteredCollection$FilterIterator.hasNext(SubclassFilteredCollection.java:53)
	at java.base/java.lang.Iterable.forEach(Iterable.java:74)
	at org.openstreetmap.josm.tools.SubclassFilteredCollection.size(SubclassFilteredCollection.java:99)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog.updateTitle(ConflictDialog.java:242)
	at org.openstreetmap.josm.gui.dialogs.ConflictDialog.lambda$refreshView$1(ConflictDialog.java:231)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
	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(AccessController.java:391)
	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.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:312)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1070)
	at java.desktop/java.awt.Component.show(Component.java:1717)
	at java.desktop/java.awt.Component.setVisible(Component.java:1664)
	at java.desktop/java.awt.Window.setVisible(Window.java:1028)
	at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1005)
	at org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor.lambda$doBeginTask$3(PleaseWaitProgressMonitor.java:255)
	at org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor.lambda$doInEDT$0(PleaseWaitProgressMonitor.java:113)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
	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(AccessController.java:391)
	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)

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

Thread: RemoteControl HTTP Server (53) of main
java.base@15.0.1/sun.nio.ch.Net.accept(Native Method)
java.base@15.0.1/sun.nio.ch.NioSocketImpl.accept(NioSocketImpl.java:755)
java.base@15.0.1/java.net.ServerSocket.implAccept(ServerSocket.java:684)
java.base@15.0.1/java.net.ServerSocket.platformImplAccept(ServerSocket.java:650)
java.base@15.0.1/java.net.ServerSocket.implAccept(ServerSocket.java:626)
java.base@15.0.1/java.net.ServerSocket.implAccept(ServerSocket.java:583)
java.base@15.0.1/java.net.ServerSocket.accept(ServerSocket.java:540)
app//org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:104)

Thread: Timer-1 (65) of main
java.base@15.0.1/java.lang.Object.wait(Native Method)
java.base@15.0.1/java.lang.Object.wait(Object.java:321)
java.base@15.0.1/java.util.TimerThread.mainLoop(Timer.java:527)
java.base@15.0.1/java.util.TimerThread.run(Timer.java:506)

Thread: Keep-Alive-Timer (181) of InnocuousThreadGroup
java.base@15.0.1/java.lang.Thread.sleep(Native Method)
java.base@15.0.1/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:169)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)
java.base@15.0.1/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:134)

Thread: ForkJoinPool.commonPool-worker-5 (29) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.parkUntil(LockSupport.java:293)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1624)
java.base@15.0.1/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

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

Thread: Map Status Collector (72) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
java.base@15.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:505)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3137)
java.base@15.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1614)
java.base@15.0.1/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
app//org.openstreetmap.josm.gui.MapStatus$Collector.run(MapStatus.java:438)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)

Thread: Attach Listener (5) of system

Thread: ForkJoinPool.commonPool-worker-15 (40) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.parkUntil(LockSupport.java:293)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1624)
java.base@15.0.1/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: changeset-updater-0 (55) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
java.base@15.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1661)
java.base@15.0.1/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)
java.base@15.0.1/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1056)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1116)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)

Thread: message-notifier-0 (54) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
java.base@15.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1661)
java.base@15.0.1/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)
java.base@15.0.1/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1056)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1116)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)

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

Thread: Notification Thread (12) of system

Thread: ForkJoinPool.commonPool-worker-3 (28) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.park(LockSupport.java:211)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1633)
java.base@15.0.1/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: DestroyJavaVM (56) of main

Thread: main-worker-0 (21) of main
java.base@15.0.1/java.security.AccessController.getStackAccessControlContext(Native Method)
java.base@15.0.1/java.security.AccessController.getContext(AccessController.java:972)
java.desktop@15.0.1/java.awt.AWTEvent.<init>(AWTEvent.java:115)
java.desktop@15.0.1/java.awt.event.InvocationEvent.<init>(InvocationEvent.java:289)
java.desktop@15.0.1/java.awt.event.InvocationEvent.<init>(InvocationEvent.java:175)
java.desktop@15.0.1/java.awt.EventQueue.invokeLater(EventQueue.java:1313)
java.desktop@15.0.1/javax.swing.SwingUtilities.invokeLater(SwingUtilities.java:1421)
app//org.openstreetmap.josm.gui.util.GuiHelper.runInEDT(GuiHelper.java:202)
app//org.openstreetmap.josm.gui.dialogs.ConflictDialog.refreshView(ConflictDialog.java:229)
app//org.openstreetmap.josm.gui.dialogs.ConflictDialog.onConflictsAdded(ConflictDialog.java:322)
app//org.openstreetmap.josm.data.conflict.ConflictCollection.lambda$fireConflictAdded$0(ConflictCollection.java:71)
app//org.openstreetmap.josm.data.conflict.ConflictCollection$$Lambda$934/0x0000000801176760.accept(Unknown Source)
java.base@15.0.1/java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807)
app//org.openstreetmap.josm.data.conflict.ConflictCollection.fireConflictAdded(ConflictCollection.java:71)
app//org.openstreetmap.josm.data.conflict.ConflictCollection.add(ConflictCollection.java:102)
app//org.openstreetmap.josm.command.conflict.ConflictAddCommand.executeCommand(ConflictAddCommand.java:58)
reverter.RevertChangesetTask.revertChangeset(RevertChangesetTask.java:178)
reverter.RevertChangesetTask.realRun(RevertChangesetTask.java:93)
app//org.openstreetmap.josm.gui.PleaseWaitRunnable.doRealRun(PleaseWaitRunnable.java:94)
app//org.openstreetmap.josm.gui.PleaseWaitRunnable.run(PleaseWaitRunnable.java:142)
java.base@15.0.1/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
java.base@15.0.1/java.util.concurrent.FutureTask.run(FutureTask.java:264)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)

Thread: AWT-Windows (19) of system
java.desktop@15.0.1/sun.awt.windows.WToolkit.eventLoop(Native Method)
java.desktop@15.0.1/sun.awt.windows.WToolkit.run(WToolkit.java:361)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)

Thread: RemoteControl HTTP Server (52) of main
java.base@15.0.1/sun.nio.ch.Net.accept(Native Method)
java.base@15.0.1/sun.nio.ch.NioSocketImpl.accept(NioSocketImpl.java:755)
java.base@15.0.1/java.net.ServerSocket.implAccept(ServerSocket.java:684)
java.base@15.0.1/java.net.ServerSocket.platformImplAccept(ServerSocket.java:650)
java.base@15.0.1/java.net.ServerSocket.implAccept(ServerSocket.java:626)
java.base@15.0.1/java.net.ServerSocket.implAccept(ServerSocket.java:583)
java.base@15.0.1/java.net.ServerSocket.accept(ServerSocket.java:540)
app//org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:104)

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

Thread: Weak reference cleaner (32) of main
java.base@15.0.1/java.lang.Object.wait(Native Method)
java.base@15.0.1/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
java.base@15.0.1/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$477/0x0000000800f222b8.run(Unknown Source)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)

Thread: ForkJoinPool.commonPool-worker-7 (36) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.park(LockSupport.java:211)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1633)
java.base@15.0.1/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: styled-map-renderer-1 (171) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.parkUntil(LockSupport.java:293)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1624)
java.base@15.0.1/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

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

Thread: ForkJoinPool.commonPool-worker-1 (62) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.park(LockSupport.java:211)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1633)
java.base@15.0.1/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: JCS-ElementEventQueue-Thread-1 (50) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
java.base@15.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:505)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3137)
java.base@15.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1614)
java.base@15.0.1/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1056)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1116)
java.base@15.0.1/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)

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

Thread: ForkJoinPool.commonPool-worker-9 (37) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.park(LockSupport.java:211)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1633)
java.base@15.0.1/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

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

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

Thread: TimerQueue (23) of system
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
java.base@15.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1661)
java.base@15.0.1/java.util.concurrent.DelayQueue.take(DelayQueue.java:229)
java.desktop@15.0.1/javax.swing.TimerQueue.run(TimerQueue.java:171)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)

Thread: File Watcher (31) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
java.base@15.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:505)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3137)
java.base@15.0.1/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1614)
java.base@15.0.1/java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:485)
java.base@15.0.1/java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:673)
java.base@15.0.1/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$425/0x0000000800ecfab0.run(Unknown Source)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)

Thread: FileSystemWatchService (30) of main
java.base@15.0.1/sun.nio.fs.WindowsNativeDispatcher.GetQueuedCompletionStatus0(Native Method)
java.base@15.0.1/sun.nio.fs.WindowsNativeDispatcher.GetQueuedCompletionStatus(WindowsNativeDispatcher.java:1055)
java.base@15.0.1/sun.nio.fs.WindowsWatchService$Poller.run(WindowsWatchService.java:587)
java.base@15.0.1/java.lang.Thread.run(Thread.java:832)

Thread: ForkJoinPool.commonPool-worker-11 (38) of main
java.base@15.0.1/jdk.internal.misc.Unsafe.park(Native Method)
java.base@15.0.1/java.util.concurrent.locks.LockSupport.park(LockSupport.java:211)
java.base@15.0.1/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1633)
java.base@15.0.1/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Thread: Signal Dispatcher (4) of system

Attachments (1)

20395.patch (2.6 KB) - added by GerdP 7 weeks ago.
use concurrent.CopyOnWriteArrayList instead of ArrayList

Download all attachments as: .zip

Change History (12)

comment:1 Changed 7 weeks ago by GerdP

Owner: changed from Upliner to GerdP
Status: newassigned

I can reproduce this. Please don't change the data related to this cs for a few more days.

comment:2 Changed 7 weeks ago by GerdP

The problem only occurs when JOSM shows the conflict dialog. A work around is to close the dialog before executing reverter.

comment:3 Changed 7 weeks ago by SomeoneElse2

Thanks.
Actually, the reason I was using JOSM rather than the revert scripts was to work through the conflicts. I'll leave the changeset for another week or so; it's been there for a few years so another few days won't be an issue.

comment:4 Changed 7 weeks ago by GerdP

Cc: Don-vip added

@Vincent:
I think it is the same problem that caused #15055.
The reverter finds 11.467 conflicts and produces as many ConflictAddCommand instances. Those are executed one by one, and each triggers a refresh of the ConflictDialog.
I have no clear idea yet why it requires so many conflicts to trigger the bug, maybe it depends on the time that is required to build the conflict dialog for the first time.

Although the error is in core I think a possible solution might be to collect all conflicts and create a single ConflictAddCommand which would add them in a single step. That would probably also speed up the processing.
Alternatives might be to somehow disable the refreshing of ConflictDialog while the SequenceCommand which is generated by reverter is executed.

Changed 7 weeks ago by GerdP

Attachment: 20395.patch added

use concurrent.CopyOnWriteArrayList instead of ArrayList

comment:5 Changed 7 weeks ago by GerdP

Component: Plugin reverterCore
Keywords: conflict reverter added
Milestone: 21.01

comment:6 Changed 7 weeks ago by GerdP

The patch fixes the problem. Maybe the use of CopyOnWriteArrayList allows to remove more sychronize statements?

comment:7 Changed 7 weeks ago by GerdP

Compared to the complete time that it takes to download the data we can probably ignore the few seconds for the repeated updates of the conflict dialog. You get an idea of the time when you undo/redo the reverter command.

Quite interesting: The undo/redo actions don't trigger the bug in r17428, so maybe I can also solve the problem in reverter...

comment:8 Changed 7 weeks ago by GerdP

Component: CorePlugin reverter
Summary: Revert can't revert 833386ConcurrentModificationException: Revert can't revert 833386

comment:9 Changed 7 weeks ago by GerdP

Resolution: fixed
Status: assignedclosed

In 35688/osm:

fix #20395: ConcurrentModificationException: Revert can't revert 833386

  • We must execute commands with GuiHelper.runInEDT(). Regression introduced for #15906

comment:10 Changed 7 weeks ago by GerdP

In 35689/osm:

see #20395: ConcurrentModificationException: Revert can't revert 833386

  • dist

comment:11 Changed 3 weeks ago by stoecker

Milestone: 21.0121.02

Milestone renamed

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.