Opened 15 years ago
Closed 12 years ago
#3970 closed defect (needinfo)
Changeset close blocks forever over a HTTP proxy
Reported by: | Fabi2 | Owned by: | Fabi2 |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | Core | Version: | latest |
Keywords: | proxy | Cc: |
Description (last modified by )
JOSM 2466 ("tested" has this problem too) hangs forever in the upload dialog (displays "Änderungsdatensatz schließen...") after the close request:
p1 elapesd: 0
p2 elapesd: 0
p99 elapesd: 0
PUT http://api.openstreetmap.org/api/0.6/changeset/create... OK
POST http://api.openstreetmap.org/api/0.6/changeset/3145605/upload... OK
PUT http://api.openstreetmap.org/api/0.6/changeset/3145605/close...
When clicking on abort I get
PUT http://api.openstreetmap.org/api/0.6/changeset/3145605/close... Der Fehler wird ignoriert, da das Herunterladen abgebrochen wurde. Die Fehlermeldung war: org.openstreetmap.josm.io.OsmTransferException: java.net.SocketException: Socket closed
in the terminal.
There is not difference between setting the proxy only in JOSM or additioanl via command line.
The effect is that i have to restart JOSM to upload another (fresh) changeset, since manual close from the menu does the same. :(
Attachments (0)
Change History (10)
comment:1 by , 15 years ago
Summary: | Changeset close did not work trough proxy → Changeset close did not work through proxy |
---|
comment:2 by , 15 years ago
comment:3 by , 15 years ago
After "Offene Änderungsdatensätze schließen" from the menu JOSM finds no open changeset, because it was successful closed by the HTTP-close-Request, but since the Server (I don't looked for any API spec or on the code...) maybe sends no data back, the proxy closes the connection from their server side and JOSM seems to relay on the close from the clientside and dont get the EOF from the server and have a blocking read() hanging forever.
comment:4 by , 15 years ago
Summary: | Changeset close did not work through proxy → Changeset close blocks forever over a HTTP proxy |
---|
comment:5 by , 15 years ago
Wrote a comment to #4216 which seems to be a other variant of the same problem: the I/O which is done via the JVM is blocking and JOSM (with the help of #4401 I found now out that it happens in OsmApi.java and SendRequest(), but I'am a C and not a java programmer) does no checks, if the connection is still there or data can be written to it.
At lerast I found out that the proxy handling sems to be done transparent by the java lib or JVM and so possible errors with the underlaying Proxy-Control-Connection maybe not reported to JOSM, which sees only it's lib emulated buffered "real"/high-level/logical data connection. So it maybe possible to do a blocking read (the blocking may also emulated by the high-level-lib-proxy layer) on an already closed network connection, Yes it looks like a race condition, which means the my local proxy faster responds as you setup all the reads to read for the server response.
comment:6 by , 15 years ago
I just read about "kill -QUIT <jvm_pid>", so here are a dump from JOSM v3026:
PUT http://api.openstreetmap.org/api/0.6/changeset/3925723/close... 2010-02-20 18:23:01 Full thread dump Java HotSpot(TM) 64-Bit Server VM (16.0-b13 mixed mode): "Map Status Collector" daemon prio=10 tid=0x00007fbb83fff800 nid=0x12a5 runnable [0x000000004121f000] java.lang.Thread.State: RUNNABLE at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.search_contents(QuadBuckets.java:252) at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.access$500(QuadBuckets.java:60) at org.openstreetmap.josm.data.osm.QuadBuckets.search(QuadBuckets.java:1046) at org.openstreetmap.josm.data.osm.DataSet.searchWays(DataSet.java:121) at org.openstreetmap.josm.gui.NavigatableComponent.getNearestWaySegments(NavigatableComponent.java :471) at org.openstreetmap.josm.gui.NavigatableComponent.getNearestWaySegment(NavigatableComponent.java: 526) at org.openstreetmap.josm.gui.NavigatableComponent.getNearestWaySegment(NavigatableComponent.java: 539) at org.openstreetmap.josm.gui.NavigatableComponent.getNearestWay(NavigatableComponent.java:546) at org.openstreetmap.josm.gui.NavigatableComponent.getNearest(NavigatableComponent.java:567) at org.openstreetmap.josm.gui.MapStatus$Collector.statusBarElementUpdate(MapStatus.java:294) at org.openstreetmap.josm.gui.MapStatus$Collector.run(MapStatus.java:178) at java.lang.Thread.run(Thread.java:619) "pool-1-thread-1" prio=10 tid=0x00007fbb8446b800 nid=0x129f runnable [0x0000000041a09000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read1(BufferedInputStream.java:258) at java.io.BufferedInputStream.read(BufferedInputStream.java:317) - locked <0x00007fbc29d09930> (a java.io.BufferedInputStream) at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1072) - locked <0x00007fbc29cf7d60> (a sun.net.www.protocol.http.HttpURLConnection) at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:373) at java.net.HttpURLConnection.getResponseMessage(HttpURLConnection.java:439) at org.openstreetmap.josm.io.OsmApi.sendRequest(OsmApi.java:532) at org.openstreetmap.josm.io.OsmApi.sendRequest(OsmApi.java:476) at org.openstreetmap.josm.io.OsmApi.closeChangeset(OsmApi.java:390) at org.openstreetmap.josm.gui.io.UploadPrimitivesTask.realRun(UploadPrimitivesTask.java:284) at org.openstreetmap.josm.gui.PleaseWaitRunnable.doRealRun(PleaseWaitRunnable.java:83) at org.openstreetmap.josm.gui.PleaseWaitRunnable.run(PleaseWaitRunnable.java:129) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) "Timer-0" daemon prio=10 tid=0x00007fbb83c74000 nid=0x1297 in Object.wait() [0x0000000040a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007fbb937f2fa8> (a java.util.TaskQueue) at java.lang.Object.wait(Object.java:485) at java.util.TimerThread.mainLoop(Timer.java:483) - locked <0x00007fbb937f2fa8> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:462) "OSMJobThread 1" daemon prio=10 tid=0x00007fbb837f3800 nid=0x1295 waiting on condition [0x0000000040ba0000 ] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00007fbb937e8bf0> (a java.util.concurrent.locks.AbstractQueuedSynchroniz er$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynch ronizer.java:1925) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358) at org.openstreetmap.gui.jmapviewer.JobDispatcher$JobThread.executeJobs(JobDispatcher.java:111) at org.openstreetmap.gui.jmapviewer.JobDispatcher$JobThread.run(JobDispatcher.java:98) "DestroyJavaVM" prio=10 tid=0x0000000040499800 nid=0x1278 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "TimerQueue" daemon prio=10 tid=0x00007fbb84518000 nid=0x128c in Object.wait() [0x0000000040d67000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007fbb92e39a98> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(TimerQueue.java:232) - locked <0x00007fbb92e39a98> (a javax.swing.TimerQueue) at java.lang.Thread.run(Thread.java:619) "AWT-EventQueue-0" prio=10 tid=0x00007fbb89a0b000 nid=0x1286 in Object.wait() [0x00000000417a9000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007fbb92a03d30> (a java.awt.EventQueue) at java.lang.Object.wait(Object.java:485) at java.awt.EventQueue.getNextEvent(EventQueue.java:479) - locked <0x00007fbb92a03d30> (a java.awt.EventQueue) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:236) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178) at java.awt.Dialog$1.run(Dialog.java:1046) at java.awt.Dialog$3.run(Dialog.java:1098) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:1096) at java.awt.Component.show(Component.java:1563) at java.awt.Component.setVisible(Component.java:1515) at java.awt.Window.setVisible(Window.java:842) at java.awt.Dialog.setVisible(Dialog.java:986) at org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor$3.run(PleaseWaitProgressMonitor.j ava:83) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) "AWT-Shutdown" prio=10 tid=0x00007fbb89a08800 nid=0x1285 in Object.wait() [0x00000000416a9000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007fbb9284b358> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:265) - locked <0x00007fbb9284b358> (a java.lang.Object) at java.lang.Thread.run(Thread.java:619) "AWT-XAWT" daemon prio=10 tid=0x00007fbb841a3800 nid=0x1284 runnable [0x000000004099e000] java.lang.Thread.State: RUNNABLE at sun.awt.X11.XToolkit.waitForEvents(Native Method) at sun.awt.X11.XToolkit.run(XToolkit.java:541) at sun.awt.X11.XToolkit.run(XToolkit.java:505) at java.lang.Thread.run(Thread.java:619) "Java2D Disposer" daemon prio=10 tid=0x00007fbb840ac800 nid=0x1283 in Object.wait() [0x00000000415a8000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007fbb929f6918> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118) - locked <0x00007fbb929f6918> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134) at sun.java2d.Disposer.run(Disposer.java:125) at java.lang.Thread.run(Thread.java:619) "Low Memory Detector" daemon prio=10 tid=0x000000004057f800 nid=0x1281 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "CompilerThread1" daemon prio=10 tid=0x000000004057d800 nid=0x1280 waiting on condition [0x000000000000000 0] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x0000000040578800 nid=0x127f waiting on condition [0x000000000000000 0] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x0000000040576000 nid=0x127e waiting on condition [0x0000000000000 000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=10 tid=0x0000000040551800 nid=0x127d in Object.wait() [0x0000000040ec7000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007fbb92977860> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118) - locked <0x00007fbb92977860> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x000000004054f800 nid=0x127c in Object.wait() [0x00000000414a7000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007fbb9296ecf8> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116) - locked <0x00007fbb9296ecf8> (a java.lang.ref.Reference$Lock) "VM Thread" prio=10 tid=0x000000004054b000 nid=0x127b runnable "GC task thread#0 (ParallelGC)" prio=10 tid=0x00000000404ac000 nid=0x1279 runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x00000000404ae000 nid=0x127a runnable "VM Periodic Task Thread" prio=10 tid=0x0000000040582800 nid=0x1282 waiting on condition JNI global references: 33278 Heap PSYoungGen total 241536K, used 104725K [0x00007fbc23bd0000, 0x00007fbc36dc0000, 0x00007fbc6ca70000) eden space 217024K, 47% used [0x00007fbc23bd0000,0x00007fbc2a17d770,0x00007fbc30fc0000) from space 24512K, 2% used [0x00007fbc30fc0000,0x00007fbc31058000,0x00007fbc327b0000) to space 25216K, 0% used [0x00007fbc35520000,0x00007fbc35520000,0x00007fbc36dc0000) PSOldGen total 152064K, used 83531K [0x00007fbb91e70000, 0x00007fbb9b2f0000, 0x00007fbc23bd0000) object space 152064K, 54% used [0x00007fbb91e70000,0x00007fbb97002cd0,0x00007fbb9b2f0000) PSPermGen total 64256K, used 31726K [0x00007fbb8ca70000, 0x00007fbb90930000, 0x00007fbb91e70000) object space 64256K, 49% used [0x00007fbb8ca70000,0x00007fbb8e96ba90,0x00007fbb90930000)
comment:8 by , 13 years ago
Keywords: | proxy added |
---|
comment:9 by , 12 years ago
Description: | modified (diff) |
---|---|
Owner: | changed from | to
Status: | new → needinfo |
Still have this problem ?
I have sucessfully uploaded two changesets using a proxy, without any problem.
comment:10 by , 12 years ago
Resolution: | → needinfo |
---|---|
Status: | needinfo → closed |
Same problem still exists in 2995:
Upload hangs forever. Pressing the "Abbruch" button works, but window is still open, can only be closed with the close field of the window manager.
Terminal output:
additional terminal output after closing windows and two times of "Offene Änderungsdatensätze schließen" (terminal shows no output after the first try)
JOSM-Info output: