- The updater (seemingly) randomly picks a file server for a specific update file, and does not have any type of failover or redundancy in place for the end user (crucial: "end user", not updater.factorio.com).
- When the updater fails, it does not check for already downloaded updater files before initiating an update again.
- Factorio either doesn't do a hash check on the downloaded files, or if it does, it isn't applied in case #2 before initiating an update.
With regard to #1:
There are multiple update servers, but they're not redundant for the end user. They're selected based on whether updater.factorio.com says they're functional (I'm assuming that it actually checks), not whether the client says they're functional. This isn't necessarily a problem, as long as the updater automatically tries another server rather than giving up entirely.
With regard to #2:
When an update is initiated again, due to a connectivity outage, power outage, server outage, solar flare, or angry girlfriend, there may already be a bunch of successfully retrieved update files which took a long time to download. These exist, yet the updater deletes the temp folder entirely, creates a new temp folder, and starts over.
With regard to #3:
If there are hash checks in place before the updater initiates, to prevent breaking someone's game due to some unforeseen data delivery or read/write corruption, these can and should be applied to case #2 to check that the files completed downloading before an update is resumed.
This happened to me, only once, when I updated from 0.15.37 to 0.16.6. It took a VERY long time to download and I had to start over one time near the end, which was awful. It never again happened before or after that, until I decided to poke around with it today and realized how big of a mess it can be if there ever happens to be a problem not within the very narrow scope of updater.factorio.com's control.
Here's one example which shows it progressing, failing, and starting over from a clean slate. This can go on and on without success, provided the random server picker at updater.factorio.com doesn't provide a coincidentally-beneficial file server download queue:
Code: Select all
0.001 2018-03-06 17:28:37; Factorio 0.16.23 (build 35495, win64, alpha)
0.001 Operating system: Windows 10 (version 1709)
0.001 Program arguments: "C:\Factorio_x64_0.16.23\Factorio_0.16.23\bin\x64\factorio.exe"
0.001 Read data path: C:/Factorio_x64_0.16.23/Factorio_0.16.23/data
0.001 Write data path: C:/Factorio_x64_0.16.23/Factorio_0.16.23 [156955/228384MB]
0.002 Binaries path: C:/Factorio_x64_0.16.23/Factorio_0.16.23/bin
0.009 System info: [CPU: Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz, 4 cores, RAM: 3035/8191 MB, page: 4146/9599 MB, virtual: 148/134217727 MB, extended virtual: 0 MB]
0.010 Display options: [FullScreen: 0] [VSync: 0] [UIScale: system (100.0%)] [MultiSampling: OFF] [Screen: 255] [Lang: en]
0.011 Available display adapters: 2
0.011 [0]: \\.\DISPLAY1 - AMD Radeon HD 5800 Series {0x8080005, [0,0], 1920x1200, 32bit, 60Hz}
0.011 [1]: \\.\DISPLAY2 - AMD Radeon HD 5800 Series {0x80001, [-1280,169], 1280x1024, 32bit, 60Hz}
0.011 Create display on adapter 0. Size 1280x720 at position [310, 222].
0.084 Initialised Direct3D:[0] AMD Radeon HD 5800 Series; driver: aticfx64.dll 8.17.10.1433
0.088 Video memory size (dedicated video/dedicated system/shared system/available): 1010/0/3840/4092 MB
0.128 DSound: Starting _dsound_update thread
0.128 DSound: Enter _dsound_update; tid=10152
0.129 Device reset internal.
0.132 Desktop composition is active.
0.132 Graphics settings preset: medium-with-low-vram
0.132 Graphics options: [Graphics quality: normal] [Video memory usage: medium] [Light scale: 25%] [DXT: false] [Shader: 1]
0.132 [Parallel sprite loading: 1] [Max texture size: 4096/4096] [Bmp cache: 1] [Sprite slicing: 1] [Low quality rotation: 1]
0.204 Loading mod core 0.0.0 (data.lua)
0.225 Loading mod base 0.16.23 (data.lua)
0.400 Loading mod base 0.16.23 (data-updates.lua)
0.465 Checksum for core: 480920415
0.465 Checksum of base: 1027848813
0.606 Loading sounds...
0.742 Info PlayerData.cpp:65: Local player-data.json available, timestamp 1520378710
0.742 Info PlayerData.cpp:72: Cloud player-data.json unavailable
0.860 Loaded shader file C:/Factorio_x64_0.16.23/Factorio_0.16.23/data/core/graphics/shaders/game.cso
0.861 Loaded shader file C:/Factorio_x64_0.16.23/Factorio_0.16.23/data/core/graphics/shaders/zoom-to-world.cso
0.861 Loaded shader file C:/Factorio_x64_0.16.23/Factorio_0.16.23/data/core/graphics/shaders/alpha-mask.cso
0.879 Initial atlas bitmap size is 4096
0.882 Created atlas bitmap 4096x4080 [none]
0.882 Created atlas bitmap 4096x1591 [none]
0.884 Created atlas bitmap 4096x4093 [terrain]
0.885 Created atlas bitmap 680x136 [terrain]
0.885 Created atlas bitmap 4096x1712 [shadow]
0.885 Created atlas bitmap 4096x1374 [smoke]
0.885 Created atlas bitmap 4096x1868 [no-crop, trilinear-filtering, icon, light]
0.886 Created atlas bitmap 4096x476 [alpha-mask]
25.191 Sprites loaded
25.191 Convert atlas 4096x1868 to: trilinear-filtering
25.233 Convert atlas 4096x476 to: alpha-mask
25.357 Custom inputs active: 0
25.364 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-available-versions?username=Jon8RFC&token=<private>&apiVersion=2
26.033 5 packages available to download (experimental updates enabled).
26.076 Factorio initialised
29.671 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-download-link?username=Jon8RFC&token=<private>&package=core-win64&from=0.16.23&to=0.16.24&isTarget=false&apiVersion=2
30.130 Info Updater.cpp:229: Downloading https://us2.factorio.com/updates/core-win64-0.16.23-0.16.24-update.zip?key=r7A1NkMffQisjr0_NPEcGA&expires=1520378977 to C:\Factorio_x64_0.16.23\Factorio_0.16.23\temp\core-win64-0.16.23-0.16.24-update.zip
34.460 Info Updater.cpp:240: => 200
35.005 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-download-link?username=Jon8RFC&token=<private>&package=core-win64&from=0.16.24&to=0.16.25&isTarget=false&apiVersion=2
35.286 Info Updater.cpp:229: Downloading https://eu2.factorio.com/updates/core-win64-0.16.24-0.16.25-update.zip?key=G4YXQqiIYL5HmFEuOGkfGA&expires=1520378982 to C:\Factorio_x64_0.16.23\Factorio_0.16.23\temp\core-win64-0.16.24-0.16.25-update.zip
36.501 Download failed (Couldn't connect to server -- Failed to connect to eu2.factorio.com port 443: Connection refused)
41.684 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-available-versions?username=Jon8RFC&token=<private>&apiVersion=2
42.284 5 packages available to download (experimental updates enabled).
43.413 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-download-link?username=Jon8RFC&token=<private>&package=core-win64&from=0.16.23&to=0.16.24&isTarget=false&apiVersion=2
43.863 Info Updater.cpp:229: Downloading https://us1.factorio.com/updates/core-win64-0.16.23-0.16.24-update.zip?key=eFKsOJIcP9lTQ4E0f6EuCA&expires=1520378991 to C:\Factorio_x64_0.16.23\Factorio_0.16.23\temp\core-win64-0.16.23-0.16.24-update.zip
45.971 Info Updater.cpp:240: => 200
46.509 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-download-link?username=Jon8RFC&token=<private>&package=core-win64&from=0.16.24&to=0.16.25&isTarget=false&apiVersion=2
46.819 Info Updater.cpp:229: Downloading https://eu1.factorio.com/updates/core-win64-0.16.24-0.16.25-update.zip?key=uaiKf-eHvxKhCA7Da_cu9g&expires=1520378994 to C:\Factorio_x64_0.16.23\Factorio_0.16.23\temp\core-win64-0.16.24-0.16.25-update.zip
48.578 Info Updater.cpp:240: => 200
48.588 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-download-link?username=Jon8RFC&token=<private>&package=core-win64&from=0.16.25&to=0.16.26&isTarget=false&apiVersion=2
48.853 Info Updater.cpp:229: Downloading https://us1.factorio.com/updates/core-win64-0.16.25-0.16.26-update.zip?key=MTd2-xBgbzRZyO-kxbLcHQ&expires=1520378996 to C:\Factorio_x64_0.16.23\Factorio_0.16.23\temp\core-win64-0.16.25-0.16.26-update.zip
53.559 Info Updater.cpp:240: => 200
53.668 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-download-link?username=Jon8RFC&token=<private>&package=core-win64&from=0.16.26&to=0.16.27&isTarget=false&apiVersion=2
53.939 Info Updater.cpp:229: Downloading https://eu2.factorio.com/updates/core-win64-0.16.26-0.16.27-update.zip?key=sSNr9qZ3PDVs86LNOjGsZA&expires=1520379001 to C:\Factorio_x64_0.16.23\Factorio_0.16.23\temp\core-win64-0.16.26-0.16.27-update.zip
55.133 Download failed (Couldn't connect to server -- Failed to connect to eu2.factorio.com port 443: Connection refused)
60.910 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-available-versions?username=Jon8RFC&token=<private>&apiVersion=2
61.494 5 packages available to download (experimental updates enabled).
62.644 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-download-link?username=Jon8RFC&token=<private>&package=core-win64&from=0.16.23&to=0.16.24&isTarget=false&apiVersion=2
63.243 Info Updater.cpp:229: Downloading https://us2.factorio.com/updates/core-win64-0.16.23-0.16.24-update.zip?key=-p-rjh3BJWD2i-vL8Wv40w&expires=1520379010 to C:\Factorio_x64_0.16.23\Factorio_0.16.23\temp\core-win64-0.16.23-0.16.24-update.zip
73.919 Info Updater.cpp:240: => 200
74.493 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-download-link?username=Jon8RFC&token=<private>&package=core-win64&from=0.16.24&to=0.16.25&isTarget=false&apiVersion=2
74.933 Info Updater.cpp:229: Downloading https://eu1.factorio.com/updates/core-win64-0.16.24-0.16.25-update.zip?key=YOZ8KGqFMK_P_y5M_T19yw&expires=1520379022 to C:\Factorio_x64_0.16.23\Factorio_0.16.23\temp\core-win64-0.16.24-0.16.25-update.zip
76.757 Info Updater.cpp:240: => 200
76.767 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-download-link?username=Jon8RFC&token=<private>&package=core-win64&from=0.16.25&to=0.16.26&isTarget=false&apiVersion=2
77.234 Info Updater.cpp:229: Downloading https://eu1.factorio.com/updates/core-win64-0.16.25-0.16.26-update.zip?key=5CO-MTDqc7d-YLoj8_MW1w&expires=1520379024 to C:\Factorio_x64_0.16.23\Factorio_0.16.23\temp\core-win64-0.16.25-0.16.26-update.zip
81.619 Info Updater.cpp:240: => 200
81.728 Info Updater.cpp:750: Downloading https://updater.factorio.com/get-download-link?username=Jon8RFC&token=<private>&package=core-win64&from=0.16.26&to=0.16.27&isTarget=false&apiVersion=2
82.009 Info Updater.cpp:229: Downloading https://eu3.factorio.com/updates/core-win64-0.16.26-0.16.27-update.zip?key=lNSZN_ZpZJComSUjfSF2Zg&expires=1520379029 to C:\Factorio_x64_0.16.23\Factorio_0.16.23\temp\core-win64-0.16.26-0.16.27-update.zip
83.212 Download failed (Couldn't connect to server -- Failed to connect to eu3.factorio.com port 443: Connection refused)
105.968 DSound: Stopping voice
105.969 DSound: Joining thread
105.972 DSound: Exit _dsound_update; tid=10152
105.972 DSound: Waiting for voice to stop ... signaled
105.973 DSound: Joined thread
105.973 DSound: Destroying thread
105.973 DSound: Thread destroyed
105.973 DSound: Releasing buffer
105.973 DSound: Voice stopped
105.973 DSound: Deallocating voice
105.973 DSound: Deallocated voice
106.021 Goodbye