Hi Alain,
Here you’ll find the Orthanc logs that I collected during the repro script run on my local setup (Orthanc container running locally): https://drive.google.com/file/d/1tg3uiK5j_hRsy-A6V4jOwSW7h18CHiKk/view?usp=sharing
Here is a summary of the files that were created:
$ ./running_times.sh /tmp/concurrent-downloads
size in bytes: 1093405141, (1.1G), file was being written for: 1038 seconds (17:18) - study_10_25-07-23_14:35:38.993296773.zip
size in bytes: 1094412608, (1.1G), file was being written for: 1044 seconds (17:24) - study_11_25-07-23_14:36:08.997106750.zip
size in bytes: 1092160030, (1.1G), file was being written for: 1036 seconds (17:16) - study_12_25-07-23_14:36:39.000209393.zip
size in bytes: 1091537356, (1.1G), file was being written for: 1037 seconds (17:17) - study_1_25-07-23_14:31:08.961253327.zip
size in bytes: 1097917063, (1.1G), file was being written for: 1046 seconds (17:26) - study_13_25-07-23_14:37:09.003567684.zip
size in bytes: 1093279158, (1.1G), file was being written for: 1036 seconds (17:16) - study_14_25-07-23_14:37:39.006962217.zip
size in bytes: 1093838718, (1.1G), file was being written for: 1042 seconds (17:22) - study_15_25-07-23_14:38:09.009955836.zip
size in bytes: 1098978544, (1.1G), file was being written for: 1041 seconds (17:21) - study_16_25-07-23_14:38:39.015802718.zip
size in bytes: 1092901286, (1.1G), file was being written for: 1036 seconds (17:16) - study_17_25-07-23_14:39:09.019250824.zip
size in bytes: 1094845950, (1.1G), file was being written for: 1043 seconds (17:23) - study_18_25-07-23_14:39:39.026802115.zip
size in bytes: 1094799001, (1.1G), file was being written for: 1043 seconds (17:23) - study_19_25-07-23_14:40:09.030966729.zip
size in bytes: 1095659312, (1.1G), file was being written for: 1039 seconds (17:19) - study_20_25-07-23_14:40:39.034570917.zip
size in bytes: 1093836630, (1.1G), file was being written for: 1042 seconds (17:22) - study_21_25-07-23_14:41:09.038973925.zip
size in bytes: 1095870566, (1.1G), file was being written for: 1039 seconds (17:19) - study_22_25-07-23_14:41:39.043010187.zip
size in bytes: 1095193249, (1.1G), file was being written for: 1044 seconds (17:24) - study_2_25-07-23_14:31:38.965620272.zip
size in bytes: 1095035944, (1.1G), file was being written for: 1037 seconds (17:17) - study_23_25-07-23_14:42:09.046451276.zip
size in bytes: 1092206039, (1.1G), file was being written for: 1036 seconds (17:16) - study_24_25-07-23_14:42:39.050256772.zip
size in bytes: 1093979054, (1.1G), file was being written for: 1037 seconds (17:17) - study_3_25-07-23_14:32:08.969292706.zip
size in bytes: 1094919529, (1.1G), file was being written for: 1044 seconds (17:24) - study_4_25-07-23_14:32:38.972770122.zip
size in bytes: 1093837726, (1.1G), file was being written for: 1043 seconds (17:23) - study_5_25-07-23_14:33:08.976208636.zip
size in bytes: 1094844172, (1.1G), file was being written for: 1044 seconds (17:24) - study_6_25-07-23_14:33:38.979376639.zip
size in bytes: 1093860936, (1.1G), file was being written for: 1043 seconds (17:23) - study_7_25-07-23_14:34:08.983590228.zip
size in bytes: 1099997464, (1.1G), file was being written for: 1043 seconds (17:23) - study_8_25-07-23_14:34:38.986827126.zip
size in bytes: 1093847190, (1.1G), file was being written for: 1043 seconds (17:23) - study_9_25-07-23_14:35:08.990143604.zip
None of them are the same size, but very similar - 1.1Gb instead of the full 1.3Gb of this test study, so none of these was downloaded correctly.
However, the total time that each file was being written for are strikingly similar: many of them exactly 1043 seconds, the others are all very similar. These times are just the difference of the file creation time and the “last updated” time so they include system time. If we exclude the context switches and whatnot, the user time might be around 1000 or 1024 or even 900 (15*60) which sounds like some hidden default timeout when Orthanc (a library used by Orthanc) might decide to close the streaming of data.
It could be that the client (curl in this case) is responsible but they say here that --max-time has no default so it should wait indefinitely after the connection was built.
Thanks a lot for looking into it!
András