Description
[REQUIRED] Please fill in the following fields:
- Unity editor version: 2022.3.17f1
- Firebase Unity SDK version: 11.6.0
- Source you installed the SDK: .unitypackage
- Problematic Firebase Component: Storage
- Other Firebase Components in use: Auth, Firestore, Functions
- Additional SDKs you are using: Sentry, Cesium
- Platform you are using the Unity editor on: Windows 10
- Platform you are targeting: Desktop
- Scripting Runtime: Mono
- Pre-built SDK from the website or open-source from this repo: Pre-built SDK
[REQUIRED] Please describe the issue here:
I'm trying to upload a 423 MB video file with PutFileAsync while using a progress handler to show the upload progress.
After exactly 5 minutes the upload always seems to stop: The progress handler continues to be called, but BytesTransferred will keep the value it had at the 5 minute mark (instead of steadily progressing like before).
After exactly 5 more minutes PutFileAsync throws Firebase.Storage.StorageException: The operation retry limit has been exceeded
.
If I try to upload anything else after that exception in the Unity Editor the whole Editor will freeze and has to be closed via Task manager.
If I try to upload anything else after that exception in a build, the app will either directly crash or will throw a System.ApplicationException: ret == ((((DWORD )0x00000000L) ) + 0 ) ---> System.ApplicationException: ret == ((((DWORD )0x00000000L) ) + 0 )
immediately.
This happens in the Unity Editor and in a desktop build on Windows 10 every single time I tested it. I also tested PutBytesAsync in the Unity Editor, and it has the exact same behaviour.
We also tested tested this in a build on another Windows 10 machine, and there too we got Firebase.Storage.StorageException: The operation retry limit has been exceeded
after pretty much exactly 10 minutes (and then the System.ApplicationException if we tried to upload again).
If I set MaxDownloadRetryTime, MaxUploadRetryTime and MaxOperationRetryTime to 1 second, Firebase.Storage.StorageException: The operation retry limit has been exceeded
will be thrown right after BytesTransferred stops increasing, further suggesting that something goes wrong there and that it starts retrying at that point.