Opened 2 years ago
Closed 23 months ago
#22845 closed defect (fixed)
[PATCH] EDT violation when fixing UntaggedNode errors when no download bounds exist (overpass)
Reported by: | gaben | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | 23.06 |
Component: | Core | Version: | |
Keywords: | edt violation | Cc: |
Description (last modified by )
What steps will reproduce the problem?
See comment:1
Please provide any additional information below. Attach a screenshot if possible.
The log spans over 4000 lines, so I zipped and attached it instead.
Revision:18699 Is-Local-Build:true Build-Date:2023-03-26 20:37:32 Identification: JOSM/1.5 (18699 SVN en) Linux Ubuntu 20.04.6 LTS Memory Usage: 648 MB / 2480 MB (136 MB allocated, but free) Java version: 11.0.18+10-post-Ubuntu-0ubuntu120.04.1, Ubuntu, OpenJDK 64-Bit Server VM Look and Feel: javax.swing.plaf.metal.MetalLookAndFeel Screen: :0.0 1914×1016 (scaling 1.00×1.00) Maximum Screen Size: 1914×1016 Best cursor sizes: 16×16→16×16, 32×32→32×32 Environment variable LANG: hu_HU.UTF-8 System property file.encoding: UTF-8 System property sun.jnu.encoding: UTF-8 Locale info: en_HU Numbers with default locale: 1234567890 -> 1234567890 Desktop environment: ubuntu:GNOME Java package: openjdk-11-jre:amd64-11.0.18+10-0ubuntu1~20.04.1 Java ATK Wrapper package: libatk-wrapper-java:all-0.37.1-1 fonts-noto: fonts-noto:- VM arguments: [-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:55215,suspend=y,server=n, -javaagent:/home/username/progs/idea/plugins/java/lib/rt/debugger-agent.jar, -Dfile.encoding=UTF-8] Dataset consistency test: No problems found
Attachments (1)
Change History (9)
by , 2 years ago
Attachment: | EDT violations.zip added |
---|
follow-up: 3 comment:1 by , 2 years ago
Summary: | EDT violations → EDT violation when fixing UntaggedNode errors when no download bounds exist (overpass) |
---|
comment:2 by , 2 years ago
Milestone: | → 23.04 |
---|---|
Summary: | EDT violation when fixing UntaggedNode errors when no download bounds exist (overpass) → [PATCH] EDT violation when fixing UntaggedNode errors when no download bounds exist (overpass) |
-
src/org/openstreetmap/josm/actions/DeleteAction.java
diff --git a/src/org/openstreetmap/josm/actions/DeleteAction.java b/src/org/openstreetmap/josm/actions/DeleteAction.java
a b 23 23 import org.openstreetmap.josm.gui.MainApplication; 24 24 import org.openstreetmap.josm.gui.MapFrame; 25 25 import org.openstreetmap.josm.gui.dialogs.DeleteFromRelationConfirmationDialog; 26 import org.openstreetmap.josm.gui.util.GuiHelper; 26 27 import org.openstreetmap.josm.gui.widgets.JMultilineLabel; 27 28 import org.openstreetmap.josm.tools.Pair; 28 29 import org.openstreetmap.josm.tools.Shortcut; … … 102 103 */ 103 104 public static boolean checkAndConfirmOutlyingDelete(Collection<? extends OsmPrimitive> primitives, 104 105 Collection<? extends OsmPrimitive> ignore) { 105 return checkAndConfirmOutlyingOperation("delete",106 return Boolean.TRUE.equals(GuiHelper.runInEDTAndWaitAndReturn(() -> checkAndConfirmOutlyingOperation("delete", 106 107 tr("Delete confirmation"), 107 108 tr("You are about to delete nodes which can have other referrers not yet downloaded." 108 109 + "<br>" … … 113 114 + "<br>" 114 115 + "This will cause problems because you don''t see the real object." 115 116 + "<br>" + "Do you really want to delete?"), 116 primitives, ignore) ;117 primitives, ignore))); 117 118 } 118 119 119 120 /**
follow-up: 4 comment:3 by , 2 years ago
Description: | modified (diff) |
---|
Replying to taylor.smock:
It looks like it is the same thing 110 times.
Uploaded the full log, to help the discovery. I have close to zero knowledge in Java GUI programming as I've only used JFX, once, for a university project :)
Thanks for the investigation!
comment:4 by , 2 years ago
Replying to gaben:
Uploaded the full log, to help the discovery. I have close to zero knowledge in Java GUI programming as I've only used JFX, once, for a university project :)
No worries. If it helps, many UI platforms want all UI drawing to happen on the same thread (for swing, that is often called the "Event Dispatch Thread" or "EDT"). JOSM has a custom listener that logs to console the stacktrace when something triggers a paint call outside of the EDT.
In this case, it occurs because we try to run the fix code in a non-EDT thread, but (at least when all data is downloaded from overpass), there are no download bounds, which means that JOSM wants to ask the user if they should delete the node.
I'm not certain we should be running that check on nodes that are on layers without a download area. So something else (besides what I posted) might be necessary.
It looks like it is the same thing 110 times.
Steps to reproduce:
Fix
command