A NeosModLoader mod for Neos VR that fixes the "stuck sync" issue and is provided as a solution for #3915 on NeosPublic. Additionally, this mod contains an automatic retry sync feature that will retry a failed sync based on the specific failure state.
nml_mods
folder. This folder should be located in the same folder as Neos. For a default installation, the typical location is C:\Program Files (x86)\Steam\steamapps\common\NeosVR\nml_mods
. You can create it if it's missing, or if you launch the game once with NeosModLoader installed it will create the folder for you.Config Option | Default | Description |
---|---|---|
enabled |
true |
Enables the mod. |
retryCount |
3 |
The number of times to retry failed sync actions. |
retryDelay |
TimeSpan.Zero |
The delay between attempts to retry failed sync actions. |
enableInProgressLogging |
false |
Allow the sync task to periodically log its progress. Stage updates are unaffected. |
If you are a Mod developer and would like for your mod to to listen to sync task events, then your mod can subscribe to the following events:
Event Name | Description |
---|---|
UploadTaskStart |
When the sync queue receives a new sync task to sync. |
UploadTaskProgress |
When a sync task makes progress. |
UploadTaskSuccess |
When a sync task is successful. |
UploadTaskFailure |
when a sync task failed. |
All event handlers are located in the RecordUploadTaskBasePatch
class as static event handlers.
Although the NeosVR wiki makes it sound like a "stuck sync" is a normal thing in Neos, this is not the case. The unfortunate truth behind the "Stuck Sync" issue is due to a bug in the sync loop where unhandled exceptions (aka errors) are not being handled within the sync loop, causing the loop to stop. The most common exception thrown is one where the upload task is being marked as complete twice when a sync failure occurs due to the Neos Cloud returning an HTTP error code. Because tasks cannot be marked complete more than once, an exception is thrown within the loop that causes the loop to stop.
Syncing errors should occur normally, but they should not be halting other sync tasks. If this bug was addressed, then the follow status would be shown: