Modify

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 Don-vip)

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 Fabi2, 15 years ago

Summary: Changeset close did not work trough proxyChangeset close did not work through proxy

comment:2 by Fabi2, 15 years ago

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:

Warnung: unerwarteter Wert für Schlüssel 'osm-server.upload-strategy' in den Einstellungen, erhielt ''
PUT http://api.openstreetmap.org/api/0.6/changeset/create... OK
POST http://api.openstreetmap.org/api/0.6/changeset/3896425/upload... OK
PUT http://api.openstreetmap.org/api/0.6/changeset/3896425/close...

additional terminal output after closing windows and two times of "Offene Änderungsdatensätze schließen" (terminal shows no output after the first try)

PUT http://api.openstreetmap.org/api/0.6/changeset/3896425/close... Der Fehler wird ignoriert, da das Herunterladen abgebrochen wurde. Die Fehlermeldung war: org.openstreetmap.josm.io.OsmTransferException: java.net.SocketException: Unexpected end of file from server
GET http://api.openstreetmap.org/api/0.6/user/details
GET http://api.openstreetmap.org/api/0.6/changesets?user=125718&open=true
GET http://api.openstreetmap.org/api/0.6/user/details
GET http://api.openstreetmap.org/api/0.6/changesets?user=125718&open=true

JOSM-Info output:

Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2010-02-16 02:31:15
Last Changed Author: jttt
Revision: 2995
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2010-02-15 21:49:45 +0100 (Mon, 15 Feb 2010)
Last Changed Rev: 2995

Memory Usage: 129 MB / 3111 MB (46 MB allocated, but free)
Java version: 1.6.0_18, Sun Microsystems Inc., Java HotSpot(TM) 64-Bit Server VM
Operating system: Linux

Dataset consistency test:
No problems found



cache.motd.html=1266353071
cache.motd.html.lang=De:
cache.motd.html.version=2995
coordinates=DECIMAL_DEGREES
gui.geometry=1680x1019+0+0
gui.maximized=true
josm.version=2995
marker.audiofromstart=false
marker.buttonlabels=false
org.openstreetmap.josm.gui.download.DownloadDialog.geometry=x=340,y=209,width=1000,height=600
org.openstreetmap.josm.gui.io.UploadDialog.geometry=x=401,y=164,width=749,height=663
org.openstreetmap.josm.gui.oauth.OAuthAuthorizationWizard.geometry=x=640,y=309,width=698,height=590
org.openstreetmap.josm.gui.preferences.PreferenceDialog.geometry=x=540,y=109,width=600,height=800
osm-download.bounds=54.057775799999995;13.3339691;54.127040799999996;13.4527588
osm-server.upload-strategy=singlerequest
proxy.http.host=10.0.0.3
proxy.http.port=3128
proxy.policy=use-http-proxy
shortcut.groups.1=128
shortcut.groups.10=64
shortcut.groups.11=576
shortcut.groups.12=64
shortcut.groups.13=512
shortcut.groups.15=640
shortcut.groups.16=640
shortcut.groups.17=576
shortcut.groups.18=512
shortcut.groups.19=128
shortcut.groups.2=128
shortcut.groups.20=512
shortcut.groups.3=0
shortcut.groups.4=512
shortcut.groups.5=0
shortcut.groups.6=512
shortcut.groups.8=192
shortcut.groups.9=192
shortcut.groups.configured=true
upload.comment.history=Straßentyp korrigiert

comment:3 by Fabi2, 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 Fabi2, 15 years ago

Summary: Changeset close did not work through proxyChangeset close blocks forever over a HTTP proxy

comment:5 by Fabi2, 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 Fabi2, 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:7 by Fabi2, 15 years ago

Problem without Proxy was also reported before as #3035.

comment:8 by skyper, 13 years ago

Keywords: proxy added

comment:9 by Don-vip, 12 years ago

Description: modified (diff)
Owner: changed from team to Fabi2
Status: newneedinfo

Still have this problem ?
I have sucessfully uploaded two changesets using a proxy, without any problem.

comment:10 by Don-vip, 12 years ago

Resolution: needinfo
Status: needinfoclosed

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Fabi2.
as The resolution will be set.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.