Opened 4 years ago
Last modified 3 years ago
#20416 new defect
Download (incomplete) members: Cancel does not work and timeouts while download relation with members works
Reported by: | skyper | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Core | Version: | |
Keywords: | template_report cancel download members | Cc: | Don-vip, simon04 |
Description (last modified by )
I have some network issues lately:
What steps will reproduce the problem?
- Have a relation without any members downloaded
- Download members from relation or selection panel context menu
- Download starts but hangs after downloading some objects
- Click on "Cancel"
- Click on "Cancel"
- Click on "Cancel"
- Close download window
- Download some area with download dialog
What is the expected result?
The download is canceled.
What happens instead?
Download is not cancel and the second download is not executed until the first download eventually finishes or time-outs.
Please provide any additional information below. Attach a screenshot if possible.
The same is true for downloading only incomplete members.
On thing I noticed: Downloading the whole relation with members using "Download object" works like a charm. So in the situation of mostly incomplete members, it might be smarter if "Download members" would download the whole relation with members instead of each member on its own.
Relative:URL: ^/trunk Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b Last:Changed Date: 2021-01-21 23:33:21 +0100 (Thu, 21 Jan 2021) Revision:17474 Build-Date:2021-01-22 02:30:49 URL:https://josm.openstreetmap.de/svn/trunk Last errors/warnings: - 02626.639 E: org.openstreetmap.josm.io.OsmTransferException: Could not connect to the OSM server. Please check your internet connection.. Cause: java.net.SocketTimeoutException: Read timed out - 02626.646 E: IO Exception - <html>Failed to upload data to or download data from<br>'https://api.openstreetmap.org/api/0.6/nodes?nodes=3984729218,4051554686,4121566639,2047310593,3209094977,4121566626,265486042,265486043,693919829,4121566371,2045088239,265486040,2045088238,265486041,291055957,2047310603,833399228,3226528064,4051554668,2045088244,957280287,3226528065,4102782104,3226528067,833464505,659570246,659570247,3505983713,4060297753,833399222,4102782352,833399216,3505983717,833399218,833399219,4102782100,100091095,7148425780,7148425777,7148425776,7148425778,693541246,4121566594,4102782115,4102782114,3505983698,4102782374,793146984,100162775,4821390926,1506585084,4121566619,4102782138,1506585086,2047134518,951484546,4121566622,4102782142,4031093107,4031093106,4055970038,4121566608,4060244542,1506585075,4102782132,4060244546,4121566442,5842431356,4060244544,1303940603,5842431358,249780135,963078179,100162750,949471454,2426710510,2044432784,1286948350,454411096,4055974028,1926863767,4051554605,7668156766,306424594,4055974032,7668156765,309924651,713313232,693919753,693919754,306424597,1506584987,4121566461,4055974038,1884334089,4102782167,3629187340,2034977044,1776583045,4121566664,2045088129,1624584381,925972313,306424619,963078159,3264033764,1919132169,3226528062,3264033763,2109089241,3264033762,3629187390,3226528063,1286948314,1369370862,4051554575,3629187362,4055173318,1884334117,3209094974,2109089229,1436366108,454411159,1436366101,959510971,434696574,4051554794,2845483322,1436366140,7153666759,1436366138,1436366132,1436366135,2845483318,3629187327,3226527968,4144263092,3209037815,4055177473,7153666770,1776583000,1436366112,1436366115,2034977160,4022384402,1450716843,693541248,4051554730,454411208,1992148578,2232223212,2520305369,2520305370,2047310562,2232223210,4022384423,1448904372,4051554709,1448904374,2520305365,3271533073,2520305366,3271533072,2520305367,1782043335,2520305355,4051554697,4663753996,2047134458,1776582939'<br>due to a problem with transferring data.<br>Details (untranslated): Read timed out</html> - 02629.560 W: java.net.SocketTimeoutException: Read timed out - 02629.561 E: java.net.SocketTimeoutException: Read timed out - 02687.031 W: java.net.SocketTimeoutException: Read timed out - 02687.031 E: java.net.SocketTimeoutException: Read timed out - 02714.858 W: java.net.SocketTimeoutException: Read timed out - 02714.858 E: java.net.SocketTimeoutException: Read timed out - 02714.859 E: java.util.concurrent.ExecutionException: org.openstreetmap.josm.io.OsmTransferException: Could not connect to the OSM server. Please check your internet connection.. Cause: org.openstreetmap.josm.io.OsmTransferException: Could not connect to the OSM server. Please check your internet connection.. Cause: java.net.SocketTimeoutException: Read timed out - 02714.859 W: Ignoring exception because task was canceled. Exception: org.openstreetmap.josm.io.OsmTransferException: Could not connect to the OSM server. Please check your internet connection.
Attachments (4)
Change History (54)
follow-up: 2 comment:1 by , 4 years ago
comment:2 by , 4 years ago
Replying to GerdP:
On thing I noticed: Downloading the whole relation with members using "Download object" works like a charm. So in the situation of mostly incomplete members, it might be smarter if "Download members" would download the whole relation with members instead of each member on its own.
Yes, downloading a relation with all members is typically much faster (a single api call), but you wanted it to download the members that are visibile in the editor (#20091) unless I got you wrong?
You got me wrong, I am talking about "Download members" from relation or selection panel context menu. No relation editor involved!.
comment:3 by , 4 years ago
Description: | modified (diff) |
---|
comment:5 by , 4 years ago
Ah, yes, I got you wrong and you got me right. I guess, I need a new context menu action "Download with members", then, which is a shortcut to the "download object" action.
EDIT: See #20432.
comment:6 by , 4 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
I already expected this ;)
I'll also try to reproduce the problem with the Cancel button.
comment:7 by , 4 years ago
Just for the record: I have the same issue with "download parent" action.
Please, tell me, if and what I can do to get more information like running wireshark for example.
comment:8 by , 4 years ago
I think I found a problem with the handling of the Cancel button. IIGTR the aloready executing threads which download the data are not really canceled.
by , 4 years ago
Attachment: | 20416.patch added |
---|
comment:9 by , 4 years ago
Milestone: | → 21.02 |
---|
My current understanding is this: You try to download members while the OSM server is very busy (I see many "Read timed out" messages). JOSM starts two threads (two is hard coded) which download data, first ways, then nodes of these ways. The number of needed requests depends on the relation.
If you press Cancel JOSM will not execute further threads but I see no code which would cancel the two active threads while they are waiting for a response from the OSM server. If the server is really busy your setting in preference socket.timeout.read
decides how long it might take before JOSM finally removes the progress monitor.
The patch implements two changes:
- start the connections with
progressMonitor.createSubTaskMonitor(1, false)
instead of NullProgressMonitor.INSTANCE so that the CANCEL button actually can cancel the connection - also check the canceled status of the progress monitor
- check it in more places to avoid any additional threads once the Cancel button was pressed.
I am not sure how to test/simulate the actual situation that the server is too busy, so I can only hope this will improve things.
Disadvantage: The progress bar shows a flickering "Contacting server ..." string most of the time and no progress, so that's not the final solution.
by , 4 years ago
Attachment: | 20416.2.patch added |
---|
like before, but without the change reg NullProgressMonitor.INSTANCE
comment:10 by , 4 years ago
I blame my internet connections and the provider and not the OSM-Server for the underlying problem. One problem is the creating of connections which is very slow and gets stuck. Once the individual download thread is started, there is usually no problem until the next request, which explains why I have problems with actions downloading in multiple threads. It is often faster to cancel and restart/reload.
comment:11 by , 4 years ago
If the connect fails you get a "connect timed out" message. I just tried it with a hard coeded 10 ms connect timeout. So, the connection is probably established but the result takes too long (JOSM reads the socket waiting for the data and gets a read timeout). At least that's my understanding of the code so far.
by , 4 years ago
Attachment: | 20416.3.patch added |
---|
follow-up: 16 comment:13 by , 4 years ago
Cc: | added |
---|---|
Owner: | changed from | to
Status: | assigned → new |
Hmm, this is beyond my capabilities. Is there a way to simulate a server that doesn't respond within fractions of a second so that I can actually find out if the cancel works?
comment:14 by , 4 years ago
I see that it works well when I chose to download the content of all my changesets and press cancel fast enough:
activeConnection.disconnect()
is called
But this doesn't imvolve MultiFetchServerObjectReader
, and in the latter I never see that activeConnection.disconnect()
is called. The field activeConnection is always null when method cancel() is called by progressMonitor.
comment:15 by , 4 years ago
Yes, the problem is not the initial connection but if the download has started but hangs after downloading some objects. I have noticed this problem with several actions like "update data/selection/modified", "download parent objects", "download (incomplete) members" and "download objects of a changeset". I think all these actions use MultiFetchServerObjectReader
.
comment:16 by , 4 years ago
Replying to GerdP:
Hmm, this is beyond my capabilities. Is there a way to simulate a server that doesn't respond within fractions of a second so that I can actually find out if the cancel works?
I can do setup a redirect via my webserver which has a bandwidth limit (did this for another project recently). Please give me an example URL you'd call so I can test it.
comment:17 by , 4 years ago
I'll work again on this tomorrow morning. I think any relation with more than 200 members should work, 500 would be better so that we really create multiple download threads.
comment:19 by , 4 years ago
Try https://www.dstoecker.eu/api
as osm-server.url
. This is limited to 5KB/s (thus taking 26s for your example).
comment:20 by , 4 years ago
OK, works for me. Let's see if I can find out why the cancel doesn't work as expected..
comment:21 by , 4 years ago
Hmm, I just tried with the --debug option and I see
2021-03-22 22:04:23.857 SCHWERWIEGEND: java.util.concurrent.ExecutionException: org.openstreetmap.josm.io.OsmTransferException: org.openstreetmap.josm.io.IllegalDataException: Lesevorgang wurde abgebrochen (in Zeile 1.957, Spalte 133). 65.651 Bytes wurden gelesen. Ursache: org.openstreetmap.josm.io.OsmTransferException: org.openstreetmap.josm.io.IllegalDataException: Lesevorgang wurde abgebrochen (in Zeile 1.957, Spalte 133). 65.651 Bytes wurden gelesen. Ursache: org.openstreetmap.josm.io.IllegalDataException: Lesevorgang wurde abgebrochen (in Zeile 1.957, Spalte 133). 65.651 Bytes wurden gelesen. Ursache: org.openstreetmap.josm.io.OsmReader$OsmParsingCanceledException: Lesevorgang wurde abgebrochen (in Zeile 1.957, Spalte 133). 65.651 Bytes wurden gelesen java.util.concurrent.ExecutionException: org.openstreetmap.josm.io.OsmTransferException: org.openstreetmap.josm.io.IllegalDataException: Lesevorgang wurde abgebrochen (in Zeile 1.957, Spalte 133). 65.651 Bytes wurden gelesen at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at org.openstreetmap.josm.io.MultiFetchServerObjectReader.fetchPrimitives(MultiFetchServerObjectReader.java:333) at org.openstreetmap.josm.io.MultiFetchServerObjectReader.parseOsm(MultiFetchServerObjectReader.java:398) at org.openstreetmap.josm.gui.io.AbstractPrimitiveTask.realRun(AbstractPrimitiveTask.java:103) at org.openstreetmap.josm.gui.PleaseWaitRunnable.doRealRun(PleaseWaitRunnable.java:94) at org.openstreetmap.josm.gui.PleaseWaitRunnable.run(PleaseWaitRunnable.java:142) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.openstreetmap.josm.io.OsmTransferException: org.openstreetmap.josm.io.IllegalDataException: Lesevorgang wurde abgebrochen (in Zeile 1.957, Spalte 133). 65.651 Bytes wurden gelesen at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.multiGetIdPackage(MultiFetchServerObjectReader.java:622) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.fetch(MultiFetchServerObjectReader.java:574) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:563) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:535) at java.util.concurrent.FutureTask.run(FutureTask.java:266) ... 5 more Caused by: org.openstreetmap.josm.io.IllegalDataException: Lesevorgang wurde abgebrochen (in Zeile 1.957, Spalte 133). 65.651 Bytes wurden gelesen at org.openstreetmap.josm.io.OsmReader.lambda$doParseDataSet$0(OsmReader.java:493) at org.openstreetmap.josm.io.AbstractReader.doParseDataSet(AbstractReader.java:300) at org.openstreetmap.josm.io.OsmReader.doParseDataSet(OsmReader.java:488) at org.openstreetmap.josm.io.OsmReader.parseDataSet(OsmReader.java:538) at org.openstreetmap.josm.io.OsmReader.parseDataSet(OsmReader.java:521) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.multiGetIdPackage(MultiFetchServerObjectReader.java:620) ... 9 more Caused by: org.openstreetmap.josm.io.OsmReader$OsmParsingCanceledException: Lesevorgang wurde abgebrochen (in Zeile 1.957, Spalte 133). 65.651 Bytes wurden gelesen at org.openstreetmap.josm.io.OsmReader.parseOsm(OsmReader.java:160) at org.openstreetmap.josm.io.OsmReader.parseRoot(OsmReader.java:135) at org.openstreetmap.josm.io.OsmReader.parse(OsmReader.java:121) at org.openstreetmap.josm.io.OsmReader.lambda$doParseDataSet$0(OsmReader.java:491) ... 14 more
on the console and download is stopped on the first Cancel. So, the problem described by skyper must be somewhere else.
Is it possible to configure your server to be slow, so that it takes 10 seconds for each response?
I have no idea why skyper sees this problem often while I don't. Maybe we connect to different servers?
comment:23 by , 4 years ago
Probably it makes a difference in which part of the whole process you cancel the connection. With the rate limit I can only slow down the delivery, but establishing connection will still be fast...
Maybe something like this helps?
http://info.iet.unipi.it/~luigi/dummynet/
comment:24 by , 4 years ago
I think I'm making progress reg. the reacion on the Cancel button :)
So far I've not tried dummynet, but it may be another step later.
I still have to solve the problem that the displayed texts in the ProgressMonitor are rather useless. The slow server helps with that. I've never noticed that the texts are not very useful in this situation...
comment:26 by , 4 years ago
Replying to GerdP:
@Dirk: Please change the limit back to 5Kb/s
I made you https://www.dstoecker.eu/api5
for 5Kb/s :-) So you can have both.
by , 4 years ago
Attachment: | 20416.4.patch added |
---|
comment:27 by , 4 years ago
20416.patch implements multiple changes:
- Cancel button works (by executing exec.shutDownNow()
- Better i18n Strings for progress monitor
- progress monitor shows more details reg. connection
- new preference
download.multi-fetch.hide-monitor-details
to disable these details
follow-up: 29 comment:28 by , 4 years ago
It's quite difficult to decide in what situation the progress bar should be updated. There are two threads which download data and one thread that merges the downloaded data packages. Finally, the data has to be rendered.
Sometimes the merging takes quite long, sometimes also the rendering. sp. when the data layer already contains a huge amount of nodes. I've not yet understood all details here.
comment:29 by , 4 years ago
Replying to GerdP:
It's quite difficult to decide in what situation the progress bar should be updated. There are two threads which download data and one thread that merges the downloaded data packages. Finally, the data has to be rendered.
Sometimes the merging takes quite long, sometimes also the rendering. sp. when the data layer already contains a huge amount of nodes. I've not yet understood all details here.
Also keep in mind that there are programs out there where updating the progress bar itself takes most of the time :-)
comment:30 by , 4 years ago
OK, seems I was trapped again by SwingUtilities.invokeLater()
. When I debug the code step by step the status monitor is updated, but not under normal conditions.
Seems I have to find a way to run the download threads in EDT?
comment:32 by , 4 years ago
@skyper: Please try if this helped and maybe reopen. The other problems regarding progress monitor are less important and - for me - more difficult to understand.
comment:33 by , 4 years ago
Thanks, something is better now, much less problems. Have to check the cancel button explicitly and start to increase the times to wait for response.
follow-up: 35 comment:34 by , 4 years ago
Hmm, my change only affects the reaction on cancel button. If you see better performance something else changed.
comment:35 by , 4 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Indeed, either the load of the server was low or my connection better or both. Last night, it was back, again, downloading parents of a few nodes. There were two landuse areas involved leading to download some hundreds of nodes. "Cancel" seems to work a bit better but if the download hangs with message "Fetching 510/862 nodes" or similar "Cancel" does still not work and the download hangs until it times out.
Well, not fixed, yet, sorry.
Wonder if I can find out to which real server I am connected. I could try to work with a VPN on top and test different end point in different countries. This might even help with my underlying routing/connection problems.
Relative:URL: ^/trunk Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b Last:Changed Date: 2021-03-25 22:58:47 +0100 (Thu, 25 Mar 2021) Revision:17667 Build-Date:2021-03-26 02:30:58 URL:https://josm.openstreetmap.de/svn/trunk
comment:36 by , 4 years ago
The full message when cancel is not working is: Fetching a package of nodes …
follow-up: 44 comment:37 by , 4 years ago
When you cancel do you see a traceback on the console? If yes, do you see after pressing cancel or after the timeout?
comment:38 by , 4 years ago
Reg. your network problems: Did you try the basics like a new cable or a different plug?
comment:39 by , 4 years ago
As usual I had the problem the last hours but now I do not get to the state that it hangs fetching nodes
. Will try the next days.
Reg network: I am pretty sure it is the provider and the only hardware involved, on my side, are my wifi devices. All use the same kernel modules so I might check one of a different manufacturer . Or is it my OS?
comment:41 by , 4 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Please open a new ticket if needed.
comment:42 by , 4 years ago
This was never fixed nor did anything change. e.g. this does not deserve a milestone.
Well, the description still works but in #20686 you'll find a slightly different one including the console log Gerd was asking for.
comment:43 by , 4 years ago
Milestone: | 21.03 → 21.04 |
---|---|
Resolution: | fixed |
Status: | closed → reopened |
comment:44 by , 4 years ago
Replying to GerdP:
When you cancel do you see a traceback on the console? If yes, do you see after pressing cancel or after the timeout?
Yes, I see a traceback but only after the timeout. Cancel was clicked after the first line (from #20686):
2021-03-29 13:02:09.503 INFO: GET https://api.openstreetmap.org/api/0.6/nodes?nodes=293713793,3258008625,1040112638,3258008627,3258008626,3258008628,667451840,7609344900,268613130,667451841,7609344901,667451842,268613128,1040112628,667451843,667451844,7609344896,667451845,667451846,7609344898,7609344899,667451865,1040112616,1040112615,8043649387,8043649389,8043649388,3402034395,275961452,8043649391,8043649390,7254799946,7254799947,1040112607,7254799948,1040112601,7607018304,7607018305,7607018306,1040112596,7607018307,7607018308,7254799960,1040112588,7254799961,1040112589,358003566,7254799958,1496702729,7254799959,1496702728,7607018280,7607018281,7607018282,7607018283,7607018284,1040112570,7607018285,7607018286,7607018287,7607018272,7607018273,7607018274,1040112564,7607018275,3258008700,1040112560,7607018278,7607018279,7607018296,7607018297,7607018298,7607018299,667451804,7607018300,7607018301,7607018302,7607018303,1040112553,1040112550,7607018289,7607018290,7607018291,7607018293,7607018294,7607018295,1040112542,7607018249,1040112543,7607018250,3258008659,7607018251,3258008658,7607018252,3258008661,369774701,7607018255,667451810,3258008667,667451811,667451812,667451813,3258008670,1040112526,3258008641,7607018264,7607018265,3258008640,7607018266,3258008643,667451835,7607018267,369774713,3258008642,667451836,7607018268,3258008645,7607018269,3258008644,268613038,268613039,268613037,268613042,7156436799,268613043,7156436798,3700865316,7156436797,7156436796,268613046,3700865314,7156436795,3700865315,268613047,7156436794,3700865312,3808831152,268613044,7156436793,3700865313,268613045,7156436792,268613050,7156436791,7156436790,268613049,7156436788,7156436787,7156436808,7156436805,7156436804,7156436803,7156436801,7156436800,502102077,2126543632,5841992165,502102079,4420969045,667451922,667451923,3810928324,3810928322,3809216233,3809216234,2172241041,3810928335,2172241045,3810928338,3810928337 -> HTTP/1.1 200 (124 ms) 2021-03-29 13:02:39.459 INFO: GET https://api.openstreetmap.org/api/0.6/nodes?nodes=458898522,3097563297,458898523,2752684817,458898521,458898526,458898524,458898525,1040112374,458898518,458898519,483285976,483285973,5836741828,5836741829,1248488776,5836741830,5836741831,5836741824,5836741825,5836741826,5836741827,5836741832,5836741833,648954241,2752684837,458898530,458898531,458898528,458898529,458898535,458898532,416874393,416874395,416874396,293615300,1617790762,416874390,416874391,416874376,5836741814,5836741820,5836741821,5836741822,5836741823,5836741817,5836741818,5836741819,7607018270,3258008647,667451839,7607018271,1040112521,7607018256,3258008649,3258008648,3258008651,7607018258,3258008650,7607018259,667451828,7607018260,3258008652,7607018261,7607018262,3258008654,7607018263,7607018216,1450185200,7607018217,7607018218,2752684944,7607018219,7607018220,7607018221,2752684951,7607018222,2752684948,7607018223,7607018208,7607018211,2752684702,7607018213,7607018214,7607018215,1259859333,1040112492,275650297,7607018224,275650295,7607018225,7607018226,7607018227,1040112482,5148456002,7607018228,5148456003,7607018229,5148456000,7607018230,5148456001,7607018231,1248488906,7607018185,2752684976,7607018186,7607018187,7607018188,3814368510,7607018189,3258008727,7607018190,2752684980,7607018191,1040112471,1040112464,2752684988,1040112462,7607018200,7607018201,7607018202,7607018203,7607018204,7607018205,7607018206,7607018207,7607018192,7607018193,7607018194,280246031,7607018195,7607018196,7607018197,7607018198,1040112449,7607018199,2271436963,6985459614,2271436961,1040112445,292099756,2752684756,1040112439,1040112437,3257927163,2752684738,648954238,648954239,470727386,648954235,1040112425,2752684746,1040112423,1040112420,1332644274,3805619465,365490710,2752684786,2752684784,1567071116,7609344892,7609344893,618824467,7609344894,7609344895,2271436951,7609344891,2752684778,2271436959,2271436956 -> !!! (30.1 s) 2021-03-29 13:02:39.459 WARNING: java.net.SocketTimeoutException: Read timed out java.net.SocketTimeoutException: Read timed out at java.base/java.net.SocketInputStream.socketRead0(Native Method) at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140) at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:476) at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:470) at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160) at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:110) at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1408) at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1314) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:411) at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:168) at org.openstreetmap.josm.tools.Http1Client.performConnection(Http1Client.java:78) at org.openstreetmap.josm.tools.HttpClient.connect(HttpClient.java:148) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:195) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:138) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:122) at org.openstreetmap.josm.io.OsmServerReader.getInputStream(OsmServerReader.java:86) at org.openstreetmap.josm.io.OsmServerReader.getInputStream(OsmServerReader.java:69) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.multiGetIdPackage(MultiFetchServerObjectReader.java:624) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.fetch(MultiFetchServerObjectReader.java:582) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:571) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:543) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) 2021-03-29 13:02:39.460 SEVERE: java.net.SocketTimeoutException: Read timed out java.net.SocketTimeoutException: Read timed out at java.base/java.net.SocketInputStream.socketRead0(Native Method) at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140) at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:476) at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:470) at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160) at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:110) at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1408) at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1314) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:411) at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:168) at org.openstreetmap.josm.tools.Http1Client.performConnection(Http1Client.java:78) at org.openstreetmap.josm.tools.HttpClient.connect(HttpClient.java:148) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:195) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:138) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:122) at org.openstreetmap.josm.io.OsmServerReader.getInputStream(OsmServerReader.java:86) at org.openstreetmap.josm.io.OsmServerReader.getInputStream(OsmServerReader.java:69) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.multiGetIdPackage(MultiFetchServerObjectReader.java:624) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.fetch(MultiFetchServerObjectReader.java:582) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:571) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:543) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) 2021-03-29 13:02:39.460 SEVERE: java.util.concurrent.ExecutionException: org.openstreetmap.josm.io.OsmTransferException: Could not connect to the OSM server. Please check your internet connection.. Cause: org.openstreetmap.josm.io.OsmTransferException: Could not connect to the OSM server. Please check your internet connection.. Cause: java.net.SocketTimeoutException: Read timed out java.util.concurrent.ExecutionException: org.openstreetmap.josm.io.OsmTransferException: Could not connect to the OSM server. Please check your internet connection. at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) at org.openstreetmap.josm.io.MultiFetchServerObjectReader.fetchPrimitives(MultiFetchServerObjectReader.java:335) at org.openstreetmap.josm.io.MultiFetchServerObjectReader.parseOsm(MultiFetchServerObjectReader.java:404) at org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask.realRun(DownloadRelationMemberTask.java:137) at org.openstreetmap.josm.gui.PleaseWaitRunnable.doRealRun(PleaseWaitRunnable.java:94) at org.openstreetmap.josm.gui.PleaseWaitRunnable.run(PleaseWaitRunnable.java:142) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: org.openstreetmap.josm.io.OsmTransferException: Could not connect to the OSM server. Please check your internet connection. at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:200) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:138) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:122) at org.openstreetmap.josm.io.OsmServerReader.getInputStream(OsmServerReader.java:86) at org.openstreetmap.josm.io.OsmServerReader.getInputStream(OsmServerReader.java:69) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.multiGetIdPackage(MultiFetchServerObjectReader.java:624) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.fetch(MultiFetchServerObjectReader.java:582) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:571) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:543) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ... 5 more Caused by: java.net.SocketTimeoutException: Read timed out at java.base/java.net.SocketInputStream.socketRead0(Native Method) at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140) at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:476) at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:470) at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160) at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:110) at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1408) at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1314) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:411) at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:168) at org.openstreetmap.josm.tools.Http1Client.performConnection(Http1Client.java:78) at org.openstreetmap.josm.tools.HttpClient.connect(HttpClient.java:148) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:195) ... 14 more 2021-03-29 13:02:39.461 WARNING: Ignoring exception because task was canceled. Exception: org.openstreetmap.josm.io.OsmTransferException: Could not connect to the OSM server. Please check your internet connection. 2021-03-29 13:02:39.572 INFO: GET https://api.openstreetmap.org/api/0.6/nodes?nodes=1723772602,747095425,293714057,1545032990,293714058,1082952064,5366871791,747095442,747095453,293034321,1251640253,3814296435,493598016,1458052803,1723772821,275003464,571476796,293034328,1723772557,293034307,1251640238,4075018966,493598046,1424268753,4075018965,4075018964,293034304,293034319,1750991206,747095485,2126780414,293034316,1081059668,7580994273,293034314,293034312,877435917,293034293,747095493,293034290,2039976146,7156130510,293034302,2039976158,1082952134,293034300,747095500,5820027818,493597989,293034297,493597988,2039976152,293034276,293034272,1458052786,293034285,747095516,1458052790,293034281,293034280,1723772895,1776624007,1723772893,2271473415,293034259,293034257,293034256,2271473417,1458052739,2271473416,293034268,747095542,493597977,1081059610,293034255,293034254,293714170,293034251,293034250,293034249,266520220,530273819,530273818,530273817,3241240993,3241240995,3241240994,3241240996,285981086,285981085,1776623999,2845483322,285981098,285981097,285981103,285981101,285981100,493753798,285981091,285981089,285981088,2845483318,285981095,1723772434,285981094,285981092,285981115,7156073017,285981114,285981113,285981112,285981119,285981118,285981117,285981116,285981107,285981106,285981104,285981111,285981110,285981109,285981108,7156073032,285981130,285981129,285981128,285981135,285981134,1081059497,285981132,285981123,285981122,285981121,285981120,285981126,285981125,285981124,5310362708,285981147,7156073049,285981146,7156073050,7156073051,285981144,7156073052,285981150,5310362705,285981149,7156073041,285981138,4142382653,285981137,285981143,7156073045,285981141,285981140,5836739335,4142382596,5836739340,5836739341,5836739342,285981153,285981152,5836739343,5836739337,5836739338,5836739339,5836739344,5836739345,5836739346 -> !!! (30.1 s) 2021-03-29 13:02:39.573 WARNING: java.net.SocketTimeoutException: Read timed out java.net.SocketTimeoutException: Read timed out at java.base/java.net.SocketInputStream.socketRead0(Native Method) at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140) at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:476) at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:470) at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160) at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:110) at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1408) at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1314) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:411) at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:168) at org.openstreetmap.josm.tools.Http1Client.performConnection(Http1Client.java:78) at org.openstreetmap.josm.tools.HttpClient.connect(HttpClient.java:148) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:195) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:138) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:122) at org.openstreetmap.josm.io.OsmServerReader.getInputStream(OsmServerReader.java:86) at org.openstreetmap.josm.io.OsmServerReader.getInputStream(OsmServerReader.java:69) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.multiGetIdPackage(MultiFetchServerObjectReader.java:624) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.fetch(MultiFetchServerObjectReader.java:582) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:571) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:543) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) 2021-03-29 13:02:39.573 WARNING: Already here java.net.SocketTimeoutException: Read timed out 2021-03-29 13:02:39.573 SEVERE: java.net.SocketTimeoutException: Read timed out java.net.SocketTimeoutException: Read timed out at java.base/java.net.SocketInputStream.socketRead0(Native Method) at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140) at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:476) at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:470) at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160) at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:110) at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1408) at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1314) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:411) at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:168) at org.openstreetmap.josm.tools.Http1Client.performConnection(Http1Client.java:78) at org.openstreetmap.josm.tools.HttpClient.connect(HttpClient.java:148) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:195) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:138) at org.openstreetmap.josm.io.OsmServerReader.getInputStreamRaw(OsmServerReader.java:122) at org.openstreetmap.josm.io.OsmServerReader.getInputStream(OsmServerReader.java:86) at org.openstreetmap.josm.io.OsmServerReader.getInputStream(OsmServerReader.java:69) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.multiGetIdPackage(MultiFetchServerObjectReader.java:624) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.fetch(MultiFetchServerObjectReader.java:582) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:571) at org.openstreetmap.josm.io.MultiFetchServerObjectReader$Fetcher.call(MultiFetchServerObjectReader.java:543) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) 2021-03-29 13:02:39.724 INFO: GET https://api.openstreetmap.org/api/0.6/map?bbox=8.2395364,47.6672467,8.2399293,47.6674386 -> HTTP/1.1 200 (205 ms)
follow-up: 46 comment:45 by , 4 years ago
I have no idea how to change the code so that the cancel button is able to cancel the two download threads in this situation. My understanding is that the progress bar is running in an EDT thread and that this thread is only executed when no other thread is running. If both download threads are waiting for a server response the EDT thread is probably just sleeping and thus not processing any user action.
Does that make any sense? Would it help to lower the priority of the download threads?
Should we even try to fix this when the problem is obviously in skypers part of the network?
skyper wrote that the Cancel button works immedieately in those actions which don't use MultiFetchServerObjectReader
. I don't understand why.
comment:46 by , 4 years ago
Replying to GerdP:
Should we even try to fix this when the problem is obviously in skypers part of the network?
Please, do not spend too much time on this issue if you do not have ideas and as long as there are not some more people complaining. I get used to work around it.
I am not sure if it is on my network part, a problem on the server side or a problem within JOSM. E.g. does JOSM handle a change of routing while downloading, properly? Sorry, I am no network expert either. I can offer to have wireshark logging the connections and test different settings with some advise.
skyper wrote that the Cancel button works immedieately in those actions which don't use
MultiFetchServerObjectReader
. I don't understand why.
As far as I understand this is always only one thread and maybe I was wrong but I have not noticed any problem once the connection is established and data is downloaded. Is it possible to use only one thread in MultiFetchServerObjectReader
, optionally?
follow-up: 49 comment:47 by , 4 years ago
Is it possible to use only one thread in MultiFetchServerObjectReader, optionally?
Yes, but this is still another thread. Anyhow, might be worse to try it: Set preference osm.download.threads
to 1.
comment:48 by , 4 years ago
Milestone: | 21.04 → 21.05 |
---|---|
Status: | reopened → new |
comment:49 by , 4 years ago
Replying to GerdP:
Is it possible to use only one thread in MultiFetchServerObjectReader, optionally?
Yes, but this is still another thread. Anyhow, might be worse to try it: Set preference
osm.download.threads
to 1.
Does not help. I also tried to use overpass for object downloads but that is slow and I get timeouts and quota restrictions, too. The later is cause by too many downloads within a short time period.
comment:50 by , 3 years ago
Milestone: | 21.05 |
---|
Yes, downloading a relation with all members is typically much faster (a single api call), but you wanted it to download the members that are visibile in the editor (#20091) unless I got you wrong?