Dahlgren / arma-server-web-admin

Web based server manager for Arma
MIT License
124 stars 47 forks source link

Download more than one mod at once #177

Open CCVia opened 3 years ago

CCVia commented 3 years ago

Hello!

I've moved to the mods-status branch and I'm downloading all the mods through Steam Workshop. The smaller ones are downloading without any problem, but if I start searching and installing all the mods I need at once, some of them are never making it to the server. The download apparently starts but it never finishes and they never make it to the mod list (simply disappear).

This is the output I get when I try to download two mods at once. Note the port error:

Steam Console Client (c) Valve Corporation
-- type 'quit' to exit --
Loading Steam API...OK.
"@NoPromptForPassword" = "1"

stdout: "@ShutdownOnFailedCommand" = "1"
Logging in user 'via_arma' to Steam Public ...

stdout: Logged in OK
Waiting for user info...
stdout: OK
Downloading item 520618345 ...
Success. Downloaded item 520618345 to "/home/arma3/steam-folder/steamapps/workshop/content/107410/520618345" (2769488788 bytes)
child process exited with code 0
POST /api/mods/refresh 204 1.875 ms - -
POST /api/mods/search 200 714.821 ms - 53158
POST /api/mods/ 204 0.836 ms - -
stdout: Redirecting stderr to '/home/arma3/Steam/logs/stderr.txt'
[  0%] Checking for available updates...
[----] Verifying installation...
Steam Console Client (c) Valve Corporation
-- type 'quit' to exit --
Loading Steam API...OK.
"@NoPromptForPassword" = "1"
"@ShutdownOnFailedCommand" = "1"

stdout: Logging in user 'via_arma' to Steam Public ...

stdout: Logged in OK
Waiting for user info...
stdout: OK
Downloading item 497660133 ...
POST /api/mods/ 204 0.985 ms - -
stdout: Redirecting stderr to '/home/arma3/Steam/logs/stderr.txt'
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[  0%] Checking for available updates...
[----] Verifying installation...
Steam Console Client (c) Valve Corporation
-- type 'quit' to exit --
Loading Steam API...CreateBoundSocket: ::bind couldn't find an open port between 27060 and 27060
OK.
"@NoPromptForPassword" = "1"

stdout: "@ShutdownOnFailedCommand" = "1"

stdout: Logging in user 'via_arma' to Steam Public ...

stdout: Logged in OK
Waiting for user info...
stdout: src/common/completionportmanager_posix.cpp (358) : Assertion Failed: Async I/O on closed handle 34
ERROR! Timeout downloading item 497660133
stderr: /home/arma3/.config/steamcmd/steamcmd.sh: line 38: 16826 Aborted                 $DEBUGGER "$STEAMEXE" "$@"

child process exited with code 134
stdout: OK
Downloading item 541888371 ...ERROR! Timeout downloading item 541888371
stderr: /home/arma3/.config/steamcmd/steamcmd.sh: line 38: 16856 Aborted                 $DEBUGGER "$STEAMEXE" "$@"

child process exited with code 134

Is it possible every time I click the download button I'm starting a new steamcmd instance using the same port?

Any help would be highly appreciated. Thanks!!

CCVia commented 3 years ago

More info on this:

I've found online there is a known bug with steamcmd causing errors with larger than 1Gb downloads (connection timeout). I might be experiencing two different problems; one with the port and another with this bug.

Dahlgren commented 3 years ago

If I remember correctly this is a limitation with SteamCMD and it's metadata files. I've intended do add a blocker to ensure only one download occurs at the same time but never got around to it.

SteamCMD has an hardcoded timeout and the download will stop once the timeout is reach. Downloading the same mod again will resume the download.

CCVia commented 3 years ago

Damn it, that timeout is a complete nonsense. Looking for a fix I've found a lot of people pissed off for this. Thank you for clarifying it!

I've downloaded everything and I guess now it will become easier because I won't need to download as many mods. I bet it is not a priority but maybe establishing some sort of a queue would be useful.

Thanks a lot for your help!!